参考URL
OpenStack Docs: Highly available Identity API
OpenStack Docs: Keystone Installation Tutorial
RabbitMQクラスタセットアップ実施後に、以下作業をコントローラ3台に実施する。
①DB作成
以下を1号機で実施
$ mysql -uroot -p[DB_PASSWORD] -e 'CREATE DATABASE keystone;' $ mysql -uroot -p[DB_PASSWORD] -e "GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' IDENTIFIED BY '[KEYSTONE_DB_PASSWORD]';" $ mysql -uroot -p[DB_PASSWORD] -e "GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY '[KEYSTONE_DB_PASSWORD]';"
パッケージインストール
$ sudo apt -y install keystone apache2 libapache2-mod-wsgi
設定ファイル編集
$ sudo crudini --set /etc/keystone/keystone.conf database connection 'mysql+pymysql://keystone:[KEYSTONE_DB_PASSWORD]@cnt/keystone' $ sudo crudini --set /etc/keystone/keystone.conf token provider 'fernet' $ sudo crudini --set /etc/keystone/keystone.conf cache memcache_servers 'cnt1:11211,cnt2:11211,cnt3:11211' $ sudo crudini --set /etc/keystone/keystone.conf DEFAULT transport_url 'rabbit://cnt1:5672,cnt2:5672,cnt3:5672' $ sudo crudini --set /etc/keystone/keystone.conf oslo_messaging_notifications transport_url 'rabbit://cnt1:5672,cnt2:5672,cnt3:5672' $ sudo crudini --set /etc/keystone/keystone.conf oslo_messaging_rabbit rabbit_retry_interval 1 $ sudo crudini --set /etc/keystone/keystone.conf oslo_messaging_rabbit rabbit_retry_backoff 2 $ sudo crudini --set /etc/keystone/keystone.conf oslo_messaging_rabbit rabbit_max_retries 0 $ sudo crudini --set /etc/keystone/keystone.conf oslo_messaging_rabbit rabbit_durable_queues 'true' $ sudo crudini --set /etc/keystone/keystone.conf oslo_messaging_rabbit rabbit_ha_queues 'true'
※以下URLに従いmemcached, rabbitmq連携部分の冗長化設定を実施
OpenStack Docs: Installing Memcached
OpenStack Docs: Messaging service for high availability
Keystone用DB展開 & キーレポジトリ初期化 & Keystone設定
$ sudo su - # su -s /bin/sh -c "keystone-manage db_sync" keystone # keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone # keystone-manage credential_setup --keystone-user keystone --keystone-group keystone # keystone-manage bootstrap --bootstrap-password [ADMIN_PASSWORD] --bootstrap-admin-url http://cnt.local:35357/v3/ --bootstrap-internal-url http://cnt.local:5000/v3/ --bootstrap-public-url http://cnt.pikesaku.net:5000/v3/ --bootstrap-region-id RegionPike
※fernet_setup, credential_setupはDB変更しない。/etc/keystone/fernet-keys, /etc/keystone/credential-keys配下のファイルを更新した為、上記コマンドは全サーバで実行した方が良いと判断。実際に試験を実施し、上記を全サーバで実行しないと、1号機apache停止時に正常動作を確認できなかった。
Apache設定変更 & 再起動
$ echo 'ServerName cnt.local' | sudo tee -a /etc/apache2/apache2.conf $ sudo systemctl restart apache2
KeystoneのHAProxyへの組み込み
設定ファイル編集
/etc/haproxy/haproxy.cfgに以下を追加
listen keystone_admin_endpoint bind 192.168.1.50:35357 balance source option tcpka option httpchk option tcplog server cnt1 192.168.1.51:35357 inter 2000 rise 2 fall 5 server cnt2 192.168.1.52:35357 check inter 2000 rise 2 fall 5 server cnt3 192.168.1.53:35357 check inter 2000 rise 2 fall 5 listen keystone_internal_endpoint bind 192.168.1.50:5000 balance source option tcpka option httpchk option tcplog server cnt1 192.168.1.51:5000 inter 2000 rise 2 fall 5 server cnt2 192.168.1.52:5000 check inter 2000 rise 2 fall 5 server cnt3 192.168.1.53:5000 check inter 2000 rise 2 fall 5 listen keystone_public_endpoint bind 192.168.0.50:5000 balance source option tcpka option httpchk option tcplog server cnt1 192.168.0.51:5000 inter 2000 rise 2 fall 5 server cnt2 192.168.0.52:5000 check inter 2000 rise 2 fall 5 server cnt3 192.168.0.53:5000 check inter 2000 rise 2 fall 5
haproxy再起動
$ sudo systemctl restart haproxy
動作確認
1号機で以下ファイルを生成
./adminrc
export OS_PROJECT_DOMAIN_NAME=Default export OS_USER_DOMAIN_NAME=Default export OS_PROJECT_NAME=admin export OS_USERNAME=admin export OS_PASSWORD=[ADMIN_PASSWORD] export OS_AUTH_URL=http://cnt.local:35357/v3 export OS_IDENTITY_API_VERSION=3 export OS_IMAGE_API_VERSION=2
1号機で以下コマンドを実行
$ source ./adminrc
以下コマンドが正常に実行できることを確認
$ openstack project list -c Name +-------+ | Name | +-------+ | admin | +-------+
1号機のapacheを停止し、上記が正常に実行できることを確認
2号機のapacheを停止し、上記が正常に実行できることを確認
3号機のapacheを停止し、上記が失敗することを確認(以下エラーが出る)
$ openstack project list -c Name Failed to discover available identity versions when contacting http://cnt.local:35357/v3. Attempting to parse version from URL. Unable to establish connection to http://cnt.local:35357/v3/auth/tokens: ('Connection aborted.', BadStatusLine("''",))
備考
HAProxyはSNATする。
APIは以下URL参照
OpenStack Docs: Mapping of policy target to API
全コントローラを停止した場合、起動時に以下オペレーションが必要
rabbitmq起動
2,3号機で以下コマンド実行
$ sudo systemctl start rabbitmq-server
mariadb起動
最後に停止したサーバで以下コマンド実行
$ sudo galera_new_cluster
他サーバで以下コマンド実行
$ sudo systemctl start mariadb