2022-10-27
#5 [학습서] OpenStack 설치 학습서 - 2.환경설정 (1/2)
2022-10-27
Tasks

OpenStack 설치 학습서#


2. 환경설정#

이 장에서는 OpenStack을 설치하기 위한 Controller node와 Compute node의 환경설정을 진행합니다.

각 노드를 구성학 위해서는 관리자 권한이 있는 계정이 요구되며, 사용자는 sudo 명령을 사용하거나 root 계정에서 유틸리티를 실행하시길 바랍니다.

  • 사용자 권한

    sudo su
    
  • 보안

    • OpenStack에는 다양한 서비스들이 설치되어 있으며, 해당 서비스마다 비밀번호를 다르게 설정할 수 있습니다.
    • 다만, 본 학습서에서는 빠른 OpenStack학습을 위해서 하나의 비밀번호를 설정하여 사용합니다.
      OPENSTACK_PASSWORD=passwds
      
  • 환경설정 설치 목록은 다음과 같습니다.

    • Apt packages
    • Host Networking
    • Network time protocol (NTP)
    • OpenStack packages
    • SQL database
    • Message queue
    • Memcached
    • Etcd

2.1. 기본 APT 패키지#

OpenStack 인프라를 구성하기 전에 모든 노드에 기본 패키지를 설치하고 업데이트를 진행합니다.

  • APT update & upgrade

    sudo apt update
    sudo apt upgrade -y
    
  • 기본 패키지 설치

    sudo apt install -y git vim curl wget build-essential python3-pip python-is-python3
    
    • controller2.png
  • 추가 패키지 설치

    # Install simplejson
    pip install simplejson
    pip install --ignore-installed simplejson  
    
    # Install crudini
    wget https://github.com/pixelb/crudini/releases/download/0.9.3/crudini-0.9.3.tar.gz
    tar xvf crudini-0.9.3.tar.gz
    mv crudini-0.9.3/crudini /usr/bin/
    pip3 install iniparse  
    rm -rf crudini-0.9.3 crudini-0.9.3.tar.gz
    
    • controller3.png

    simplejson을 설치하지 않을 경우, OpenStack 설치 시 오류가 발생할 수 있습니다.
    crudini는 OpenStack의 설정을 커맨드라인을 통해 변경하기 위해서 설치합니다. 커맨드라인을 사용하지 않을 경우 vim을 이용하여 직접 수정하시길 바랍니다.


2.2. Host Networking#

OpenStack 인프라를 구성하기 위해서 가정 먼저 구성되어야 하는 부분은 기본 네트워크 설정입니다. 이 예제에서는 192.168.0.0/24 대역을 이용하여 OpenStack 인프라의 네트워크를 구성합니다.

네트워크 구성을 위해 Controller node와 Compute node의 인터페이스를 수정해주고, 호스트이름을 변경합니다.

  • Controller node

    • 사전 설정
      # controller node의 IP와 hostname 설정
      CONTROLLER_IP=192.168.0.150    
      CONTROLLER_HOSTNAME=Controller
      CONTROLLER_INTERFACE=eth0
      # compute node의 IP와 hostname 설정
      COMPUTE_IP_1=192.168.0.151
      COMPUTE_HOSTNAME_1=Compute-1
      COMPUTE_IP_2=192.168.0.152
      COMPUTE_HOSTNAME_2=Compute-2    
      COMPUTE_INTERFACE=eth0
      
    • 네트워크 패키지 다운로드
      sudo apt install net-tools -y
      
    • /etc/hosts 수정
      sed -i "s/127.0.1.1/\#127.0.1.1/" /etc/hosts
      echo "${CONTROLLER_IP} ${CONTROLLER_HOSTNAME}" >> /etc/hosts
      echo "${COMPUTE_IP_1} ${COMPUTE_HOSTNAME_1}" >> /etc/hosts
      echo "${COMPUTE_IP_2} ${COMPUTE_HOSTNAME_2}" >> /etc/hosts
      
    • hostname 변경
      sudo hostnamectl set-hostname ${CONTROLLER_HOSTNAME}
      
      • controller5.png
    • 인터페이스 수정
      mkdir -p /etc/network
      touch /etc/network/interfaces
      echo "auto ${CONTROLLER_INTERFACE}" >> /etc/network/interfaces
      echo "iface ${CONTROLLER_INTERFACE} inet manual" >> /etc/network/interfaces
      echo "up ip link set dev ${CONTROLLER_INTERFACE} up" >> /etc/network/interfaces
      echo "down ip link set dev ${CONTROLLER_INTERFACE} down" >> /etc/network/interfaces
      
  • Compute node

    Compute node1과 2에서 동일하게 설정하시길 바랍니다.

    • 사전 설정
      # controller node의 IP와 hostname 설정
      CONTROLLER_IP=192.168.0.150
      CONTROLLER_HOSTNAME=Controller
      CONTROLLER_INTERFACE=eth0
      # compute node의 IP와 hostname 설정
      COMPUTE_IP_1=192.168.0.151
      COMPUTE_HOSTNAME_1=Compute-1
      COMPUTE_IP_2=192.168.0.152
      COMPUTE_HOSTNAME_2=Compute-2    
      COMPUTE_INTERFACE=eth0
      
    • 네트워크 패키지 다운로드
      sudo apt install net-tools -y
      
    • /etc/hosts 수정
      sed -i "s/127.0.1.1/\#127.0.1.1/" /etc/hosts
      echo "${CONTROLLER_IP} ${CONTROLLER_HOSTNAME}" >> /etc/hosts
      echo "${COMPUTE_IP_1} ${COMPUTE_HOSTNAME_1}" >> /etc/hosts
      echo "${COMPUTE_IP_2} ${COMPUTE_HOSTNAME_2}" >> /etc/hosts
      
    • hostname 변경
      # sudo hostnamectl set-hostname ${호스트이름}
      # controller node 일때
      sudo hostnamectl set-hostname ${CONTROLLER_HOSTNAME}
      # compute node1 일때
      sudo hostnamectl set-hostname ${COMPUTE_HOSTNAME_1}
      # compute node2 일때
      sudo hostnamectl set-hostname ${COMPUTE_HOSTNAME_2}
      
    • 인터페이스 수정
      mkdir -p /etc/network
      touch /etc/network/interfaces
      echo "auto ${COMPUTE_INTERFACE}" >> /etc/network/interfaces
      echo "iface ${COMPUTE_INTERFACE} inet manual" >> /etc/network/interfaces
      echo "up ip link set dev ${COMPUTE_INTERFACE} up" >> /etc/network/interfaces
      echo "down ip link set dev ${COMPUTE_INTERFACE} down" >> /etc/network/interfaces
      
    • 연결 확인
      ping -c 4 Controller
      
      • compute2.png

2.3. Network Time Protocol (NTP)#

노드 간에 서비스를 적절하게 동기화하기 위해 NTP(Chrony)를 설치합니다. controller node에 해당 패키지를 설치하고 compute node가 참조할 수 있도록 구성합니다.

  • Controller node

    • 사전 설정
      PROVIDER_NETWORK=192.168.0.0/24
      
    • chrony 설치
      apt install -y chrony
      echo "server 0.asia.pool.ntp.org iburst" >> /etc/chrony/chrony.conf    
      echo "allow ${PROVIDER_NETWORK}" >> /etc/chrony/chrony.conf
      sudo service chrony restart
      
      • controller6.png
  • Compute node

    • 사전 설정
      CONTROLLER_IP=192.168.0.150
      
    • chrony 설치
      apt install chrony -y
      echo "server ${CONTROLLER_IP} iburst" >> /etc/chrony/chrony.conf    
      sudo service chrony restart
      chronyc sources
      
    • 작동 확인
      chronyc sources
      
      • compute3.png

2.4. OpenStack packages#

OpenStack 패키지 배포판은 릴리즈 버전이 다르므로 본 학습서에서는 Xena버전을 사용합니다.

  • 모든 node 설치
    • Xena for Ubuntu 20.04 LTS
      add-apt-repository cloud-archive:xena -y
      apt-get update
      apt install python3-openstackclient -y
      
Comment 0

Add a comment