【OpenStack】CentOS8でコントローラノードを構築(共通設定編)
Contents
はじめに
ネット上の情報を調べていると、Packstackを使用したAll in one構成でOpenStackを構築している事例を多く見かけます。確かに簡単に構築できる点は優れているのですが、OpenStackの内部構造や、マルチノード構成にするときのリソース分離方針がわからなかったので、手動で一から構築する方法を調べてみました。
OpenStackは学習コストが高いと言われているだけあって、インストールするにもボリュームのある手順を踏まないといけないようなので、いくつかの記事に分けて、検証した内容を記録していきたいと思います。
まずは、OpenStackの各コンポーネントが共通で使用するOS設定やミドルウェアのインストール方法です。
前提条件
本記事で使用するソフトウェアの前提条件は以下のとおりです。
- CentOS 8.1
- OpenStack Train
OS設定
OpenStackを動かすために必要なOSの設定を行います。
名前解決設定
viなどのテキストエディタで、hostsファイルを開きます。
# vi /etc/hosts
以下の内容をファイル末尾に追記します。
192.168.100.10 controller01
192.168.100.11 compute01
192.168.100.11 storage01
時刻同期設定
viなどのテキストエディタで、Chronyの設定ファイルを開きます。
# vi /etc/chrony.conf
以下の行について、コメントを外して時刻同期の通信を許可するネットワークアドレスを変更します。
#allow 192.168.0.0/16
↓
allow 192.168.100.0/24
サービスを再起動して設定を反映します。
# systemctl restart chronyd.service
OpenStackリポジトリの追加
CentOSのextraリポジトリから、OpenStackのリポジトリをインストールします。
# yum -y install centos-release-openstack-train
(略)
========================================================================================================
パッケージ アーキテクチャー バージョン リポジトリー サイズ
========================================================================================================
インストール:
centos-release-openstack-train noarch 2-1.el8 extras 11 k
依存関係のインストール:
centos-release-messaging noarch 1-2.el8 extras 9.4 k
centos-release-rabbitmq-38 noarch 1-2.el8 extras 8.3 k
centos-release-storage-common noarch 2-2.el8 extras 9.4 k
トランザクションの概要
========================================================================================================
インストール 4 パッケージ
ダウンロードサイズの合計: 38 k
インストール済みのサイズ: 8.2 k
(略)
OpenStackの動作に必要なパッケージをインストールします。python3-
の付く名前のパッケージは、CentOS7まではpython-
から始まっていたものです。CentOS8からはPython3が標準となったので注意が必要です。
# yum -y install python3-openstackclient openstack-selinux
(略)
========================================================================================================
パッケージ Arch バージョン リポジトリー サイズ
========================================================================================================
インストール:
openstack-selinux noarch 0.8.19-1.el8 centos-openstack-train 205 k
python3-openstackclient noarch 4.0.0-1.el8 centos-openstack-train 1.1 M
依存関係のインストール:
container-selinux noarch 2:2.124.0-1.module_el8.1.0+298+41f9343a AppStream 47 k
git-core x86_64 2.18.2-2.el8_1 AppStream 5.0 M
python3-attrs noarch 17.4.0-6.el8 AppStream 53 k
python3-babel noarch 2.5.1-5.el8 AppStream 4.8 M
python3-jmespath noarch 0.9.0-11.el8 AppStream 45 k
python3-jsonpatch noarch 1.21-2.el8 AppStream 27 k
python3-jsonpointer noarch 1.10-11.el8 AppStream 20 k
python3-jsonschema noarch 2.6.0-4.el8 AppStream 82 k
python3-mako noarch 1.0.6-13.el8 AppStream 157 k
python3-markupsafe x86_64 0.23-19.el8 AppStream 39 k
python3-netaddr noarch 0.7.19-8.el8 AppStream 1.5 M
python3-pip noarch 9.0.3-15.el8 AppStream 19 k
python3-prettytable noarch 0.7.2-14.el8 AppStream 44 k
python3-pytz noarch 2017.2-9.el8 AppStream 54 k
python36 x86_64 3.6.8-2.module_el8.1.0+245+c39af44f AppStream 19 k
python3-inotify noarch 0.9.6-13.el8 BaseOS 57 k
python-openstackclient-lang
noarch 4.0.0-1.el8 centos-openstack-train 57 k
python-oslo-i18n-lang noarch 3.24.0-2.el8 centos-openstack-train 13 k
python-oslo-log-lang noarch 3.44.1-2.el8 centos-openstack-train 13 k
python-oslo-utils-lang noarch 3.41.5-1.el8 centos-openstack-train 13 k
python3-SecretStorage noarch 2.3.1-7.el8 centos-openstack-train 35 k
python3-appdirs noarch 1.4.3-12.el8 centos-openstack-train 23 k
python3-cinderclient noarch 5.0.1-1.el8 centos-openstack-train 238 k
python3-cliff noarch 2.16.0-2.el8 centos-openstack-train 94 k
python3-cmd2 noarch 0.9.16-2.el8 centos-openstack-train 187 k
python3-colorama noarch 0.4.1-4.el8 centos-openstack-train 35 k
python3-debtcollector noarch 1.22.0-2.el8 centos-openstack-train 32 k
python3-dogpile-cache noarch 0.9.0-1.el8 centos-openstack-train 79 k
python3-funcsigs noarch 1.0.2-17.el8 centos-openstack-train 30 k
python3-glanceclient noarch 1:2.17.0-1.el8 centos-openstack-train 145 k
python3-importlib-metadata noarch 0.23-1.el8 centos-openstack-train 41 k
python3-iso8601 noarch 0.1.11-16.el8 centos-openstack-train 25 k
python3-keyring noarch 21.0.0-1.el8 centos-openstack-train 80 k
python3-keystoneauth1 noarch 3.17.2-1.el8 centos-openstack-train 425 k
python3-keystoneclient noarch 1:3.21.0-2.el8 centos-openstack-train 251 k
python3-msgpack x86_64 0.6.2-1.el8 centos-openstack-train 92 k
python3-munch noarch 2.3.2-6.el8 centos-openstack-train 22 k
python3-neutronclient noarch 6.14.0-1.el8 centos-openstack-train 310 k
python3-novaclient noarch 1:15.1.0-1.el8 centos-openstack-train 224 k
python3-openstacksdk noarch 0.36.2-1.el8 centos-openstack-train 771 k
python3-os-client-config noarch 1.33.0-2.el8 centos-openstack-train 54 k
python3-os-service-types noarch 1.7.0-2.el8 centos-openstack-train 36 k
python3-osc-lib noarch 1.14.1-2.el8 centos-openstack-train 77 k
python3-oslo-config noarch 2:6.11.2-1.el8 centos-openstack-train 231 k
python3-oslo-context noarch 2.23.0-2.el8 centos-openstack-train 25 k
python3-oslo-i18n noarch 3.24.0-2.el8 centos-openstack-train 58 k
python3-oslo-log noarch 3.44.1-2.el8 centos-openstack-train 63 k
python3-oslo-serialization noarch 2.29.2-2.el8 centos-openstack-train 34 k
python3-oslo-utils noarch 3.41.5-1.el8 centos-openstack-train 78 k
python3-pbr noarch 5.4.3-2.el8 centos-openstack-train 90 k
python3-pyparsing noarch 2.4.6-1.el8 centos-openstack-train 161 k
python3-pyperclip noarch 1.6.4-6.el8 centos-openstack-train 22 k
python3-pyyaml x86_64 5.3-2.el8 centos-openstack-train 198 k
python3-requestsexceptions noarch 1.4.0-1.el8 centos-openstack-train 15 k
python3-rfc3986 noarch 1.2.0-6.el8 centos-openstack-train 46 k
python3-setuptools noarch 41.6.0-1.el8 centos-openstack-train 663 k
置き換え platform-python-setuptools.noarch 39.2.0-5.el8
python3-simplejson x86_64 3.17.0-1.el8 centos-openstack-train 286 k
python3-stevedore noarch 1.31.0-2.el8 centos-openstack-train 62 k
python3-warlock noarch 1.3.3-1.el8 centos-openstack-train 22 k
python3-wcwidth noarch 0.1.7-14.el8 centos-openstack-train 32 k
python3-wrapt x86_64 1.11.2-4.el8 centos-openstack-train 54 k
python3-zipp noarch 0.5.1-2.el8 centos-openstack-train 13 k
モジュールストリームの有効化:
container-tools rhel8
python36 3.6
トランザクションの概要
========================================================================================================
インストール 64 パッケージ
ダウンロードサイズの合計: 19 M
(略)
DBサーバの構築(MariaDB)
OpenStackの各コンポーネントが永続データを保存するために使用するDBサーバを構築します。DBサーバには、CentOS同梱版のMariaDBを使用します。
パッケージのインストール
必要パッケージをインストールします。MariaDBの他に、PythonからMariaDBにアクセスするためのpython3-PyMySQL
も一緒にインストールします。
# yum -y install mariadb mariadb-server python3-PyMySQL
(略)
========================================================================================================
パッケージ Arch バージョン リポジトリー サイズ
========================================================================================================
インストール:
mariadb x86_64 3:10.3.17-1.module_el8.1.0+257+48736ea6 AppStream 6.1 M
mariadb-server x86_64 3:10.3.17-1.module_el8.1.0+257+48736ea6 AppStream 16 M
python3-PyMySQL noarch 0.8.0-10.module_el8.1.0+245+c39af44f AppStream 159 k
依存関係のインストール:
mariadb-common x86_64 3:10.3.17-1.module_el8.1.0+257+48736ea6 AppStream 62 k
mariadb-connector-c x86_64 3.0.7-1.el8 AppStream 148 k
mariadb-connector-c-config noarch 3.0.7-1.el8 AppStream 13 k
mariadb-errmsg x86_64 3:10.3.17-1.module_el8.1.0+257+48736ea6 AppStream 232 k
perl-DBD-MySQL x86_64 4.046-3.module_el8.1.0+203+e45423dc AppStream 156 k
perl-DBI x86_64 1.641-3.module_el8.1.0+199+8f0a6bbd AppStream 740 k
perl-Math-BigInt noarch 1:1.9998.11-7.el8 BaseOS 196 k
perl-Math-Complex noarch 1.59-416.el8 BaseOS 108 k
弱い依存関係のインストール:
mariadb-backup x86_64 3:10.3.17-1.module_el8.1.0+257+48736ea6 AppStream 6.0 M
mariadb-gssapi-server x86_64 3:10.3.17-1.module_el8.1.0+257+48736ea6 AppStream 49 k
mariadb-server-utils x86_64 3:10.3.17-1.module_el8.1.0+257+48736ea6 AppStream 1.6 M
モジュールストリームの有効化:
mariadb 10.3
perl-DBD-MySQL 4.046
perl-DBI 1.641
トランザクションの概要
========================================================================================================
インストール 14 パッケージ
ダウンロードサイズの合計: 31 M
インストール済みのサイズ: 174 M
(略)
設定ファイルの作成
vi等のテキストエディタで、以下のファイルを新規作成します。
# vi /etc/my.cnf.d/openstack.cnf
以下の内容を記載します。bind-address
の行は、コントローラノード自身のIPアドレスを指定します。
[mysqld]
bind-address = 192.168.100.10
default-storage-engine = innodb
innodb_file_per_table
max_connections = 4096
collation-server = utf8_general_ci
character-set-server = utf8
サービスの起動
サービスの自動起動有効化、および起動を行います。
# systemctl enable --now mariadb.service
初期設定
MariaDBの初期設定を行います。
# mysql_secure_installation
(略)
Set root password? [Y/n] ←Yを入力してEnter
New password:
Re-enter new password: ←任意のパスワード文字列を入力してEnter
(略)
Remove anonymous users? [Y/n] ←Yを入力してEnter
(略)
Disallow root login remotely? [Y/n] ←Yを入力してEnter
(略)
Remove test database and access to it? [Y/n] ←Yを入力してEnter
(略)
Reload privilege tables now? [Y/n] ←Yを入力してEnter
メッセージキューサーバの構築(RabbitMQ)
OpenStackの各コンポーネントがメッセージングに使用するメッセージキューサーバを構築します。メッセージキューサーバには、EPELリポジトリのRabbitMQを使用します。
パッケージのインストール
まずはEPELリポジトリをインストールします。
# yum -y install epel-release
(略)
========================================================================================================
パッケージ アーキテクチャー バージョン リポジトリー サイズ
========================================================================================================
インストール:
epel-release noarch 8-8.el8 extras 23 k
トランザクションの概要
========================================================================================================
インストール 1 パッケージ
ダウンロードサイズの合計: 23 k
インストール済みのサイズ: 32 k
(略)
EPELリポジトリからRabbitMQをインストールします。
# yum -y install rabbitmq-server
========================================================================================================
パッケージ Arch バージョン リポジトリー サイズ
========================================================================================================
インストール:
rabbitmq-server x86_64 3.8.2-3.el8 centos-rabbitmq-38 11 M
依存関係のインストール:
SDL x86_64 1.2.15-36.el8_1 AppStream 218 k
libmspack x86_64 0.7-0.1.alpha.el8.3 AppStream 70 k
mesa-libGLU x86_64 9.0.0-15.el8 AppStream 185 k
lksctp-tools x86_64 1.0.18-3.el8 BaseOS 100 k
erlang-asn1 x86_64 22.2.8-1.el8 centos-rabbitmq-38 745 k
erlang-common_test x86_64 22.2.8-1.el8 centos-rabbitmq-38 1.0 M
erlang-compiler x86_64 22.2.8-1.el8 centos-rabbitmq-38 1.4 M
erlang-crypto x86_64 22.2.8-1.el8 centos-rabbitmq-38 169 k
erlang-cuttlefish noarch 2.0.11-10.el8 centos-rabbitmq-38 154 k
erlang-debugger x86_64 22.2.8-1.el8 centos-rabbitmq-38 406 k
erlang-eldap x86_64 22.2.8-1.el8 centos-rabbitmq-38 125 k
erlang-erts x86_64 22.2.8-1.el8 centos-rabbitmq-38 2.2 M
erlang-et x86_64 22.2.8-1.el8 centos-rabbitmq-38 170 k
erlang-eunit x86_64 22.2.8-1.el8 centos-rabbitmq-38 165 k
erlang-getopt noarch 1.0.1-8.el8 centos-rabbitmq-38 42 k
erlang-goldrush noarch 0.2.0-6.el8 centos-rabbitmq-38 69 k
erlang-hipe x86_64 22.2.8-1.el8 centos-rabbitmq-38 2.8 M
erlang-inets x86_64 22.2.8-1.el8 centos-rabbitmq-38 616 k
erlang-kernel x86_64 22.2.8-1.el8 centos-rabbitmq-38 1.2 M
erlang-lager noarch 3.8.0-2.el8 centos-rabbitmq-38 232 k
erlang-mnesia x86_64 22.2.8-1.el8 centos-rabbitmq-38 749 k
erlang-mustache noarch 0.1.1-14.el8 centos-rabbitmq-38 27 k
erlang-observer x86_64 22.2.8-1.el8 centos-rabbitmq-38 882 k
erlang-os_mon x86_64 22.2.8-1.el8 centos-rabbitmq-38 108 k
erlang-public_key x86_64 22.2.8-1.el8 centos-rabbitmq-38 619 k
erlang-runtime_tools x86_64 22.2.8-1.el8 centos-rabbitmq-38 211 k
erlang-sasl x86_64 22.2.8-1.el8 centos-rabbitmq-38 269 k
erlang-sd_notify x86_64 1.0-14.el8 centos-rabbitmq-38 17 k
erlang-snmp x86_64 22.2.8-1.el8 centos-rabbitmq-38 1.6 M
erlang-ssh x86_64 22.2.8-1.el8 centos-rabbitmq-38 677 k
erlang-ssl x86_64 22.2.8-1.el8 centos-rabbitmq-38 1.1 M
erlang-stdlib x86_64 22.2.8-1.el8 centos-rabbitmq-38 2.7 M
erlang-syntax_tools x86_64 22.2.8-1.el8 centos-rabbitmq-38 372 k
erlang-tools x86_64 22.2.8-1.el8 centos-rabbitmq-38 598 k
erlang-wx x86_64 22.2.8-1.el8 centos-rabbitmq-38 2.9 M
erlang-xmerl x86_64 22.2.8-1.el8 centos-rabbitmq-38 1.1 M
wxBase3 x86_64 3.0.4-11.el8 epel 1.1 M
wxGTK3 x86_64 3.0.4-11.el8 epel 4.8 M
wxGTK3-gl x86_64 3.0.4-11.el8 epel 45 k
wxGTK3-i18n noarch 3.0.4-11.el8 epel 510 k
トランザクションの概要
========================================================================================================
インストール 41 パッケージ
ダウンロードサイズの合計: 43 M
インストール済みのサイズ: 87 M
(略)
サービスの起動
サービスの自動起動有効化、および起動を行います。
# systemctl enable --now rabbitmq-server.service
ユーザと権限の追加
RabbitMQにopenstack
ユーザを追加し、権限を付与します。RABBIT_PASS
は、任意のパスワード文字列に置き換えてください。
# rabbitmqctl add_user openstack RABBIT_PASS
Adding user "openstack" ...
# rabbitmqctl set_permissions openstack ".*" ".*" ".*"
Setting permissions for user "openstack" in vhost "/" ...
キャッシュサーバの構築(Memcached)
OpenStackのコンポーネントであるKeystoneが認証トークンのキャッシュに使用するためのキャッシュサーバを構築します。キャッシュサーバには、CentOS同梱版のMemcachedを使用します。
パッケージのインストール
必要パッケージをインストールします。Memcachedの他に、PythonからMemcachedにアクセスするためのpython3-memcached
も一緒にインストールします。
# yum -y install memcached python3-memcached
(略)
========================================================================================================
パッケージ Arch バージョン リポジトリー サイズ
========================================================================================================
インストール:
memcached x86_64 1.5.9-2.el8 AppStream 132 k
python3-memcached noarch 1.58-11.el8 centos-openstack-train 44 k
トランザクションの概要
========================================================================================================
インストール 2 パッケージ
ダウンロードサイズの合計: 175 k
インストール済みのサイズ: 400 k
(略)
設定ファイルの編集
vi等のテキストエディタで、以下のファイルを開きます。
# vi /etc/sysconfig/memcached
以下の行について、コントローラノード自身のIPアドレスに変更します。
OPTIONS="-l 127.0.0.1,::1"
↓
OPTIONS="-l 192.168.100.10"
サービスの起動
サービスの自動起動有効化、および起動を行います。
# systemctl enable --now memcached.service
参考文献
OpenStack Installation Tutorial for Red Hat Enterprise Linux and CentOS
https://docs.openstack.org/newton/ja/install-guide-rdo/index.html