【OpenStack】CentOS8でコントローラノードを構築(共通設定編)

はじめに

ネット上の情報を調べていると、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

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です