본문 바로가기
Openstack/Install Guide

Kolla-ansible Openstack install in CentOS 7.8 - Stein

by Miners1205 2023. 8. 10.
반응형

1. Openstack Kolla-ansible 설치 방법을 안내한다.

2. OpenVSwitch를 사용하여 네트워크를 세팅한다.

 


1. OS 환경

  • CentOS 7.8
  • Controller, Compute 각각 운영 환경
  • 네트워크 포트 최소 2~4개(External, MGMT, Data, Storage)

 


2. Openstack OS 기본 설정

   2.1 기본 툴 설치

$ yum install vim net-tools -y               ### 기본 툴 설치

$ yum install nfs-utils -y                   ### NAS 스토리지 연결시 필요

 

   2.2 네트워크 설정

### IPv6 중지 및 설정 확인

$ vim /etc/sysctl.conf 
 net.ipv6.conf.all.disable_ipv6 = 1 
 net.ipv6.conf.default.disable_ipv6 = 1 
 net.ipv6.conf.lo.disable_ipv6 = 1

$ sysctl -p  
### 방화벽 및 네트워크 매니저 중지

$ systemctl stop firewalld

$ systemctl disable firewalld

$ systemctl stop NetworkManager

$ systemctl disable NetworkManager

 

   2.3 Hosts 파일 설정

### Hosts 파일 설정

$ vim /etc/hosts
 172.16.0.1 controller01 con01
 172.16.0.2 controller02 con02
 172.16.0.3 controller03 con03
 172.16.0.11 compute01 com01
 172.16.0.12 compute02 com02

 

   2.4 네트워크 세팅

### 네트워크 설정

### External IP 세팅 

$ vim /etc/sysconfig/network-scripts/ifcfg-br-ex
DEVICE=br-ex
DEVICETYPE=ovs
ONBOOT=yes
TYPE=OVSBridge
DELAY=0
STP=off
NM_CONTROLLED=no
PIFDEV=eno3
BOOTPROTO=none
IPADDR=192.168.10.1 ~ 192.168.10.5
NETMASK=255.255.255.0
GATEWAY=192.168.10.254
DNS1=8.8.8.8

$ vim /etc/sysconfig/network-scripts/ifcfg-eno3
DEVICE=eno3
DEVICETYPE=ovs
ONBOOT=yes
TYPE=OVSPort
NM_CONTROLLED=no
BOOTPROTO=none
OVS_BRIDGE=br-ex
USERCTL=no

### 데이터망 IP 세팅
$ vim /etc/sysconfig/network-scripts/ifcfg-br-int
DEVICE=br-int
DEVICETYPE=ovs
ONBOOT=yes
TYPE=OVSBridge
DELAY=0
STP=off
NM_CONTROLLED=no
PIFDEV=eno5
BOOTPROTO=none
IPADDR=172.17.0.1 ~ 172.17.0.5
NETMASK=255.255.255.0

$ vim /etc/sysconfig/network-scripts/ifcfg-eno5
DEVICE=eno5
DEVICETYPE=ovs
ONBOOT=yes
TYPE=OVSPort
NM_CONTROLLED=no
BOOTPROTO=none
OVS_BRIDGE=br-int
USERCTL=no
IPADDR=172.17.0.101 ~ 172.17.0.105
NETMASK=255.255.255.0

### 관리망 IP 세팅
$ vim /etc/sysconfig/network-scripts/ifcfg-eno4
TYPE=Ethernet
BOOTPROTO=none
NAME=eno4
DEVICE=eno4
ONBOT=yes
IPADDR=172.16.0.1 ~ 172.16.0.5
NETMASK=255.255.255.0

### 스토리지망 IP 세팅
$ vim /etc/sysconfig/network-scripts/ifcfg-eno6
TYPE=Ethernet
BOOTPROTO=none
NAME= eno6
DEVICE= eno6
ONBOT=yes
IPADDR=100.100.100.1 ~ 100.100.100.5
NETMASK=255.255.255.0

 

   2.5 Openstack 패키지 설치

### Kolla-ansible Stein 버전 설치를 위한 패키지 다운로드

$ yum install –y epel-release
$ yum install –y epel-release https://repos.fedorapeople.org/repos/openstack/openstack-stein/rdo-release-stein-3.noarch.rpm
$ yum install –y openvswitch bridge-utils
$ systemctl start openvswitch
$ systemctl enable openvswitch
### 서버 재부팅시 다음 모듈 ON 시켜주어야함.

modprobe ip_vs

modprobe ip6_tables

modprobe openvswitch

   2.6 SSH Key 설정

### 모든 서버들의 SSH Key 설정

$ ssh-keygen -t rsa

$ ssh-copy-id root@controller01 ~ compute02 

   2.7 Selinux 비활성화

$ vim /etc/selinux/config

  SELINUX=disabled

$ reboot

3. Kolla 의존성 설치

   3.1 Kolla 의존성 설치

     - 현재 Python 2 지원대가 끊김으로 Python 3 버전도 추가설치 해준다.

     - Python 패키지 설치, pip 설치, pip docker 설치

$ yum install -y python-devel libffi-devel gcc openssl-devel libselinux-python python-pip

$ yum install -y python3-devel libselinux-python3 

$ pip list |grep pip               

### pip 버전이 낮을 경우 업그레이드 해준다.
$ pip install --upgrade pip==20.2.4
$ pip install docker==4.4.0        

 

   3.2 Ansible 설치 및 설정

$ yum install –y ansible
$ rpm –qa |grep ansible                     ### Ansible 버전 확인
$ vim /etc/ansible/ansible.cfg              ### Ansible 설정값 변경
 [defaults]
	forks = 100
	host_key_checking = false
 [ssh_connection]
	pipelining = True

### pip ansible 둘다 설치 필요
$ pip install ansible==2.8.8 또는 pip install ‘ansible<2.10’
$ pip3 install ansible==2.8.8 또는 pip3 install ‘ansible<2.10’


### Error 발생시 
pip3 install setuptools_rust
pip3 install wheelpython 
pip install --ignore-installed PyYAML

  3.3 Kolla 패키지 설치 (Controller01 서버만 수행)

- Kolla-ansible Stein 버전 기준, 타 버전 설치시 Openstack 공홈 참고
- https://releases.openstack.org/teams/kolla.html


pip install kolla-ansible==8.3.0                                  ### Stein 8.3.0

cp -r /usr/share/kolla-ansible/etc_examples/kolla /etc/kolla/        ### 파일 복사

cp -r /usr/share/kolla-ansible/ansible/inventory/ /root/            ### 파일 복사

 

4. Kolla 설치 패키지 설정

  4.1 Multinode 파일 설정

# ansible -i multinode all -m ping
network_interface = 해당 서버내부 data nic 명칭
api_interface = 해당 서버 내부 mgmt. nic 명칭
neutron_external_interface = 해당 서버 서비스망 nic 명칭
kolla_external_vip_interface = 해당 서버 서비스망 nic 명칭
storage_interface = 해당 서버 스토리지 nic 명칭
tunnel_interface = 해당 서버내부 data nic 명칭


$ vim /root/inventory/multimode

[control]
controller01 network_interface=eno5 api_interface=eno4 neutron_external_interface=eno3 kolla_external_vip_interface=eno3
controller02 network_interface=eno5 api_interface=eno4 neutron_external_interface=eno3 kolla_external_vip_interface=eno3
controller03 network_interface=eno2 api_interface=eno3 neutron_external_interface=eno4 kolla_external_vip_interface=eno4

[network]
controller01 network_interface=eno5 api_interface=eno4 neutron_external_interface=eno3 kolla_external_vip_interface=eno3
controller02 network_interface=eno5 api_interface=eno4 neutron_external_interface=eno3 kolla_external_vip_interface=eno3
controller03 network_interface=eno2 api_interface=eno3 neutron_external_interface=eno4 kolla_external_vip_interface=eno4
		
[compute]
compute01 network_interface=eno2 api_interface=eno3 storage_interface=eno1 tunnel_interface=eno2
compute02 network_interface=eno2 api_interface=eno3 storage_interface=eno1 tunnel_interface=eno2

[monitoring]
controller01 network_interface=eno5 api_interface=eno4 neutron_external_interface=eno3 kolla_external_vip_interface=eno3
controller02 network_interface=eno5 api_interface=eno4 neutron_external_interface=eno3 kolla_external_vip_interface=eno3
controller03 network_interface=eno2 api_interface=eno3 neutron_external_interface=eno4 kolla_external_vip_interface=eno4
		
[storage]
controller01 network_interface=eno5 api_interface=eno4 neutron_external_interface=eno3 kolla_external_vip_interface=eno3
controller02 network_interface=eno5 api_interface=eno4 neutron_external_interface=eno3 kolla_external_vip_interface=eno3
controller03 network_interface=eno2 api_interface=eno3 neutron_external_interface=eno4 kolla_external_vip_interface=eno4

 

   4.2 Kolla 파일 설정(globals.yml)

$ vim /etc/kolla/global.yml

kolla_base_distro: "centos"                           ### OS 선택
kolla_install_type: "binary"                          ### type 선택
openstack_release: "stein"                            ### Openstack 설치 버전
kolla_internal_vip_address: "172.16.0.X"             ### 내부 VIP 작성
kolla_external_vip_address: "192.168.10.X"           ### 외부 VIP 작성
enable_mariadb: "yes"                                 ### DB 설치 확인
enable_cinder: "yes"                                  ### NFS 설정 사용
enable_cinder_backend_nfs: "yes"                      ### NFS 설정 사용
enable_neutron_lbaas: “no”                            ### 아래 참고
enable_openvswitch: "no"                              ### OVS 설치 안함

### enable_neutron_lbaas는 Stein버전에서는 사용하지 않으며, Octavia로 프로젝트 변경되었기에 “no”로 설정 및 Openstack 설치 이후 Octavia 추가 설정, 설치를 진행한다.

### 그 외 다른 프로젝트 설치 및 사용 요구시 추가적으로 yes 변경하여 사용
enable_aodh: “yes”
enable_ceilometer: “yes”
enable_gnocchi: “yes”
enable_magnum: “yes”
enable_murano: “yes”
### 등등….

### MariaDB를 Docker가 아닌 서버 직접 설치시 다음과 같이 설정한다.
enable_mariadb: "no"
enable_external_mariadb_load_balancer: yes
database_address: "서버 내부 VIP"
database_password: openstack                 ### DB root 계정 암호

 

   4.3 Kolla 파일 설정(password.yml)

$ kolla-genpwd

$ vim /etc/kolla/passwords.yml
database_password: openstack                          ### DB 접속 암호 설정
keystone_admin_password: openstack                    ### horizon 암호
cinder_database_password: openstack                   
glance_database_password: openstack
heat_database_password: openstack
horizon_database_password: openstack
magnum_database_password: openstack                   
mariadb_backup_database_password: openstack
neutron_database_password: openstack                  
nova_api_database_password: openstack                 
nova_database_password: openstack                     
placement_database_password: openstack

 

5. Kolla 및 Openstack 설치

  5.1 프레임워크 설치

$ kolla-ansible -i ~/inventory/multinode bootstrap-servers         **//multimode의** **경우** 

### 위 명령을 실행하여 [baremetal : Install apt packages]에서 docker-engine 에러가 발생할 경우, 도커가 제대로 설치 되지 않은 것이므로 docker를 완전히 삭제한다.

$ rpm -e docker-engine

$ rm -fR /var/lib/docker

### 도커가 완전히 삭제되었는지 확인하고, 남아 있다면 pip uninstall 을 통해 지운다.

$ pip list | grep docker

$ rpm -qa | grep docker

$ kolla-ansible -i ~/inventory/multinode prechecks

### 바로 ‘4.3 Openstack 배포’를 해도 자동으로 이미지 받아서 설치함

$ kolla-ansible  -i ~/inventory/multinode pull

### 바로 ‘4.3 Openstack 배포’를 해도 자동으로 이미지 받아서 설치함

$ kolla-ansible -i ~/inventory/multinode deploy

### Openstack Container 모두 삭제 명령어

$ kolla-ansible -i ~/inventory/multinode destroy --yes-i-really-really-mean-it

 

   5.2 Openstack CLI Install

$ kolla-ansible post-deploy

$ pip install python-openstackclient

$ openstack --version

$ source /etc/kolla/admin-openrc.sh

 

   5.3 기본 세팅 파일

$ mkdir -p /etc/kolla/config/nfs_shares
NASIP:/cinder


### Controller 서버
$ vim /etc/fstab
NASIP:/cinder         /var/lib/docker/volumes/cinder/_data/mnt/fa11b71731c13623a6035ee69402eaf3       nfs defaults,_netdev 0 0
NASIP:/cinder_backup  /var/lib/docker/volumes/cinder/_data/backup/62683d11af0ec8d6492d59f5e90e1e80    nfs defaults,_netdev 0 0
NASIP:/glance         /var/lib/docker/volumes/glance/_data/images                                     nfs defaults,_netdev 0 0
		
### Compute 서버

$ vim /etc/fstab
NASIP:/nova /var/lib/docker/volumes/nova_compute/_data/instances nfs defaults,_netdev 0 0
반응형