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

OpenStack 설치 학습서#


2. 환경설정#

2.5. SQL database#

OpenStack 서비스는 SQL database를 사용하여 정보를 저장합니다. 일반적으로 데이터베이스는 Controller node에서 실행합니다.

본 학습서에서는 MariaDB를 이용합니다.

  • Controller node
    • 사전 설정
      CONTROLLER_IP=192.168.0.150
    • MariaDB 설치
      sudo apt install -y mariadb-server python3-pymysql
      crudini --set /etc/mysql/mariadb.conf.d/99-openstack.cnf mysqld bind-address ${CONTROLLER_IP} 
      crudini --set /etc/mysql/mariadb.conf.d/99-openstack.cnf mysqld default-storage-engine innodb
      crudini --set /etc/mysql/mariadb.conf.d/99-openstack.cnf mysqld innodb_file_per_table on
      crudini --set /etc/mysql/mariadb.conf.d/99-openstack.cnf mysqld max_connections 4096
      crudini --set /etc/mysql/mariadb.conf.d/99-openstack.cnf mysqld collation-server utf8_general_ci
      crudini --set /etc/mysql/mariadb.conf.d/99-openstack.cnf mysqld character-set-server utf8
      service mysql restart
      echo -e "\ny\ny\nstack\nstack\ny\ny\ny\ny" | mysql_secure_installation
      sync
      • controller7.png
      • controller8.png

2.6. Message queue#

OpenStack은 Message queue을 사용하여 서비스 간의 작업 및 상태 정보를 조정합니다. Message queue는 일반적으로 Controller node에서 실행합니다.

본 학습서에서는 RabbitMQ를 이용합니다.

  • Controller node
    • 사전 설정
      # 본 학습서에는 비밀번호를 "passwds"로 작성한다.
      OPENSTACK_PASSWORD=passwds
    • RabbitMQ 설치
      apt install -y rabbitmq-server
      rabbitmqctl add_user openstack $OPENSTACK_PASSWORD
      rabbitmqctl set_permissions openstack ".*" ".*" ".*"

2.7. Memcached#

서비스에 대한 Identity 서비스 인증 메커니즘은 Memcached를 사용하여 토큰을 캐시합니다. memcached 서비스는 일반적으로 컨트롤러 노드에서 실행합니다.

  • Controller node
    • 사전 설정
      CONTROLLER_IP=192.168.0.150
    • Memcache 설치
      apt install -y memcached python3-memcache
      sed -i s/127.0.0.1/${CONTROLLER_IP}/ /etc/memcached.conf
      service memcached restart

2.8. Etcd#

OpenStack services는 키 잠금, 구성 저장, 서비스 활성 및 기타 시나리오 추적을 위한 key-value 저장소로 Etcd를 사용합니다. etcd 서비스는 컨트롤러 노드에서 실행합니다.

  • Controller node

    • 사전 설정

      CONTROLLER_IP=192.168.0.150
    • etcd 설치

      ARM CPU에서는 etcd의 경우 apt패키지로 설치에 어려움이 있어, 해당 패키지를 매뉴얼로 설치하시길 바랍니다.

      # 패키지 다운로드
      wget https://github.com/etcd-io/etcd/releases/download/v3.4.1/etcd-v3.4.1-linux-arm64.tar.gz
      tar -xvf etcd-v3.4.1-linux-arm64.tar.gz
      sudo cp etcd-v3.4.1-linux-arm64/etcd* /usr/bin/
      
      # 사용자 권한 생성
      sudo groupadd --system etcd
      sudo useradd --home-dir "/var/lib/etcd" \
              --system \
              --shell /bin/false \
              -g etcd \
              etcd
      sudo mkdir -p /etc/etcd
      sudo chown etcd:etcd /etc/etcd
      sudo mkdir -p /var/lib/etcd
      sudo chown etcd:etcd /var/lib/etcd
      • controller9.png
    • etcd 설정

      # 설정파일 편집
      sudo bash -c "cat << EOF >> /etc/default/etcd
      ETCD_NAME="controller"
      ETCD_DATA_DIR="/var/lib/etcd/default"
      ETCD_INITIAL_CLUSTER_STATE="new"
      ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster-01"
      ETCD_INITIAL_CLUSTER="controller=http://${CONTROLLER_IP}:2380"
      ETCD_INITIAL_ADVERTISE_PEER_URLS="http://${CONTROLLER_IP}:2380"
      ETCD_ADVERTISE_CLIENT_URLS="http://${CONTROLLER_IP}:2379"
      ETCD_LISTEN_PEER_URLS="http://0.0.0.0:2380"
      ETCD_LISTEN_CLIENT_URLS="http://${CONTROLLER_IP}:2379"
      EOF"
      
      # 서비스파일 편집
      sudo bash -c 'cat << EOF > /etc/systemd/system/etcd2.service
      [Unit]
      Description=etcd - highly-available key value store
      Documentation=https://github.com/coreos/etcd
      Documentation=man:etcd
      After=network.target -y
      Wants=network-online.target -y
      
      [Service]
      Environment=DAEMON_ARGS=
      Environment=ETCD_NAME=%H
      Environment=ETCD_DATA_DIR=/var/lib/etcd/default
      Environment="ETCD_UNSUPPORTED_ARCH=arm64"
      EnvironmentFile=-/etc/default/%p
      Type=notify
      User=etcd
      PermissionsStartOnly=true
      #ExecStart=/bin/sh -c "GOMAXPROCS=$(nproc) /usr/bin/etcd $DAEMON_ARGS"
      ExecStart=/usr/bin/etcd $DAEMON_ARGS
      Restart=on-abnormal
      #RestartSec=10s
      LimitNOFILE=65536
      
      [Install]
      WantedBy=multi-user.target -y
      Alias=etcd2.service
      EOF'
      • controller10.png
    • 서비스 확인

      sudo systemctl daemon-reload
      sudo systemctl enable etcd2
      sudo systemctl restart etcd2
Comment 0

Add a comment