OpenStackインストール前の設定
OpenStackパッケージのインストール前に各々のノードで以下の設定を行います。
- ネットワークデバイスの設定
- ホスト名と静的な名前解決の設定
- リポジトリーの設定とパッケージの更新
- Chronyサーバーのインストール(コントローラーノードのみ)
- Chronyクライアントのインストール
- Python用MySQL/MariaDBクライアントのインストール
- MariaDBのインストール(コントローラーノードのみ)
- RabbitMQのインストール(コントローラーノードのみ)
- 環境変数設定ファイルの作成(コントローラーノードのみ)
- Memcachedのインストールと設定(コントローラーノードのみ)
ネットワークデバイスの設定
各ノードの/etc/network/interfacesを編集し、IPアドレスの設定を行います。
- controllerノードのIPアドレスの設定
controller# vi /etc/network/interfaces
auto ens3
iface ens3 inet static
address 10.0.0.111
netmask 255.255.255.0
gateway 10.0.0.1
dns-nameservers 10.0.0.1
- computeノードのIPアドレスの設定
compute# vi /etc/network/interfaces
auto ens3
iface ens3 inet static
address 10.0.0.112
netmask 255.255.255.0
gateway 10.0.0.1
dns-nameservers 10.0.0.1
- ネットワークの設定を反映
各ノードで変更した設定を反映させるため、ホストを再起動します。
$ sudo reboot
ホスト名と静的な名前解決の設定
ホスト名でノードにアクセスするにはDNSサーバーで名前解決する方法やhostsファイルに書く方法が挙げられます。 本書では各ノードの/etc/hostsに各ノードのIPアドレスとホスト名を記述してhostsファイルを使って名前解決します。127.0.1.1の行はコメントアウトします。
- 各ノードのホスト名の設定
各ノードのホスト名をhostnamectlコマンドを使って設定します。反映させるためには一度ログインしなおす必要があります。
(例)controllerノードの場合
controller# hostnamectl set-hostname controller
controller# cat /etc/hostname
controller
- 各ノードの/etc/hostsの設定
すべてのノードで127.0.1.1の行をコメントアウトします。 またホスト名で名前引きできるように設定します。
127.0.1.1の行はUbuntuの場合、デフォルトで設定されています。 Memcachedをセットアップするノードでこの設定がされたままだと正常に動作しませんので注意してください。
(例)controllerノードの場合
controller# vi /etc/hosts
127.0.0.1 localhost
#127.0.1.1 controller ← コメントアウト
10.0.0.111 controller
10.0.0.112 compute
リポジトリーの設定とパッケージの更新
OpenStack環境をセットアップする全てのノードで以下のコマンドを実行し、Pike向けUbuntu Cloud Archiveリポジトリーを登録します。
# add-apt-repository cloud-archive:pike
Ubuntu Cloud Archive for OpenStack Pike
More info: https://wiki.ubuntu.com/ServerTeam/CloudArchive
Press [ENTER] to continue or ctrl-c to cancel adding it ← ここでEnterキーを押下
...
Importing ubuntu-cloud.archive.canonical.com keyring
OK
Processing ubuntu-cloud.archive.canonical.com removal keyring
gpg: /etc/apt/trustdb.gpg: trustdb created
OK
各ノードのシステムをアップデートします。Ubuntuではパッケージのインストールやアップデートの際にまずapt update
を実行してリポジトリー情報の更新が必要です。そのあとapt upgrade
でアップグレードを行います。カーネルの更新があった場合は再起動してください。
なお、apt update
は頻繁に実行する必要はありません。日をまたいで作業する際や、コマンドを実行しない場合にパッケージ更新やパッケージのインストールでエラーが出る場合は実行してください。以降の手順ではapt update
を省略します。
# apt update -q && apt upgrade
OpenStackクライアントのインストール
OpenStackクライアントをインストールします。依存するパッケージは全てインストールします。
controller# apt install python-openstackclient
時刻同期サーバーのインストールと設定
- 時刻同期サーバーChronyの設定
aptコマンドで各ノードの時刻を同期するためにChronyをインストールします。
# apt install chrony
- controllerノードの時刻同期サーバーの設定
controllerノードで公開NTPサーバーと同期するNTPサーバーを構築します。 適切な公開NTPサーバー(ex.ntp.nict.jp etc..)をserverもしくはpoolで指定します。 ネットワーク内にNTPサーバーがある場合はそのサーバーを指定します。
controller# vi /etc/chrony/chrony.conf
...
server NTP_SERVER iburst ← 同期するNTPサーバーを指定
...
allow 10.0.0.0/24 ←接続を許可するネットワーク
設定を変更した場合はNTPサービスを再起動します。
controller# service chrony restart
- その他ノードの時刻同期サーバーの設定
computeノードでcontrollerノードと同期するNTPサーバーを構築します。
compute# vi /etc/chrony/chrony.conf
#pool 2.debian.pool.ntp.org offline iburst ← デフォルト設定はコメントアウト
server controller iburst
設定を適用するため、NTPサービスを再起動します。
compute# service chrony restart
NTPサーバーの動作確認
構築した環境でコマンドを実行して、各NTPサーバーが同期していることを確認します。
- 公開NTPサーバーと同期しているcontrollerノード
controller# chronyc sources
chronyc sources
210 Number of sources = 4
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
^* chobi.paina.jp 2 8 17 1 +47us[ -312us] +/- 13ms
^- v157-7-235-92.z1d6.static 2 8 17 1 +1235us[+1235us] +/- 45ms
^- edm.butyshop.com 3 8 17 0 -2483us[-2483us] +/- 82ms
^- y.ns.gin.ntt.net 2 8 17 0 +1275us[+1275us] +/- 35ms
- controllerノードと同期しているその他ノード
compute# chronyc sources
210 Number of sources = 1
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
^* controller 3 6 77 25 -509us[-1484us] +/- 13ms
MariaDBのインストール
データベースサーバーのMariaDBをインストールします。
パッケージのインストール
aptコマンドでmariadb-serverパッケージをインストールします。
controller# apt install mariadb-server python-pymysql
MariaDBの設定を変更
OpenStack用のMariaDB設定ファイル /etc/mysql/mariadb.conf.d/99-openstack.cnfを作成し、以下を設定します。
別のノードからMariaDBへアクセスできるようにするためバインドアドレスを変更します。加えて使用する文字コードをutf8に変更します。また、デフォルトの接続数ではOpenStackで利用するには適さないため、接続数を4096まで増やします。なお、この設定は規模に応じて適切な設定を行ってください。
※文字コードをutf8に変更しないとOpenStackモジュールとデータベース間の通信でエラーが発生します。
controller# vi /etc/mysql/mariadb.conf.d/99-openstack.cnf
[mysqld]
bind-address = 10.0.0.111 ← controllerのIPアドレス
default-storage-engine = innodb
innodb_file_per_table = on
max_connections = 4096
collation-server = utf8_general_ci
character-set-server = utf8
MariaDBサービスの再起動
変更した設定を反映させるためMariaDBのサービスを再起動します。
controller# service mysql restart
MariaDBのセットアップ
MariaDBデータベースのセキュリティーを設定するにはmysql_secure_installationコマンドを実行します。 このコマンドを利用してMariaDBのrootユーザーのパスワードの設定やデフォルトで作られるユーザーやデータベースの削除なども行えます。
controller# mysql_secure_installation
RabbitMQのインストール
OpenStackは、オペレーションやステータス情報を各サービス間で連携するためにメッセージブローカーを使用しています。OpenStackではRabbitMQ、ZeroMQなど複数のメッセージブローカーサービスに対応しています。 本書ではRabbitMQをインストールする例を説明します。
パッケージのインストール
aptコマンドでrabbitmq-serverパッケージをインストールします。
controller# apt install rabbitmq-server
openstackユーザーの作成とパーミッションの設定
RabbitMQにアクセスするためのユーザーとしてopenstackユーザーを作成し、必要なパーミッションを設定します。 以下コマンドはRabbitMQのopenstackユーザーのパスワードをpasswordに設定する例です。
controller# rabbitmqctl add_user openstack password
controller# rabbitmqctl set_permissions openstack ".*" ".*" ".*"
RabbitMQの待ち受けに関する設定
controllerノードでRabbitMQの待ち受けに関する設定を行います。NODE_IP_ADDRESSにBind IPアドレスを設定します。 設定変更後はrabbitmq-serverサービスを再起動します。
controller# vi /etc/rabbitmq/rabbitmq-env.conf
NODE_IP_ADDRESS=10.0.0.111 ← RabbitMQサーバーノード(本例はcontroller)を指定
controller# service rabbitmq-server restart
RabbitMQサービスのログを確認
- ログの確認
メッセージブローカーサービスが正常に動いていないと、OpenStackの各コンポーネントは正常に動きません。RabbitMQサービスの再起動と動作確認を行い、確実に動作していることを確認します。
controller# tailf /var/log/rabbitmq/[email protected]
...
=INFO REPORT==== 4-Sep-2017::17:14:09 ===
msg_store_persistent: using rabbit_msg_store_ets_index to provide index
=INFO REPORT==== 4-Sep-2017::17:14:09 ===
started TCP Listener on 172.17.14.111:5672 ← 待受けIPアドレスとポートを確認
=INFO REPORT==== 4-Sep-2017::17:14:09 ===
Server startup complete; 0 plugins started.
Memcachedのインストールと設定
認証機構のトークンをキャッシュするための用途でMemcachedをインストールします。
controller# apt install memcached python-memcache
設定ファイル /etc/memcached.conf を変更します。 既存の行 -l 127.0.0.1 をcontrollerノードのIPアドレスに変更します。
controller# vi /etc/memcached.conf
-l 10.0.0.111 ← controllerのIPアドレス
memcachedサービスを再起動します。
controller# service memcached restart