#6 [학습서] OpenStack 설치 학습서 - 2.환경설정 (2/2)
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
- 사전 설정
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
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'
서비스 확인
sudo systemctl daemon-reload sudo systemctl enable etcd2 sudo systemctl restart etcd2
Comment 0
Add a comment