Kolla-Ansible 배포
- Kolla-Ansible을 OVN으로 배포하는 경우 openvswitch를 kolla-ansible에서 배포되므로 반드시 서비스망을 제외한 SSH 접속이나 콘솔에서 배포를 진행해야 합니다.
- pull 작업을 먼저 하지 않을 경우 인터넷이 연결이 끊기기 때문에 로컬 레포를 사용하는 경우가 아닐 시 deploy보다 먼저 진행되야 합니다.
TLS Certificate
Kolla ansible에서 필요한 인증서를 생성합니다.
# kolla-ansible -i inventory/multinode certificates
......
devcom01 : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
devcom02 : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
devcon01 : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
devcon02 : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
localhost : ok=30 changed=24 unreachable=0 failed=0 skipped=6 rescued=0 ignored=0
설치 이후 CLI 명령어 사용을 위해 keystone에 인증서를 추가해줍니다.
# devcon01
# ca-certificates.crt 파일을 복사
# cp /etc/ssl/certs/ca-certificates.crt /root/
# root.crt 파일과 복사한 ca-certificates.crt 합쳐 줌
# cat /etc/kolla/certificates/ca/root.crt >> /root/ca-certificates.crt
Openstack 설치 모듈 및 서비스 모듈 다운로드
# Octavia key 생성
# kolla-ansible -i /root/inventory/multimode octavia-certificates
# devcon01
# 설치 모듈 배포
# kolla-ansible -i /root/inventory/multinode bootstrap-servers
# devcon01
# 환경설정 검사
# kolla-ansible -i /root/inventory/multinode prechecks
# devcon01
# 각 서비스 모듈 다운로드
# kolla-ansible -i /root/inventory/multinode pull
서비스 모듈 동시 배포
-
서비스 모듈을 동시에 배포하는 방법과 Network를 분리하여 배포하는 방법이 있습니다. 네트워크를 분리하여 배포하는 방법이 keepalived 를 별도로 설정하지 않아도 되어 작업이 용이할 수 있습니다.
네트워크 서비스 모듈 배포
아래 배포 시에 더 이상 진행되지 않고 네트워크를 기다리는 경우 다음 장의 “브릿지 인터페이스 VIP 설정”장으로 이동하여 설정을 완료하십시오.
# devcon01
# 네트워크 관련 모듈 배포
# kolla-ansible -i /root/inventory/multinode deploy
아래와 같이 노드들의 연결을 대기 중일 경우 다음 장의 “브릿지 인터페이스 VIP 설정”장으로 이동하여 설정을 완료하십시오.
TASK [openvswitch : Ensuring OVS bridge is properly setup]
************************************************************************
changed: [devcon01] => (item=['br-ex', 'enp7s0'])
브릿지 인터페이스 VIP 설정
배포 시에 네트워크를 분리하지 않고 전체 모듈을 동시에 설치할 경우에는 keepalived가 실행되어 추후 진행되는 과정에서 vip를 찾지 못하여 설치 오류가 발생합니다. 이때, 아래의 과정을 진행합니다.
배포 시에 아래의 화면에서 멈추어 있는 경우 keepalived와 ip 설정을 진행합니다.
Alt+F1, Alt+F2를 이용해 터미널을 전환할 수 있습니다.
TASK [openvswitch : Set system-id]
************************************************************************************************
changed: [devcon01]
changed: [devcon02]
changed: [devcom01]
changed: [devcon03]
changed: [devcom02]
TASK [openvswitch : Ensuring OVS bridge is properly setup]
************************************************************************
changed: [devcon01] => (item=['br-ex', 'enp7s0'])
기존 네트워크 인터페이스명을 br-ex로 변경합니다. 내부 네트워크의 VIP를 사용하는 경우 아래의 내용과 다를 수 있으니 적절하게 수정하시기 바랍니다. 아래의 명령을 수행한 이 후에는 반드시 ping으로 vip로의 접속을 확인하시기 바랍니다. 접속이 안될 경우에는 이후 과정에서 openstack 설치에 실패하게 됩니다.
# devcon01, devcon02
root@devcon01:~# cat /etc/kolla/keepalived/keepalived.conf
vrrp_script check_alive {
script "/check_alive.sh"
interval 2
fall 2
rise 10
}
vrrp_instance kolla_internal_vip_51 {
state BACKUP
nopreempt
interface br-ex
virtual_router_id 51
priority 1
advert_int 1
virtual_ipaddress {
192.168.140.50 dev br-ex
}
authentication {
auth_type PASS
auth_pass 5HsO30ewcmJ3mtgqRD7qZAm0ffORFDHuqv5h4rSE
}
track_script {
check_alive
}
}
# devcon01, devcon02, devcon03
root@devcon01:~# docker restart keepalivdjaed
# devcon01, devcon02, devcon03
root@devcon01:~# ping 192.168.140.50
PING 192.168.140.50 (192.168.140.50) 56(84) bytes of data.
64 bytes from 192.168.140.50: icmp_seq=1 ttl=64 time=0.045 ms
64 bytes from 192.168.140.50: icmp_seq=2 ttl=64 time=0.051 ms
64 bytes from 192.168.140.50: icmp_seq=3 ttl=64 time=0.065 ms
^C
--- 192.168.140.50 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2026ms
rtt min/avg/max/mdev = 0.045/0.053/0.065/0.008 ms
root@devcon01:~#
br-ex 인터페이스 IP 설정
설정 이후에는 ping 명령어 등으로 네트워크에 정상 접속되는 지 확인합니다.
# devcon01, devcon02, devcom01, devcom02, devcom03
root@devcon01:~# cat /etc/netplan/01-netcfg.yaml
network:
version: 2
renderer: networkd
ethernets:
enp5s0: {} # 기존 게이트웨이 통신을 하는 서비스망 IP가 적용된 externnal 인터페이스
br-ex:
addresses: [x.x.x.
# devcon01, devcon02, devcom01, devcom02, devcom03
root@devcon01:~# netplan apply
# devcon01, devcon02, devcom01, devcom02, devcom03
root@devcon01:~# ping 192.168.140.254 <- 게이트워이 IP
PING 192.168.140.254 (192.168.140.254) 56(84) bytes of data.
64 bytes from 192.168.140.254: icmp_seq=1 ttl=64 time=2.18 ms
64 bytes from 192.168.140.254: icmp_seq=2 ttl=64 time=2.19 ms
64 bytes from 192.168.140.254: icmp_seq=3 ttl=64 time=1.86 ms
^C
--- 192.168.140.254 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2003ms
rtt min/avg/max/mdev = 1.857/2.073/2.188/0.153 ms
위 명령이 각 서버에 정상적으로 반영되었으면 네트워크 설정 완료 대기 작업이 아래와 같이 출력되고 다음 작업으로 넘어갑니다. 네트워크 설정 대기는 시간이 약간 소요됩니다. 각 서버에서 네트워크가 정상적으로 설정되었다면 일정 시간 대기하면 자동으로 인식합니다. 각 서버 당 1~2분 정도 소요됩니다.
TASK [openvswitch : Ensuring OVS bridge is properly setup]
************************************************************************
changed: [devcon01] => (item=['br-ex', 'enp7s0'])
changed: [devcon02] => (item=['br-ex', 'enp2s0'])
changed: [devcon03] => (item=['br-ex', 'enp0s31f6'])
changed: [devcom02] => (item=['br-ex', 'enp2s0'])
changed: [devcom01] => (item=['br-ex', 'enp0s31f6'])
서비스 모듈 분리 배포
네트워크 서비스 모듈 배포
# devcon01
# 네트워크 관련 모듈 배포
# kolla-ansible -i /root/inventory/multinode deploy -t common,openvswitch,ovn
아래와 같이 노드들의 연결을 대기 중일 경우 다음 장의 “br-ex 인터페이스 IP 설정”으로 이동하여 설정을 완료하십시오.
TASK [openvswitch : Ensuring OVS bridge is properly setup]
************************************************************************
changed: [devcon01] => (item=['br-ex', 'enp7s0'])
br-ex 인터페이스 IP 설정
설정 이후에는 ping 명령어 등으로 네트워크에 정상 접속되는 지 확인합니다.
# devcon01, devcon02, devcom01, devcom02, devcom03
root@devcon01:~# cat /etc/netplan/01-netcfg.yaml
network:
version: 2
renderer: networkd
ethernets:
enp5s0: {} # 기존 게이트웨이 통신을 하는 서비스망 IP가 적용된 externnal 인터페이스
br-ex:
addresses: [x.x.x.
# devcon01, devcon02, devcom01, devcom02, devcom03
root@devcon01:~# netplan apply
# devcon01, devcon02, devcom01, devcom02, devcom03
root@devcon01:~# ping 192.168.140.254 <- 게이트워이 IP
PING 192.168.140.254 (192.168.140.254) 56(84) bytes of data.
64 bytes from 192.168.140.254: icmp_seq=1 ttl=64 time=2.18 ms
64 bytes from 192.168.140.254: icmp_seq=2 ttl=64 time=2.19 ms
64 bytes from 192.168.140.254: icmp_seq=3 ttl=64 time=1.86 ms
^C
--- 192.168.140.254 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2003ms
rtt min/avg/max/mdev = 1.857/2.073/2.188/0.153 ms
위 명령이 각 서버에 정상적으로 반영되었으면 네트워크 설정 완료 대기 작업이 아래와 같이 출력되고 다음 작업으로 넘어갑니다. 네트워크 설정 대기는 시간이 약간 소요됩니다. 각 서버에서 네트워크가 정상적으로 설정되었다면 일정 시간 대기하면 자동으로 인식합니다. 각 서버 당 1~2분 정도 소요됩니다.
TASK [openvswitch : Ensuring OVS bridge is properly setup]
************************************************************************
changed: [devcon01] => (item=['br-ex', 'enp7s0'])
changed: [devcon02] => (item=['br-ex', 'enp2s0'])
changed: [devcon03] => (item=['br-ex', 'enp0s31f6'])
changed: [devcom02] => (item=['br-ex', 'enp2s0'])
changed: [devcom01] => (item=['br-ex', 'enp0s31f6'])
네트워크 이외의 모듈 배포
네트워크가 정상적으로 설정되고 각 노드들과 통신이 완료되면 수행합니다.
inventory/multinode 를 복사하여 인터페이스를 변경합니다.
# devcon01
# cp /root/inventory/multinode /root/inventory/multinode.br-ex
# vi /root/inventory/multinode.br-ex
interface name(ex, enp2s0) => br-ex
:1,$s/enp7s0/br-ex/g
:1,$s/enp2s0/br-ex/g
:1,$s/enp4s0/br-ex/g
:1,$s/enp0s31f6/br-ex/g
# devcon01
# 네트워크 이외의 모듈 배포
# kolla-ansible -i /root/inventory/multinode.br-ex deploy --skip-tags common,openvswitch,ovn
설치 완료
모든 배포가 완료되면 아래와 같은 로그가 출력되고 쉘이 다시 나타납니다.
TASK [octavia : Create security groups for octavia] ******************************************************************************************************************************************
fatal: [devcon01 -> {{ groups['octavia-api'][0] }}]: FAILED! => {"msg": "The conditional check 'item.enabled | bool' failed. The error was: error while evaluating conditional (item.enabled | bool): 'dict object' has no attribute 'enabled'\n\nThe error appears to be in '/usr/local/share/kolla-ansible/ansible/roles/octavia/tasks/prepare.yml': line 54, column 3, but may\nbe elsewhere in the file depending on the exact syntax problem.\n\nThe offending line appears to be:\n\n\n- name: Create security groups for octavia\n ^ here\n"}
NO MORE HOSTS LEFT ***************************************************************************************************************************************************************************
PLAY RECAP ***********************************************************************************************************************************************************************************
devcom01 : ok=39 changed=30 unreachable=0 failed=0 skipped=45 rescued=0 ignored=0
devcom02 : ok=39 changed=30 unreachable=0 failed=0 skipped=46 rescued=0 ignored=0
devcon01 : ok=373 changed=253 unreachable=0 failed=1 skipped=195 rescued=0 ignored=1
devcon02 : ok=245 changed=165 unreachable=0 failed=0 skipped=184 rescued=0 ignored=1
localhost : ok=4 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
Command failed ansible-playbook -e @/etc/kolla/globals.yml -e @/etc/kolla/passwords.yml -e CONFIG_DIR=/etc/kolla --skip-tags common,openvswitch,ovn -e kolla_action=deploy /usr/local/share/kolla-ansible/ansible/site.yml --inventory /root/inventory/multinode.br-ex
설치 검증 및 도구 설치
인증서 복사
# 합쳐진 ca-certificates.crt 파일을 keystone에 복사
# docker cp /root/ca-certificates.crt keystone:/etc/keystone/certs/
admin-openrc.sh 및 도구 설치
# devcon01
root@devcon01:~# kolla-ansible post-deploy
# devcon01
root@devcon01:~# vi /etc/kolla/admin-openrc.sh
// 맨 하단에 export 추가
export OS_CACERT=/root/ca-certificates.crt
# devcon01
root@devcon01:~# pip install python-openstackclient python-glanceclient python-neutronclient
# devcon01
root@devcon01:~# apt install mariadb-client-core-10.3 -y
Kolla-Ansible 정상 배포 확인
# devcon01
root@devcon01:~# . /etc/kolla/admin-openrc.sh
# devcon01
root@devcon01:~# openstack catalog list
# devcon01
root@devcon01:~# openstack endpoint list
# devcon01
root@devcon01:~# openstack compute service list
# devcon01
root@devcon01:~# openstack volume service list
# devcon01
root@devcon01:~# openstack network agent list
# devcon01
root@devcon01:~# mysql -uroot -p -h 192.168.140.50
설치 후 추가 작업
기본 Flavor 생성
# devcon01
root@devcon01:~# . /etc/kolla/admin-openrc.sh
root@devcon01:~# openstack flavor create m1.tiny --id m1.tiny --ram 1024 --disk 10 --vcpus 1
root@devcon01:~# openstack flavor create m1.small --id m1.small --ram 2048 --disk 20 --vcpus 1
root@devcon01:~# openstack flavor create m1.medium --id m1.medium --ram 4096 --disk 40 --vcpus 2
root@devcon01:~# openstack flavor create m1.large --id m1.large --ram 8192 --disk 80 --vcpus 4
root@devcon01:~# openstack flavor create m1.xlarge --id m1.xlarge --ram 16384 --disk 160 --vcpus 8
외부 네트워크 라우터 생성
- https://192.168.140.50 로 접속하여 horizon에 로그인합니다.
- 외부 네트워크 생성을 위하여 ml2_type_flat의 flat_networks의 값을 확인합니다.
root@devcon01:~# vi /etc/kolla/neutron-server/ml2_conf.ini
[ml2]
type_drivers = flat,vlan,vxlan,geneve
tenant_network_types = geneve
mechanism_drivers = ovn
extension_drivers = port_security
[ml2_type_vlan]
network_vlan_ranges =
[ml2_type_flat]
flat_networks = physnet1
[ml2_type_vxlan]
vni_ranges = 1:1000
[ml2_type_geneve]
vni_ranges = 1001:2000
max_header_size = 38
[ovn]
ovn_nb_connection = tcp:172.16.0.250:6641
ovn_sb_connection = tcp:172.16.0.250:6642
ovn_metadata_enabled = True
enable_distributed_floating_ip = False
- 관리 > 네트워크 > 네트워크 페이지로 이동 후 네트워크 생성을 클릭합니다. 이 때 외부네트워크와 공유를 체크하여 다른 프로젝트에서도 해당 외부네트워크를 사용할 수 있도록 처리합니다. 필요시 가용성 구역 힌트에 nova를 입력합니다.
- 서브넷 정보를 추가합니다. 생성될 서브넷의 대역을 설정합니다. 아래는 192.168.140.128에서 128개의 아이피를 사용할 수 있도록 설정하였습니다.
- 서브넷 세부정보에서 DHCP할당 대역을 설정합니다. 인스턴스가 만들어질 때 자동으로 할당되는 아이피 Pools의 대역 정보를 설정합니다.
- Pools 할당 시 192.168.140.xx,192.168.140.xx 형식으로 범위를 입력할 수 있지만, 두 Pools 간 띄어쓰기, 공백이 있으면 네트워크 생성이 되지 않으므로 반드시 형식에 맞게 입력합니다.
- 관리 > 네트워크 > 라우터 페이지로 이동하여 라이터 생성 버튼을 클릭합니다. 다음과 같이 프로젝트와 방금 생성한 외부 네트워크를 선택합니다. 필요시 가용성 구역 힌트에 nova를 입력합니다.
- 프로젝트 > 네트워크 > 네트워크 토폴로지 페이지로 이동하여 생성된 네트워크의 구성을 확인합니다.
- 프로젝트 > 네트워크 > 네트워크 페이지로 이동하여 네트워크를 추가 확인합니다. 필요시 가용성 구역 힌트에 nova를 입력합니다.
- 서브넷의 정보를 추가합니다.
- 서브넷을 생성합니다.
- 프로젝트 > 네트워크 > 네트워크 토폴로지 페이지로 이동하여 생성된 네트워크의 구성을 확인합니다.
'Development > Cloud, Openstack' 카테고리의 다른 글
OpenStack 이란 (0) | 2024.11.24 |
---|---|
Openstack Octavia(Load Balancer) Flaver 만들기 (0) | 2024.11.21 |
Openstack(Antelope) Multi-Node 설치하기 with Kolla-ansible & NFS #1/2 (2) | 2024.11.15 |
Openstack(Antelope) All-in-one Node Installation with Kolla-ansible (0) | 2024.04.08 |
Openstack qcow2 가상 이미지 템플릿 만들기(Ubuntu, Ubuntu Desktup, Windows 10) (0) | 2024.04.04 |