본문으로 바로가기

본 글에서는 Kolla-ansible을 기반으로 Openstack을 다중노드에 설치하는 과정에 대해서 설명합니다.

 

운영체제 설치

운영체제 이름/버전 : Ubuntu 20.04.5 Live Server

가상네트워크 : 192.168.140.50

각 운영체제에는 별도의 모듈은 설치하지 않고 최소 설치하였습니다.

 

호스트 정보

본 설치 가이드에서는 네트워크 인터페이스가 1개인 경우를 고려하여 기술되었습니다. 여러 개의 네트워크 인터페이스가 있을 경우에는 각각의 네트워크 인터페이스에 IP를 할당하고 VIP로 묶어서 네트워크를 설계해야 합니다. 이 네트워크 설계에 따라서 필요에 따른 노드의 네트워크가 다르게 설정되게 됩니다.

Host Name IP Interface Role 사양
con01 192.168.140.51 enp7s0 Controller #1, Compute #3 CPU :  Intel(R) Core(TM) i7-9700F CPU @ 3.00GHz
Memory : 32G
SSD : 500G
HDD : 1T
con02 192.168.140.52 enp2s0 Controller #2 CPU : Intel(R) Core(TM) i7-8700 CPU @ 3.20GHz
Memory : 16G
SSD : 200G
con03 192.168.140.53 enp0s31f6 Controller #3, Compute #4 CPU :  Intel(R) Core(TM) i7-7700 CPU @ 3.60GHz
Memory : 32G
SSD : 240G
HDD : 1T
com01 192.168.140.54 enp0s31f6 Compute #1 CPU : Intel(R) Core(TM) i7-6700 CPU @ 3.40GHz
Memory : 16G
SSD : 240G
HDD : 2T
com02 192.168.140.55 enp2s0 Compute #2 CPU : Intel(R) Xeon(R) CPU E5506  @ 2.13GHz, 2EA
Memory : 24G
SSD : 240G
HDD : 500G, 1T, 1T

 

사양정보 확인

root@con01:~# lscpu  | grep Model
Model:                           158
Model name:                      Intel(R) Core(TM) i7-9700F CPU @ 3.00GHz

root@con01:~# dmidecode -t memory | grep Size | grep -v No
        Size: 8192 MB
        Size: 8192 MB
        Size: 8192 MB
        Size: 8192 MB
        
root@con01:~# lsblk -e7 -e11 | grep disk
sda                                               8:0    0 447.1G  0 disk
sdb                                               8:16   0 931.5G  0 disk

root@con01:~#

 

ssh 대몬 설치

# con01, con02, con03, com01, com02
root@con01:~# sudo apt-get update

# con01, con02, con03, com01, com02
root@con01:~# sudo apt-get install ssh

# con01, con02, con03, com01, com02
root@con01:~# sudo systemctl enable ssh

 

ssh 테스트

ssh localhost

로그인

 

ssh root로 로그인되도록 권한 추가

# con01, con02, con03, com01, com02
root@con01:~# vi /etc/ssh/sshd_config

PermitRootLogin yes

# con01, con02, con03, com01, com02
root@con01:~# systemctl restart sshd

 

ssh root 암호 설정

관리자 암호를 설정합니다.

# con01, con02, con03, com01, com02
user@com02:~# sudo -i
[sudo] password for openstack:

# con01, con02, con03, com01, com02
root@com02:~# passwd
New password:
Retype new password:
passwd: password updated successfully

sudo 암호 안 묻기

기본계정에서 sudo 권한을 묻지않기 위해 아래의 명령을 수행합니다.

root@con01:~# echo 'openstack ALL=NOPASSWD: ALL' >> /etc/sudoers
root@con01:~# cat /etc/sudoers | tail -2
#includedir /etc/sudoers.d
openstack ALL=NOPASSWD: ALL

ssh root 접속 테스트

# con01, con02, con03, com01, com02
openstack@con02:~$ ssh root@localhost
root@localhost's password: 
Welcome to Ubuntu 20.04.5 LTS (GNU/Linux 5.4.0-139-generic x86_64)
...

 

기본 도구 설치

# con01, con02, con03, com01, com02
apt-get install net-tools -y

 

Kolla-Ansible로 Openstack 설치하기

호스트 설정

각 서버에 통신을 하기 위해서 각 서버 정보를 호스트 파일에 등록합니다.

# con01, con02, con03, com01, com02
root@con01:~# cat /etc/hosts
127.0.0.1 localhost

192.168.140.51 con01
192.168.140.52 con02
192.168.140.53 con03
192.168.140.54 com01
192.168.140.55 com02

 

SSH key 생성 & 배포

각 서버와 암호없이 통신하도록 SSH키를 만들고 공유합니다.

# con01
root@con01:~# ssh-keygen -t rsa # for node in {con01,con02,con03,com01,com02}; do \
ssh-copy-id root@$node; \
done

 

Chrony 설치 & 동기화 확인

Kolla-Ansible Xena 버전부터 chrony 서비스가 제거되었기 때문에 chrony,ntp등 시간 동기화 서비스를 수동 설치해야 합니다. 링크 : https://review.opendev.org/c/openstack/kolla-ansible/+/791743

# con01, con02, con03, com01, com02
root@con01:~# apt install chrony

# con01, con02, con03, com01, com02
root@con01:~# systemctl enable chrony

# con01, con02, con03, com01, com02
root@con01:~# systemctl start chrony

# con01, con02, con03, com01, com02
root@con01:~# chronyc sources -v
210 Number of sources = 10

  .-- Source mode  '^' = server, '=' = peer, '#' = local clock.
 / .- Source state '*' = current synced, '+' = combined , '-' = not combined,
| /   '?' = unreachable, 'x' = time may be in error, '~' = time too variable.
||                                                 .- xxxx [ yyyy ] +/- zzzz
||      Reachability register (octal) -.           |  xxxx = adjusted offset,
||      Log2(Polling interval) --.      |          |  yyyy = measured offset,
||                                \     |          |  zzzz = estimated error.
||                                 |    |           \
MS Name/IP address         Stratum Poll Reach LastRx Last sample
===============================================================================
^- prod-ntp-5.ntp1.ps5.cano>     2   9   377   923  +7478us[+7394us] +/-  124ms
^- pugot.canonical.com           2   9   377   143  -4571us[-4571us] +/-  162ms
^- prod-ntp-3.ntp4.ps5.cano>     2   9   377   407    +15ms[  +15ms] +/-  130ms
^- alphyn.canonical.com          2   9   377   416  -9816us[-9860us] +/-  151ms
^* 121.174.142.81                3   9   377   157   +290us[ +239us] +/-   37ms
^- 121.162.54.1                  2   7   377    87  -5377us[-5377us] +/-   52ms
^+ ap-northeast-2.clearnet.>     2   8   327   216   -561us[ -610us] +/-   30ms
^? any.time.nl                   0   6     0     -     +0ns[   +0ns] +/-    0ns
^? ap-northeast-2.clearnet.>     0   6     0     -     +0ns[   +0ns] +/-    0ns
^? 2406:da12:b86:2c32:3045:>     0   6     0     -     +0ns[   +0ns] +/-    0ns

 

ansible 설치

Xena 버전의 ansible은 2.10 버전과 4버전 둘 다 가능함.

# con01
root@con01:~# sudo add-apt-repository ppa:ansible/ansible-4

# con01
root@con01:~# apt update

# con01
root@con01:~# apt install ansible

 

Openstack 저장소 설정

설치전에 cinder-volumes로 파티션이 구성되어야 Openstack의 인스턴스가 해당 디스크에 저장됩니다. swift와 같은 저장소를 구성하려면 본 블로그의 https://parandol.tistory.com/72 를 참고하십시오.

// 파티션 관리에 들어가서 파티션을 생성합니다.
# com01, com02
root@aio01:~# parted /dev/sdb
(parted) mklabel gpt
(parted) mkpart primary 0 100%
Warning: The resulting partition is not properly aligned for best performance.
Ignore/Cancel? Ignore
(parted) set 1 lvm on
(parted) print
(parted) q

// 디스크 물리 볼륨 생성합니다.
# com01, com02
root@aio01:~# pvcreate /dev/sdb1

// 물리 볼륨에 가상볼륨 cinder-volumes 를 추가합니다.
# com01, com02
root@aio01:~# vgcreate cinder-volumes /dev/sdb1

# com01, com02
root@con01:~# vgdisplay
  --- Volume group ---
  VG Name               cinder-volumes
  System ID
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  4
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                1
  Open LV               0
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               <93.13 GiB
  PE Size               4.00 MiB
  Total PE              23841
  Alloc PE / Size       22696 / <88.66 GiB
  Free  PE / Size       1145 / 4.47 GiB
  VG UUID               8B7h9K-opG5-9DfK-I8x9-df7P-eYlb-qPxRhP

 

 

Kolla-Ansible 배포

설치 패키지 설치 및 pip 업데이트

# con01
root@con01:~# apt install python3-dev libffi-dev gcc libssl-dev

# con01
root@con01:~# apt install python3-pip

# con01
root@con01:~# pip3 install -U pip

Kolla-Ansible 설치

# con01
root@con01~# pip install kolla-ansible==13.

Kolla-Ansible에서 사용할 파일 복사

# con01
root@con01:~# cp -r /usr/local/share/kolla-ansible/etc_examples/kolla /etc/

# con01
root@con01:~# cp -r /usr/local/share/kolla-ansible/ansible/inventory/ /root/

인벤토리 설정

네트워크 인터페이스는 각 서버에 맞게 정확하게 맞추어야 합니다.

  • ifconfig 명령을 통해 네트워크 인터페이스를 확인하여 아래의 내용을 추가합니다. 기본적으로 네트워크 인터페이스를 지정하지 않는 경우는 eth0를 기본값으로 사용하나 이 인터페이스가 없으면 설치시 오류가 발생합니다.
  • control 노드가 compute 기능을 동시에 수행하는 경우에는 hacluster_remote 정보를 추가하여 compute역할만 수행하는 노드를 별도로 구성합니다. 이 설정을 변경하지 않을 경우에는 Kolla-ansible 가 hacluster 구성 시 control 노드에는 corosync/pacemaker/pacemaker_remote 모듈을 동시에 설정하려고 하여 pacemaker와 pacemaker_remote가 충돌(네트워크 포트 충돌)을 일으킵니다.
  • hacluster-remote:children 항목을 찾아서 compute 에서 hacluster_remote로 값을 변경합니다.
# con01
root@con01:~# cat inventory/multinode

[control]
con01 network_interface=enp7s0 api_interface=enp7s0 neutron_external_interface=enp7s0 kolla_external_vip_interface=enp7s0 migration_interface=enp7s0
con02 network_interface=enp2s0 api_interface=enp2s0 neutron_external_interface=enp2s0 kolla_external_vip_interface=enp2s0 migration_interface=enp2s0
con03 network_interface=enp0s31f6 api_interface=enp0s31f6 neutron_external_interface=enp0s31f6 kolla_external_vip_interface=enp0s31f6 migration_interface=enp0s31f6

[network]
con01 network_interface=enp7s0 api_interface=enp7s0 neutron_external_interface=enp7s0 kolla_external_vip_interface=enp7s0 migration_interface=enp7s0
con02 network_interface=enp2s0 api_interface=enp2s0 neutron_external_interface=enp2s0 kolla_external_vip_interface=enp2s0 migration_interface=enp2s0
con03 network_interface=enp0s31f6 api_interface=enp0s31f6 neutron_external_interface=enp0s31f6 kolla_external_vip_interface=enp0s31f6 migration_interface=enp0s31f6

[compute]
com01 network_interface=enp0s31f6 api_interface=enp0s31f6 storage_interface=enp0s31f6 tunnel_interface=enp0s31f6 migration_interface=enp0s31f6 neutron_external_interface=enp0s31f6
com02 network_interface=enp2s0 api_interface=enp2s0 storage_interface=enp2s0 tunnel_interface=enp2s0 migration_interface=enp2s0 neutron_external_interface=enp2s0
con01 network_interface=enp7s0 api_interface=enp7s0 storage_interface=enp7s0 tunnel_interface=enp7s0 migration_interface=enp7s0 neutron_external_interface=enp7s0
con03 network_interface=enp0s31f6 api_interface=enp0s31f6 storage_interface=enp0s31f6 tunnel_interface=enp0s31f6 migration_interface=enp0s31f6 neutron_external_interface=enp0s31f6

[hacluster_remote]
com01 network_interface=enp0s31f6 api_interface=enp0s31f6 storage_interface=enp0s31f6 tunnel_interface=enp0s31f6 migration_interface=enp0s31f6 neutron_external_interface=enp0s31f6
com02 network_interface=enp2s0 api_interface=enp2s0 storage_interface=enp2s0 tunnel_interface=enp2s0 migration_interface=enp2s0 neutron_external_interface=enp2s0

[monitoring]
con01 network_interface=enp7s0 api_interface=enp7s0 neutron_external_interface=enp7s0 kolla_external_vip_interface=enp7s0 migration_interface=enp7s0
con02 network_interface=enp2s0 api_interface=enp2s0 neutron_external_interface=enp2s0 kolla_external_vip_interface=enp2s0 migration_interface=enp2s0
con03 network_interface=enp0s31f6 api_interface=enp0s31f6 neutron_external_interface=enp0s31f6 kolla_external_vip_interface=enp0s31f6 migration_interface=enp0s31f6

[storage]
com01 network_interface=enp0s31f6 api_interface=enp0s31f6 neutron_external_interface=enp0s31f6 kolla_external_vip_interface=enp0s31f6 migration_interface=enp0s31f6
com02 network_interface=enp2s0 api_interface=enp2s0 neutron_external_interface=enp2s0 kolla_external_vip_interface=enp2s0 migration_interface=enp2s0
con01 network_interface=enp7s0 api_interface=enp7s0 neutron_external_interface=enp7s0 kolla_external_vip_interface=enp7s0 migration_interface=enp7s0
con03 network_interface=enp0s31f6 api_interface=enp0s31f6 neutron_external_interface=enp0s31f6 kolla_external_vip_interface=enp0s31f6 migration_interface=enp0s31f6

......
[hacluster-remote:children]
hacluster_remote
......

인벤토리 설정 확인

각 서버와 정상적으로 통신되는지 확인합니다.

# con01
root@con01:~# ansible -i /root/inventory/multinode all -m ping
[WARNING]: Invalid characters were found in group names but not replaced, use -vvvv to see details
localhost | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python3"
    },
    "changed": false,
    "ping": "pong"
}
con01 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python3"
    },
    "changed": false,
    "ping": "pong"
}
con03 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python3"
    },
    "changed": false,
    "ping": "pong"
}
con02 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python3"
    },
    "changed": false,
    "ping": "pong"
}
com01 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python3"
    },
    "changed": false,
    "ping": "pong"
}
com02 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python3"
    },
    "changed": false,
    "ping": "pong"
}

kolla 패스워드 생성 & 수정

각 Openstack에 사용하는 암호를 자동으로 생성합니다. 특정 서비스의 경우에는 원하는 암호로 별도 수정합니다.

# con01
root@con01:~# kolla-genpwd

# con01
root@con01:~# cat /etc/kolla/passwords.yml
...
database_password : openstack
keystone_admin_password : openstack
...

global.yml 수정

설치하려는 서비스를 선택하고 선택한 서비스에 적절한 환경설정을 구성합니다.

# con01
root@con01:~# cat /etc/kolla/globals.yml | grep -v ^# | grep -v ^$
---
kolla_base_distro: "ubuntu"
kolla_install_type: "source"
openstack_release: "xena"
kolla_internal_vip_address: "192.168.140.50"
kolla_external_vip_address: "{{ kolla_internal_vip_address }}"
neutron_plugin_agent: "ovn"
enable_openstack_core: "yes"
enable_glance: "{{ enable_openstack_core | bool }}"
enable_hacluster: "yes"
enable_haproxy: "yes"
enable_keepalived: "{{ enable_haproxy | bool }}"
enable_keystone: "{{ enable_openstack_core | bool }}"
enable_mariadb: "yes"
enable_memcached: "yes"
enable_neutron: "{{ enable_openstack_core | bool }}"
enable_nova: "{{ enable_openstack_core | bool }}"
enable_rabbitmq: "{{ 'yes' if om_rpc_transport == 'rabbit' or om_notify_transport == 'rabbit' else 'no' }}"
enable_cinder: "yes"
enable_cinder_backup: "yes"
enable_cinder_backend_lvm: "yes"
enable_fluentd: "yes"
enable_heat: "{{ enable_openstack_core | bool }}"
enable_horizon: "{{ enable_openstack_core | bool }}"
enable_horizon_masakari: "{{ enable_masakari | bool }}"
enable_masakari: "yes"
enable_neutron_provider_networks: "yes"
enable_nova_ssh: "yes"
enable_ovn: "{{ enable_neutron | bool and neutron_plugin_agent == 'ovn' }}"
enable_placement: "{{ enable_nova | bool or enable_zun | bool }}"
nova_console: "novnc"
hacluster_corosync_port: 5405

Kolla-Ansible 버그 패치

rabbitmq관련 버그를 다음과 같이 수정합니다.

root@con01:~# vi /usr/local/share/kolla-ansible/ansible/roles/service-rabbitmq/tasks/main.yml
---
- block:
......
          password: "{{ item.password }}"
          node: "rabbit@{{ ansible_facts.hostname }}"
          update_password: always
......

Ubuntu Desktop IP관리방법 변경

Ubuntu Desktop의 경우 Network Manager를 통하여 관리됩니다. 이 부분을 netplan이 관리가 가능하도록 변경합니다.

# Ubuntu Desktop Node
root@con01:~# vi /etc/netplan/00-...yaml
This is the network config written by 'subiquity'
network:
  ethernets:
    enp7s0: {}
    br-ex:
      addresses:
      - 192.168.140.51/24
      gateway4: 192.168.140.254
      nameservers:
        addresses:
        - 8.8.8.8
        - 168.126.63.1
        search:
        - con01
  version: 2
  
# Ubuntu Desktop Node
root@con01:~# systemctl disable NetworkManager.service

# Ubuntu Desktop Node
root@con01:~# systemctl stop NetworkManager.service

Kolla-Ansible 배포

유의 사항

1. Kolla-Ansible을 OVN으로 배포하는 경우 openvswitch를 kolla-ansible에서 배포되므로 반드시 서비스망을 제외한 SSH 접속이나 콘솔에서 배포를 진행해야 합니다.

2. pull 작업을 먼저 하지 않을 경우 인터넷이 연결이 끊기기 때문에 로컬 레포를 사용하는 경우가 아닐 시 deploy보다 먼저 진행되야 힙니다.

# con01
root@con01:~# kolla-ansible -i /root/inventory/multinode bootstrap-servers

# con01
root@con01:~# kolla-ansible -i /root/inventory/multinode prechecks

# con01
root@con01:~# kolla-ansible -i /root/inventory/multinode pull

# con01
root@con01:~# kolla-ansible -i /root/inventory/multinode deploy

브릿지 인터페이스 VIP 설정

배포 시에 아래의 화면에서 멈추어 있는 경우 keepalived와 ip 설정을 진행합니다.

TASK [openvswitch : Set system-id]
************************************************************************************************
changed: [con01]
changed: [con02]
changed: [com01]
changed: [con03]
changed: [com02]

TASK [openvswitch : Ensuring OVS bridge is properly setup]
************************************************************************
changed: [con01] => (item=['br-ex', 'enp7s0'])

기존 네트워크 인터페이스명을 br-ex로 변경합니다. 내부 네트워크의 VIP를 사용하는 경우 아래의 내용과 다를 수 있으니 적절하게 수정하시기 바랍니다. 아래의 명령을 수행한 이 후에는 반드시 ping으로 vip로의 접속을 확인하시기 바랍니다. 접속이 안될 경우에는 이후 과정에서 openstack 설치에 실패하게 됩니다.

# con01, con02, con03
root@con01:~# 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
    }
}


# con01, con02, con03
root@con01:~# docker restart keepalived

# con01, con02, con03
root@con01:~# 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@con01:~#

브릿지 인터페이스에 IP 설정

설정 이후에는 ping 명령어 등으로 네트워크에 정상접속되는 지 확인합니다.

# con01, con02, con03, com01, com02
root@con01:~# cat /etc/netplan/01-netcfg.yaml
network:
  version: 2
  renderer: networkd
  ethernets:
    enp5s0: {} # 기존 게이트웨이 통신을 하는 서비스망 IP가 적용된 인터페이스
    br-ex: addresses: [x.x.x.
    
# con01, con02, con03, com01, com02
root@con01:~# netplan apply

# con01, con02, con03, com01, com02
root@con01:~# 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: [con01] => (item=['br-ex', 'enp7s0'])
changed: [con02] => (item=['br-ex', 'enp2s0'])
changed: [con03] => (item=['br-ex', 'enp0s31f6'])
changed: [com02] => (item=['br-ex', 'enp2s0'])
changed: [com01] => (item=['br-ex', 'enp0s31f6'])

설치 완료

모든 배포가 완료되면 아래와 같은 로그가 출력되고 쉘이 다시 나타납니다.

PLAY RECAP
************************************************************************************************************************
com01                      : ok=99   changed=65   unreachable=0    failed=0    skipped=60   rescued=0    ignored=0
com02                      : ok=93   changed=65   unreachable=0    failed=0    skipped=58   rescued=0    ignored=0
con01                      : ok=373  changed=254  unreachable=0    failed=0    skipped=185  rescued=0    ignored=1
con02                      : ok=232  changed=156  unreachable=0    failed=0    skipped=189  rescued=0    ignored=1
con03                      : ok=257  changed=174  unreachable=0    failed=0    skipped=176  rescued=0    ignored=1   localhost                  : ok=4    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0
root@con01:~#

 

Horizon 접속

웹브라우저에서 http://192.168.140.50 으로 접속하여 설치 완료를 확인합니다.

 

클라이언트 도구 설치 및 rc파일 생성

# con01
root@con01:~# pip install python-openstackclient python-glanceclient python-neutronclient

# con01
root@con01:~# kolla-ansible post-deploy

 

Kolla-Ansible 정상 배포 확인

# con01
root@con01:~# . /etc/kolla/admin-openrc.sh

# con01
root@con01:~# openstack catalog list

# con01
root@con01:~# openstack endpoint list

# con01
root@con01:~# openstack compute service list

# con01
root@con01:~# openstack volume service list

# con01
root@con01:~# openstack network agent list

 

Mariadb 복구 시 에러가 발생할 때 참고

https://www.penguinsolutions.com/computing/documentation/scyld-cloud-manager/admin-guide/admin/galera/intro.html

 

Mariadb in a Galera Cluster Maintenance and Recovery — Scyld Cloud Manager 3.1 documentation

Introduction This document covers how to perform system maintenance with the Mariadb database in active production, and how to recover from power outages, or network failure. Normal System Maintenance Since the Galera wrapped Mariadb database is able to co

www.penguinsolutions.com

 

 

 

 

 

728x90