티스토리 뷰

목차



    반응형

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