728x90
반응형
목차
8.LBaaS(Octavia)설치 -1 - Octavia 서비스 확인
9. LBaaS(Octavia)설치 -2 - 이미지 준비 및 External IP설정
10. LBaaS(Octavia)설치-3- LB생성
8.LBaaS(Octavia)설치
[환경변수 로드 확인]
env | grep ^OS_
[Octavia 서비스 존재 여부]
## 아래 명령어 입력 시 아무값도 출력이 안 된다면, globals.yml에서 enable_octavia:yes로 변경이 필요
openstack service list | grep -i octavia
docker ps --format '{{.Names}}' | grep -i octavia
## 재설정
kolla-ansible -i /etc/kolla/inventory.ini reconfigure --tags octavia
[Octavia 설치 실패 시 아래 설정 진행]
kolla-ansible --help | grep -i octavia
# (venv 활성화 상태에서)
sudo mkdir -p /etc/kolla/config/octavia
sudo chown root:root /etc/kolla/config/octavia
sudo chmod 700 /etc/kolla/config/octavia
kolla-ansible -i /etc/kolla/inventory.ini octavia-certificates
ls -l /etc/kolla/config/octavia/
[Octavia 재실행]
## 글로벌 파일 재확인
grep -n 'enable_octavia' /etc/kolla/globals.yml
kolla-ansible -i /etc/kolla/inventory.ini reconfigure --tags octavia
[컨테이너 확인]
docker ps --format '{{.Names}}' | grep -i octavia
[서비스 등록 확인]
source /etc/kolla/admin-openrc.sh
openstack service list | grep -i octavia
[동작확인]
pip install python-octaviaclient # 없으면 설치
openstack loadbalancer list
9. LBaaS(Octavia)실행
[Amphora 이미지 준비]
Octavia는 로드밸런서를 Amphora(작은 VM)로 만듦. Glance에 Amphora 이미지가 있어야 함.
openstack image list | grep -i amphora
[이미지 다운]
##이미지 받기
cd /root
curl -L -o amphora.qcow2 \
https://tarballs.opendev.org/openstack/octavia/test-images/test-only-amphora-x64-haproxy-centos-9-stream.qcow2
##Glance에 업로드
source /etc/kolla/admin-openrc.sh
openstack image create amphora-x64-haproxy \
--disk-format qcow2 --container-format bare \
--file /root/amphora.qcow2 \
--private --tag amphora \
--property hw_architecture='x86_64' \
--property hw_rng_model=virtio
## 업로드 확인
openstack image list | grep -i amphora
[Amphora Flavor 준비, 대부분 있어서 Skip해도됨]
##Octavia는 LB 생성 시 Amphora라는 작은 VM을 생성.
##이때 사용할 vCPU/RAM/디스크 스펙이 flavor로 지정돼 있어야 함.
##Flavor가 없으면 LB 생성 시 “No valid flavor” 오류 발생.
##Kolla-Ansible이 자동으로 생성해두는 경우도 있지만, 없는 경우 직접 만들어야 함.
openstack flavor list | grep -i amphora ##해당 목록확인
openstack flavor create amphora --vcpus 1 --ram 1024 --disk 3 ## 생성
openstack flavor set amphora --property hw:cpu_policy=shared ##생성
[Octavia 관리 네트워크/보안그룹 확인]
# 관리 네트워크/서브넷 존재 여부
openstack network list | egrep -i 'octavia|lb-mgmt|amphora|mgmt' || true
openstack subnet list | egrep -i 'octavia|lb-mgmt|amphora|mgmt' || true
# 보안그룹(헬스/관리) 존재 여부
openstack security group list | egrep -i 'octavia|health|amphora|lb' || true
[외부 네트워크 확인]
openstack network list --external
openstack subnet list --network <외부망이름>
##내 설정에서는 해당 IP가 매핑이 안 돼 있어 physnet 매핑설정
# neutron-server(ML2) 오버라이드: flat 네트워크 이름 지정
cat >/etc/kolla/config/neutron/ml2_conf.ini <<'EOF'
[ml2_type_flat]
flat_networks = physnet1
EOF
# OVS 에이전트 오버라이드: physnet1 ↔ br-ex 매핑
cat >/etc/kolla/config/neutron/openvswitch_agent.ini <<'EOF'
[ovs]
bridge_mappings = physnet1:br-ex
EOF
## 적용
kolla-ansible -i /etc/kolla/inventory.ini reconfigure --tags neutron
## 컨테이너 안에서 반영된 것 확인
docker exec -it neutron_openvswitch_agent bash -lc "grep -R 'bridge_mappings' -n /etc/neutron || true"
docker exec -it neutron_server bash -lc "grep -R 'flat_networks' -n /etc/neutron || true"
## external-net 설정
openstack network create external-net \
--external \
--provider-network-type flat \
--provider-physical-network physnet1
openstack subnet create external-subnet \
--network external-net \
--subnet-range 192.168.47.0/24 \
--gateway 192.168.47.1 \
--no-dhcp
# 외부망 공유로 전환
openstack network set --share external-net
# 다시 생성/모니터링
EXT_NET_ID="$(openstack network show -f value -c id external-net)"
LB_ID="$(openstack loadbalancer create --name lb_retry --vip-network-id "$EXT_NET_ID" -f value -c id)"
echo "LB_ID=$LB_ID"
watch -n 5 'openstack loadbalancer show '"$LB_ID"' -c provisioning_status -c operating_status -c vip_address; openstack server list --all-projects | grep -i amphora || true'
10. LBaaS(Octavia)설치-3- LB생성
[LB생성]
##LB 생성 → 리스너 → 풀 → 멤버 → 헬스모니터 순으로 진행
# LB 생성 (VIP를 external-net에)
openstack loadbalancer create --name lb1 \
--vip-network-id $(openstack network show -f value -c id external-net)
# 상태 확인 (ACTIVE 될 때까지)
openstack loadbalancer show lb1 -c vip_address -c provisioning_status -c operating_status
## 안 될 시 아래 작업 진행
# 1. 변수에 방금 만든 amphora-public 플래이버 ID 저장
FLAVOR_ID=ad47b3d6-bb4d-4c66-91e5-9a96996de18c
# 2. Octavia 설정 디렉터리 생성
mkdir -p /etc/kolla/config/octavia
# 3. 설정 파일 생성 (오버라이드용)
cat > /etc/kolla/config/octavia/octavia.conf <<EOF
[controller_worker]
# amphora 이미지를 'amphora' 태그로 자동 선택
amp_image_tag = amphora
# 방금 만든 공개 플래이버 ID 지정
amp_flavor_id = ${FLAVOR_ID}
EOF
## 설정 반영
kolla-ansible -i /etc/kolla/inventory.ini reconfigure --tags octavia
##확인
openstack image set amphora-x64-haproxy --public --tag amphora
openstack image show amphora-x64-haproxy -c visibility -c tags
## LB 재생성
openstack loadbalancer delete lb1 --cascade || true
openstack loadbalancer create --name lb1 \
--vip-network-id $(openstack network show -f value -c id external-net)
## 상태/주소
openstack loadbalancer show lb1 -c vip_address -c provisioning_status -c operating_status
## Amphora VM 생성확인
openstack server list --all-projects | grep -i amphora || true
##Amphora 제대로 실행 안 될 시 아래 작업 진행
# 1) Octavia가 쓸 프로젝트 찾기 (보통 'service' 프로젝트)
openstack project list | egrep -i 'service|octavia'
# 2) 현재 amphora 플래이버 접근권한 확인
openstack flavor access list amphora
# 3) service(또는 octavia) 프로젝트에 접근권한 부여
# <PROJECT_ID> 를 1)에서 나온 ID로 바꿔 넣으세요.
openstack flavor set amphora --project <PROJECT_ID>
# 4) 확인
openstack flavor access list amphora
# 백업
cp -a /etc/kolla/globals.yml /etc/kolla/globals.yml.bak.$(date +%s)
# 두 옵션 “추가 또는 덮어쓰기”
grep -q '^enable_redis:' /etc/kolla/globals.yml \
&& sed -i 's/^enable_redis:.*/enable_redis: "yes"/' /etc/kolla/globals.yml \
|| echo 'enable_redis: "yes"' >> /etc/kolla/globals.yml
grep -q '^enable_octavia_jobboard:' /etc/kolla/globals.yml \
&& sed -i 's/^enable_octavia_jobboard:.*/enable_octavia_jobboard: "yes"/' /etc/kolla/globals.yml \
|| echo 'enable_octavia_jobboard: "yes"' >> /etc/kolla/globals.yml
##valid_interface=internal 추가
cat >> /etc/kolla/config/octavia/octavia.conf <<'EOF'
# === added for openstacksdk service endpoints ===
[nova]
valid_interfaces = internal
[glance]
valid_interfaces = internal
[cinder]
valid_interfaces = internal
EOF
## 재적용
kolla-ansible -i /etc/kolla/inventory.ini reconfigure --tags octavia
728x90
반응형
'클라우드' 카테고리의 다른 글
오픈스택(OpenStack) 설치 및 LBaas 사용(Feat. F5연동) - 2 (1) | 2025.08.07 |
---|---|
오픈스택(OpenStack) 설치 및 LBaas 사용(Feat. F5연동) - 1 (0) | 2025.08.06 |
NCP Email 알람 못 받을 경우 해결 방법(Email 450 Error) (0) | 2025.05.12 |
NCP-AWS IPsec VPN 연결 (0) | 2025.05.12 |
NCP(네이버클라우드) NetworkProxyLB를 활용한 FTP서버 설정2 - 파일질라 서버 설치(L3 DSR FTP) (1) | 2024.10.28 |