반응형

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
반응형
반응형

Ussuri Version - MariaDB

  • mysql Ver 15.1 Distrib 10.3.32-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2

Docker version

  • Docker version 20.10.11, build dea9396

 

1. 물리 환경 및 네트워크 구성

1.1 물리 환경

  • 4 Network Interface(External, MGMT, DATA, STORAGE)
  • 8GB Main Memory
  • 40GB Disk Space

Openstack kolla-ansible Version 10.4.0(Ussuri)

OS Ubuntu 18.04.5
NIC External, MGMT, DATA, STORAGE

 

1.2 네트워크 설정

1) root 계정 활성화

# root 계정 암호 설정 및 로그인
$ sudo passwd root

 

2) 방화벽 중지

$ ufw disable
$ ufw status
Status: inactive

 

3) 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

 

4) SSH 키 분배

$ ssh-keygen -t rsa
$ ssh-copy-id root@hosts

 

5) OVS 설치 및 설정

$ apt install openvswitch-switch

$ systemctl status openvswitch-switch

$ vim /lib/systemd/system/ovsdb-server.service

### Unit 기존 주석 및 신규 Unit 추가
### 이유 : 재부팅시 OVS 브릿지 보다 일반 네트워크가 먼저 올라와 브릿지 인터페이스가 시작되지 않음

#[Unit]
#Description=Open vSwitch Database Unit
#After=syslog.target network-pre.target
#Before=network.target network.service
#ReloadPropagatedFrom=openvswitch-switch.service
#PartOf=openvswitch-switch.service

[Unit]
Description=Open vSwitch Database Unit
After=syslog.target network-pre.target dpkg.service local-fs.target
Before=network.target network.service
PartOf=openvswitch-switch.service
DefaultDependencies=no

[Service]
LimitNOFILE=1048576
Type=forking
Restart=on-failure
EnvironmentFile=-/etc/default/openvswitch-switch
ExecStart=/usr/share/openvswitch/scripts/ovs-ctl \\
--no-ovs-vswitchd --no-monitor --system-id=random \\
start $OVS_CTL_OPTS
ExecStop=/usr/share/openvswitch/scripts/ovs-ctl --no-ovs-vswitchd stop
ExecReload=/usr/share/openvswitch/scripts/ovs-ctl --no-ovs-vswitchd \\
--no-monitor restart $OVS_CTL_OPTS
RuntimeDirectory=openvswitch
RuntimeDirectoryMode=0755

 

6) NAS 연결 패키지 설치 및 시간 설정

$ apt-get install nfs-kernel-server

$ mkdir -p /etc/kolla/config/nfs_shares

$ vim /etc/kolla/config/nfs_shares

NASIP:/NFS/os/cinder

$ timedatectl set-timezone 'Asia/Seoul'

 

7) networking 서비스 사용을 위한 패키지 설치

$ apt-get install ifupdown
$ vim /etc/network/interfaces 

### Interface 확인 및 브릿지 설정
auto lo
iface lo inet loopback

#####################
External 네트워크 세팅 
#####################
auto br-ex
allow-ovs br-ex
iface br-ex inet static
address 192.168.0.X ~ 192.168.0.XX
netmask 255.255.255.0
gateway 192.168.0.X
dns-nameservers 8.8.8.8
ovs_type OVSBridge
ovs_ports enp26s0f1

auto enp26s0f1
allow-br-ex enp26s0f1
iface enp26s0f1 inet manual
ovs_bridge br-ex
ovs_type OVSPort

#####################
DATA 네트워크 세팅 - 사설망
#####################
auto br-int
allow-ovs br-int
iface br-int inet static
address 172.22.0.1 ~ 172.22.0.12
netmask 255.255.255.0
ovs_type OVSBridge
ovs_ports br-int

auto enp24s0f0
allow-br-int enp24s0f0
iface enp24s0f0 inet static
address 172.22.0.101 ~ 172.22.0.112
netmask 255.255.255.0
ovs_bridge br-int
ovs_type OVSPort

#####################
MGMT 네트워크 세팅 - 사설망
#####################
auto eno1
iface eno1 inet static
address 172.21.0.1 ~ 172.21.0.12
netmask 255.255.255.0

#####################
STORAGE 네트워크 세팅 - 사설망
#####################
auto enp26s0f0
iface enp26s0f0 inet static
address 172.18.0.1 ~ 172.18.0.12

 

8) modprobe 설정

$ modprobe ip_vs

$ modprobe ip6_tables

$ vi /etc/modules-load.d/ip_vs.conf
ip_vs

$ vi /etc/modules-load.d/ip6_tables.conf
ip6_tables

 

9) 파이썬 버전 설정

### 파이썬 3버전 설정
$ sudo update-alternatives --install /usr/bin/python python /usr/bin/python2.7 1

$ sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.6 2

$ update-alternatives --config python

 

2. Kolla 설치 준비 & 설치

2.1 Kolla 의존성 설치

$ apt-get install python3-dev libffi-dev gcc libssl-dev

$ pip3 install ‘ansible<2.10’

$ pip3 install ansible==2.9.6

$ apt install ansible

$ vim /etc/ansible/ansible.cnf

[defaults]
forks          = 100
host_key_checking = False

[ssh_connection]
pipelining = True

 

2.2 Kolla 설치

$ pip install 'kolla-ansible==10.4.0' --ignore-installed PyYAML

$ cp -r /usr/local/share/kolla-ansible/etc_examples/kolla /etc/

$ cp -r /usr/local/share/kolla-ansible/ansible/inventory/ /root/

 

2.3 Kolla 설정 파일 세팅(1)

<컨트롤노드 호스트명> network_interface=<내부물리NIC이름> neutron_external_interface=<외부물리NIC이름> kolla_external_vip_interface=<외부물리NIC이름>
<컴퓨트노드 호스트명> network_interface=<내부물리NIC이름> api_interface=<관리(없는 경우 내부 물리)NIC이름> storage_interface=<내부물리NIC이름> tunnel_interface=<내부물리NIC이름>

$ cd /root/inventory
$ vim /root/inventory/multinode

# 그 외 설치 패키지에 따라 세팅 변경

[control]
controller01 network_interface=enp24s0f0 api_interface=eno1 neutron_external_interface=enp26s0f1 kolla_external_vip_interface=enp26s0f1
controller02 network_interface=enp24s0f0 api_interface=eno1 neutron_external_interface=enp26s0f1 kolla_external_vip_interface=enp26s0f1
controller03 network_interface=enp24s0f0 api_interface=eno1 neutron_external_interface=enp26s0f1 kolla_external_vip_interface=enp26s0f1

[network]
controller01 network_interface=enp24s0f0 api_interface=eno1 neutron_external_interface=enp26s0f1 kolla_external_vip_interface=enp26s0f1
controller02 network_interface=enp24s0f0 api_interface=eno1 neutron_external_interface=enp26s0f1 kolla_external_vip_interface=enp26s0f1
controller03 network_interface=enp24s0f0 api_interface=eno1 neutron_external_interface=enp26s0f1 kolla_external_vip_interface=enp26s0f1

[compute]
compute01 network_interface=enp24s0f0 api_interface=eno1 storage_interface=enp26s0f0 tunnel_interface=enp24s0f0
compute02 network_interface=enp24s0f0 api_interface=eno1 storage_interface=enp26s0f0 tunnel_interface=enp24s0f0
compute03 network_interface=enp24s0f0 api_interface=eno1 storage_interface=enp26s0f0 tunnel_interface=enp24s0f0

[monitoring]
controller01 network_interface=enp24s0f0 api_interface=eno1 neutron_external_interface=enp26s0f1 kolla_external_vip_interface=enp26s0f1
controller02 network_interface=enp24s0f0 api_interface=eno1 neutron_external_interface=enp26s0f1 kolla_external_vip_interface=enp26s0f1
controller03 network_interface=enp24s0f0 api_interface=eno1 neutron_external_interface=enp26s0f1 kolla_external_vip_interface=enp26s0f1

[storage]
controller01 network_interface=enp24s0f0 api_interface=eno1 neutron_external_interface=enp26s0f1 kolla_external_vip_interface=enp26s0f1
controller02 network_interface=enp24s0f0 api_interface=eno1 neutron_external_interface=enp26s0f1 kolla_external_vip_interface=enp26s0f1
controller03 network_interface=enp24s0f0 api_interface=eno1 neutron_external_interface=enp26s0f1 kolla_external_vip_interface=enp26s0f1

 

2.4 Kolla 설정 파일 세팅(2)

### Octavia 설치시 미리 함께 설치해놓기

$ vim /etc/kolla/globals.yml

# enable_cinder_backend_lvm: "yes"  //cinder에 사용할 디스크가 lvm인 경우 yes
# enable_cinder_backend_nfs: "yes"  // cinder에 사용할 디스크가 nfs인 경우 yes
# enable_mariabackup: "yes"         //mariadb 백업 기능 사용 시 yes 
# enable_neutron_provider_networks: "yes" # Octavia 설치 시 yes

config_strategy: "COPY_ALWAYS"
kolla_base_distro: "ubuntu"
kolla_install_type: "source"
openstack_release: "ussuri"
kolla_internal_vip_address: "172.21.0.100"
kolla_external_vip_address: "192.168.0.X"
enable_openstack_core: "yes"
enable_glance: "{{ enable_openstack_core | bool }}"
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_chrony: "yes"
enable_cinder: "yes"
enable_cinder_backup: "yes"
enable_cinder_backend_nfs: "yes"
enable_fluentd: "yes"
enable_heat: "{{ enable_openstack_core | bool }}"
enable_horizon: "{{ enable_openstack_core | bool }}"
enable_horizon_heat: "{{ enable_heat | bool }}"
enable_horizon_octavia: "yes"
enable_neutron_provider_networks: "yes"
enable_nova_ssh: "yes"
enable_octavia: "yes"
enable_openvswitch: "no"
enable_ovn: "{{ enable_neutron | bool and neutron_plugin_agent == 'ovn' }}"
enable_placement: "{{ enable_nova | bool or enable_zun | bool }}"
glance_backend_file: "yes"

# Valid options are [ nfs, swift, ceph ]
cinder_backup_driver: "nfs"
cinder_backup_share: "NASIP:/cinder_backup"
#cinder_backup_mount_options_nfs: "vers=3"

nova_compute_virt_type: "kvm"
nova_console: "novnc"
###########################################################
Octavia Setting list - Octavia 추후 설치시 세팅 이후 재배포
###########################################################
octavia_loadbalancer_topology: "ACTIVE_STANDBY"
octavia_amp_flavor_id: "100"
octavia_amp_boot_network_list: "b19eb298-78bf-4e7a-a373-3ab7d3d46bad"
octavia_amp_secgroup_list: "2934a87d-28b6-4960-9272-2adb9b4c3c43"

### Yes 목록 확인
$ grep -vE '^$|^#' /etc/kolla/globals.yml

 

2.5 Kolla 설정 파일 세팅(3)

$ kolla-genpwd
$ vim /etc/kolla/passwords.yml 

# DB 접속 시 편의를 위해 설치할 서비스들의 (서비스명)_database_password 를 “openstack” (혹은 사용할 패스워드) 로 변경. 

Database_password: openstack //mariaDB 패스워드 변경 (원하는 패스워드)
Keystone_admin_password: openstack //web 접속 시 admin의 password

#아래는 Octavia 설치 시 변경
Octavia_ca_password: openstack
Octavia_database_password: openstack
Octavia_keystone_password: openstack

 

3. Openstack 설치

3.1 Openstack 배포

$ cd ~/inventory 
$ kolla-ansible -i inventory/multinode bootstrap-servers 
$ kolla-ansible -i inventory/multinode prechecks -vvv 
$ kolla-ansible -i inventory/multinode deploy -vvv

 

4. Openstack 초기 설정

### Neutron MTU 값 설정

$ vim /etc/kolla/neutron-dhcp-agent/dnsmasq.conf
dhcp-option-force=option:mtu,1400

또는
log-facility=/var/log/kolla/neutron/dnsmasq.log
dhcp-option-force=26,1400

$ docker restart neutron_dhcp_agent

### Openstack CLI 설정
$ pip3 install python-openstackclient --ignore-installed PyYAML

### Warning 시 아래와 같이 해결 - 기능상 문제는 없음
$ pip3 install cryptography==3.3.2

### admin-openrc.sh 생성
$ kolla-ansible post-deploy
$ . /etc/kolla/admin-openrc.sh

### /etc/fstab 설정
$ vim /etc/fstab
NASIP:/glance /var/lib/docker/volumes/glance/_data/images nfs defaults,_netdev 0 0 
NASIP:/nova /var/lib/docker/volumes/nova_compute/_data/instances nfs defaults,_netdev 0 0

 

  • 자동 스크립트 네트워크, 라우터 등 생성
### 자동 스크립트 파일
### public network, private network, router, security group, flavor, cirros image 자동 생성
### 한번 잘못 실행시 자원 다 지우고 cirros.img 도 삭제 이후 다시 가능

$ cp /usr/local/share/kolla-ansible/init-runonce /root/inventory/
$ cd /root/inventory

# init-runonce 파일을 수정(public 네트워크 대역을 맞게 수정)
$ vim init-runonce 
… 
# External network 생성을 위한 IP 대역, 범위, Gateway수정. 
ENABLE_EXT_NET=${ENABLE_EXT_NET:-1}
EXT_NET_CIDR='192.168.0.0/24'
EXT_NET_RANGE='start=192.168.0.X,end=192.168.0.XX'
EXT_NET_GATEWAY='192.168.0.X'

  # 위에서 정의된 내용으로 External network 생성
openstack network create --external --provider-physical-network physnet1 --provider-network-type flat public1
openstack subnet create --no-dhcp --allocation-pool ${EXT_NET_RANGE} --network public1 --subnet-range ${EXT_NET_CIDR} –gateway ${EXT_NET_GATEWAY} public1-subnet

# Internal Network 생성 (demo-net이라는 이름으로 네트워크 생성됨. 이름 수정가능)
openstack network create --provider-network-type vxlan demo-net
openstack subnet create --subnet-range 10.0.0.0/24 --network private-net --gateway 10.0.0.1 --dns-nameserver 8.8.8.8 demo-subnet

# router 생성 및 위에서 생성한 subnet을 라우터에 연결(demo-router 라는 이름으로 라우터 생성됨.)
openstack router create demo-router
openstack router add subnet demo-router demo-subnet
if [[ $ENABLE_EXT_NET -eq 1 ]]; then
  openstack router set --external-gateway public1 demo-router
# host의 공개키(id_rsa.pub)로 mykey라는 keypair를 생성하므로, host에서 별도의 키 지정이나 인증없이 mykey를 이용하여 생성한 vm으로 바로 ssh 접속 가능.
openstack keypair create --public-key ~/.ssh/id_rsa.pub mykey

# 수정 후 init-runonce 스크립트 실행 
$ . init-runonce

 

  • 수동 스크립트 네트워크, 라우터 등 생성
# External네트워크 생성
$ openstack network create --external --provider-physical-network physnet1 --provider-network-type flat public1

# External 서브넷 생성 
$ openstack subnet create --no-dhcp --allocation-pool start=192.168.0.X,end=192.168.0.XX --network public1 --subnet-range 192.168.0.X/24 –gateway 192.168.0.X public1-net

# Internal 네트워크 생성
$ openstack network create private-net 

# Internal 서브넷 생성 
$ openstack subnet create --subnet-range 10.10.0.0/24 --network private-net --gateway 10.0.0.1 --dns-nameserver 8.8.8.8 private-subnet

# 라우터 생성
$ openstack router create router1

# 라우터에 서브넷 연결
$ openstack router add subnet router1 private-subnet

# 라우터의 외부 게이트웨이를 public 네트워크로 설정. 
$ openstack router set --external-gateway public1-net router1

 

반응형
반응형

Openstack Install Guide(Victoria - CentOS)

  • CentOS 8.2 환경 기준 설치

 

1. OS 환경

1.1 CentOS 8.2

1.2 All-in-One 기준 구성

1.3 기본적으로 네트워크 외부 통신 연결 가능상태

1.4 네트워크 포토 최소 2~4개 필요

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

2.3 SSH KEY 설정

  • 모든 서버 동시 수행
$ ssh-keygen -t rsa
$ ssh-copy-id root@{모든 서버}

 

2.4 SELINUX 비활성화

$ vim /etc/selinux/config

  SELINUX=disabled

$ reboot

 

2.5 Openvswitch 설치 및 패키지 설치

$ dnf install epel-release -y

$ dnf install python3-devel libffi-devel gcc openssl-devel python3-libselinux -y

$ dnf install python3-pip -y

$ pip3 install -U pip

$ dnf install ansible        ### (==2.9.18)  
### 2021.03.30 2.9.18 ansible version 설치
### 2021.07.02 2.9.23 ansible version 설치

$ pip3 install 'ansible==2.9.18'

### $ yum install -y centos-release-openstack-victoria  ### 참고
-> OVS 설치 레포

$ yum install -y openvswitch

$ modprobe ip_vs

$ modprobe ip6_tables

$ modprobe openvswitch

$ vi /etc/modules-load.d/ip_vs.conf 
   ip_vs 

$ vi /etc/modules-load.d/ip6_tables.conf 
   ip6_tables

$ systemctl enable openvswitch

$ systemctl start openvswitch

$ yum install network-scripts

### centos7 과 동일 하게 사용
$ service network start  

3. Openstack 설치 구성

3.1 Openstack 설치 패키지 구성

 

### kolla-ansible 구성 설치

### Openstack Victoria 버전 
$ pip3 install kolla-ansible==11.0.0   


### ERROR: Cannot uninstall 'PyYAML'. It is a distutils installed project and thus we cannot accurately determine which files belong to it which would lead to only a partial uninstall.

### 에러 발생시 대처
$ pip3 install --ignore-installed PyYAML

$ mkdir -p /etc/kolla

$ cp -r /usr/local/share/kolla-ansible/etc_examples/kolla/* /etc/kolla

$ cp -r /usr/local/share/kolla-ansible/ansible/inventory/ /root/


$ vim /etc/ansible/ansible.cfg
 [defaults]
 host_key_checking=False
 pipelining=True
 forks=100

3.2 All-in-One 노드 설정

$ cd /root/inventory 

### localhost -> {hostname} 으로 변경
$ sed -i s/localhost/호스트네임/g all-in-one

$ vim /root/inventory/all-in-one
[control]
all01       ansible_connection=local

[network]
all01       ansible_connection=local

[compute]
all01       ansible_connection=local

[storage]
all01       ansible_connection=local

[monitoring]
all01       ansible_connection=local

[deployment]
all01       ansible_connection=local

 

3.3 Kolla globals.yml 파일 설정

**### All-in-One 경우**
$ vim /etc/kolla/globals.yml

kolla_base_distro: "centos"           ### Docker 운영체제 선택  
kolla_install_type: "source"          ### Source, binary 설치 선택 
openstack_release: "victoria"         ### openstack 선택

kolla_internal_vip_address: "10.10.10.10"      ### 관리 network VIP 입력, 관리 network가 따로 없는 경우에는 Internal network VIP  
kolla_external_vip_address: "192.168.0.XXX"  ### External Network VIP 
network_interface: "enp1s0f1"                  ### 내부 물리 NIC (internal network(data))
kolla_external_vip_interface: "enp1s0f0"       ### 외부 물리 NIC
api_interface: "enp1s0f2"                      ### 관리 NIC (관리 네트워크 없는 경우 =network_interface) 
octavia_network_interface: "enp1s0f0"          ### 외부 물리 NIC
neutron_external_interface: "enp1s0f0"         ### 외부 물리 NIC

# 사용할 서비스를 enable(주석 해제, yes)하면됨. 
enable_cinder: "yes"
enable_cinder_backup: "yes"
# enable_cinder_backend_lvm: "yes"  # cinder에 사용할 디스크가 lvm인 경우 yes
# enable_cinder_backend_nfs: "yes"  # cinder에 사용할 디스크가 nfs인 경우 yes
# enable_horizon_neutron_lbaas: "no"# Octavia 설치 시 no 
# enable_horizon_octavia: "yes"     # Octavia 설치 시 yes
# enable_mariabackup: "yes"         # mariadb 백업 기능 사용 시 yes 
# enable_neutron_lbaas: "yes"       # Octavia 설치 시 yes
enable_openstack_core: "yes"
enable_openvswitch: "no" 
glance_enable_rolling_upgrade: "no"
nova_compute_virt_type: "kvm"       # vmware 등 가상환경에 설치 시 qemu로 변경

# database_port: 33306              # mariadb port를 변경하고 싶은 경우    

################################
# Cinder - Block Storage Options
################################

# Cinder backup 디스크가 NFS 인 경우 수정
# Valid options are [ nfs, swift, ceph ]
cinder_backup_driver: "nfs"
cinder_backup_share: "NASIP:/nfs/cinder_backup"
cinder_backup_mount_options_nfs: "vers=3"

# 입력한 정보 확인
$ grep -vE '^$|^#' /etc/kolla/globals.yml

### Multinode 경우
$ vim /etc/kolla/globals.yml

###############
# Kolla options
############### 
kolla_base_distro: "centos"  //docker에 올릴 운영체제
kolla_install_type: "source":Lq
openstack_release: "stein"   //openstack 버전 이름

kolla_internal_vip_address: "172.16.0.250" # 관리 network VIP /관리 network가 따로 없는 경우에는 Internal network VIP를 입력
kolla_external_vip_address: "192.168.0.XXX" # External Network VIP

# Multimode 파일에 NIC 인터페이스를 정의하였으므로 설정할 필요 X


# 사용할 서비스를 enable(주석 해제, yes)하면됨. 
enable_cinder: "yes"
enable_cinder_backup: "yes"
# enable_cinder_backend_lvm: "yes"  //cinder에 사용할 디스크가 lvm인 경우 yes
# enable_cinder_backend_nfs: "yes"  // cinder에 사용할 디스크가 nfs인 경우 yes
# enable_horizon_neutron_lbaas: "no"//Octavia 설치 시 no 
# enable_horizon_octavia: "yes"     //Octavia 설치 시 yes
# enable_mariabackup: "yes"         //mariadb 백업 기능 사용 시 yes 
# enable_neutron_lbaas: "yes"       //Octavia 설치 시 yes
enable_openstack_core: "yes"
enable_openvswitch: "no" 
glance_enable_rolling_upgrade: "no"
nova_compute_virt_type: "kvm"       //vmware 등 가상환경에 설치 시 qemu로 변경


################################
# Cinder - Block Storage Options
################################

# Cinder backup 디스크가 NFS 인 경우 수정
# Valid options are [ nfs, swift, ceph ]
cinder_backup_driver: "nfs"
cinder_backup_share: "NASIP:/nfs/cinder_backup"
cinder_backup_mount_options_nfs: "vers=3"

3.4 Kolla Password 설정

$ kolla-genpwd


### Openstack 서비스들의 암호를 설정하는것
$ vim /etc/kolla/passwords.yml
Database_password: openstack ### MariaDB 접속 암호 설정
Keystone_admin_password: openstack ### Horizon 접속 암호 설정


### 하단 Octavia 설치시 암호 설정
Octavia_ca_password: openstack
Octavia_database_password: openstack
Octavia_keystone_password: openstack

### 추가 서비스들에 대하여 변경하여 사용 필요.

3.5 Cinder Volume 구성

$ pvcreate /dev/sdb1

### cinder-volumes 명칭으로 구성해야한다. 명칭 변경시 하단 변경 필요
$ vgcreate cinder-volumes /dev/sdb1

3.6 Openstack 설치

$ cd ~/inventory 

### All-in-One인 경우
$ kolla-ansible -i all-in-one bootstrap-servers 
$ kolla-ansible -i all-in-one prechecks -vvv 
$ kolla-ansible -i all-in-one deploy -vvv

###  MultiNode인 경우
$ kolla-ansible -i multinode bootstrap-servers
$ kolla-ansible -i multinode prechekcs -vvv
$ kolla-ansible -i multinode deploy -vvv
$ mount /dev/sdb /var/lib/docker/volumes/nova_compute/_data/instances

### 내부 디스크 사용시 instances 권한 42436으로 변경 필요
$ chown 42436:42436 /var/lib/docker/volumes/nova_compute/_data/instances

 

  • Openstack CLI 설치
$ kolla-ansible post-deploy
$ pip install python-openstackclient

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

 

  • Openstack Configuration
Openstack Router Failover

# vim /etc/kolla/neutron-l3-agent/neutron.conf
[Default]
allow_automatic_l3agent_failover = true

Openstack dnsmasq MTU 값 조정
# vim /etc/kolla/neutron-dhcp-agent/dnsmasq.conf
log-facility=/var/log/kolla/neutron/dnsmasq.log
dhcp-option-force=option:mtu,1400

# docker restart neutron_dhcp_agent

 

반응형

+ Recent posts