OpenStack は、サービス間での操作と状態をやり取りするのに、メッセージキューを使用します。メッセージキューのサービスには、RabbitMQ、Qpid、ZeroMQ などいくつかありますが、このセクションでは、RabbitMQ メッセージキューサービスの導入について紹介します。
openstack-rocky の yum リポジトリ(CentOS-Openstack-rocky.repo)を使って、 RabbitMQ のパッケージをインストールします。インストールは、コントローラーノードで実施します。
[root@controller ~]# yum --enablerepo=centos-openstack-rocky -y install rabbitmq-server 読み込んだプラグイン:fastestmirror Loading mirror speeds from cached hostfile * base: ftp.nara.wide.ad.jp * extras: ftp.nara.wide.ad.jp * updates: ftp.nara.wide.ad.jp 依存性の解決をしています --> トランザクションの確認を実行しています。 ---> パッケージ rabbitmq-server.noarch 0:3.6.5-1.el7 を インストール --> 依存性の処理をしています: erlang-xmerl >= R12B-3 のパッケージ: rabbitmq-server-3.6.5-1.el7.noarch --> 依存性の処理をしています: erlang-tools >= R12B-3 のパッケージ: rabbitmq-server-3.6.5-1.el7.noarch --> 依存性の処理をしています: erlang-stdlib >= R12B-3 のパッケージ: rabbitmq-server-3.6.5-1.el7.noarch --> 依存性の処理をしています: erlang-ssl >= R12B-3 のパッケージ: rabbitmq-server-3.6.5-1.el7.noarch --> 依存性の処理をしています: erlang-sasl >= R12B-3 のパッケージ: rabbitmq-server-3.6.5-1.el7.noarch --> 依存性の処理をしています: erlang-public_key >= R12B-3 のパッケージ: rabbitmq-server-3.6.5-1.el7.noarch --> 依存性の処理をしています: erlang-os_mon >= R12B-3 のパッケージ: rabbitmq-server-3.6.5-1.el7.noarch --> 依存性の処理をしています: erlang-mnesia >= R12B-3 のパッケージ: rabbitmq-server-3.6.5-1.el7.noarch --> 依存性の処理をしています: erlang-kernel >= R12B-3 のパッケージ: rabbitmq-server-3.6.5-1.el7.noarch --> 依存性の処理をしています: erlang-erts >= R12B-3 のパッケージ: rabbitmq-server-3.6.5-1.el7.noarch --> 依存性の処理をしています: erlang-eldap >= R12B-3 のパッケージ: rabbitmq-server-3.6.5-1.el7.noarch --> 依存性の処理をしています: erlang-sd_notify のパッケージ: rabbitmq-server-3.6.5-1.el7.noarch --> トランザクションの確認を実行しています。 ---> パッケージ erlang-eldap.x86_64 0:19.3.6.4-1.el7 を インストール --> 依存性の処理をしています: erlang-asn1(x86-64) = 19.3.6.4-1.el7 のパッケージ: erlang-eldap-19.3.6.4-1.el7.x86_64 ---> パッケージ erlang-erts.x86_64 0:19.3.6.4-1.el7 を インストール --> 依存性の処理をしています: lksctp-tools のパッケージ: erlang-erts-19.3.6.4-1.el7.x86_64 ---> パッケージ erlang-kernel.x86_64 0:19.3.6.4-1.el7 を インストール ---> パッケージ erlang-mnesia.x86_64 0:19.3.6.4-1.el7 を インストール ---> パッケージ erlang-os_mon.x86_64 0:19.3.6.4-1.el7 を インストール --> 依存性の処理をしています: erlang-snmp(x86-64) = 19.3.6.4-1.el7 のパッケージ: erlang-os_mon-19.3.6.4-1.el7.x86_64 --> 依存性の処理をしています: erlang-otp_mibs(x86-64) = 19.3.6.4-1.el7 のパッケージ: erlang-os_mon-19.3.6.4-1.el7.x86_64 ---> パッケージ erlang-public_key.x86_64 0:19.3.6.4-1.el7 を インストール --> 依存性の処理をしています: erlang-crypto(x86-64) = 19.3.6.4-1.el7 のパッケージ: erlang-public_key-19.3.6.4-1.el7.x86_64 ---> パッケージ erlang-sasl.x86_64 0:19.3.6.4-1.el7 を インストール ---> パッケージ erlang-sd_notify.x86_64 0:1.0-2.el7 を インストール ---> パッケージ erlang-ssl.x86_64 0:19.3.6.4-1.el7 を インストール --> 依存性の処理をしています: erlang-inets(x86-64) = 19.3.6.4-1.el7 のパッケージ: erlang-ssl-19.3.6.4-1.el7.x86_64 ---> パッケージ erlang-stdlib.x86_64 0:19.3.6.4-1.el7 を インストール --> 依存性の処理をしています: erlang-compiler(x86-64) = 19.3.6.4-1.el7 のパッケージ: erlang-stdlib-19.3.6.4-1.el7.x86_64 ---> パッケージ erlang-tools.x86_64 0:19.3.6.4-1.el7 を インストール --> 依存性の処理をしています: erlang-runtime_tools(x86-64) = 19.3.6.4-1.el7 のパッケージ: erlang-tools-19.3.6.4-1.el7.x86_64 ---> パッケージ erlang-xmerl.x86_64 0:19.3.6.4-1.el7 を インストール --> トランザクションの確認を実行しています。 ---> パッケージ erlang-asn1.x86_64 0:19.3.6.4-1.el7 を インストール ---> パッケージ erlang-compiler.x86_64 0:19.3.6.4-1.el7 を インストール --> 依存性の処理をしています: erlang-hipe(x86-64) = 19.3.6.4-1.el7 のパッケージ: erlang-compiler-19.3.6.4-1.el7.x86_64 ---> パッケージ erlang-crypto.x86_64 0:19.3.6.4-1.el7 を インストール ---> パッケージ erlang-inets.x86_64 0:19.3.6.4-1.el7 を インストール ---> パッケージ erlang-otp_mibs.x86_64 0:19.3.6.4-1.el7 を インストール ---> パッケージ erlang-runtime_tools.x86_64 0:19.3.6.4-1.el7 を インストール ---> パッケージ erlang-snmp.x86_64 0:19.3.6.4-1.el7 を インストール ---> パッケージ lksctp-tools.x86_64 0:1.0.17-2.el7 を インストール --> トランザクションの確認を実行しています。 ---> パッケージ erlang-hipe.x86_64 0:19.3.6.4-1.el7 を インストール --> 依存性の処理をしています: erlang-syntax_tools(x86-64) = 19.3.6.4-1.el7 のパッケージ: erlang-hipe-19.3.6.4-1.el7.x86_64 --> トランザクションの確認を実行しています。 ---> パッケージ erlang-syntax_tools.x86_64 0:19.3.6.4-1.el7 を インストール --> 依存性解決を終了しました。 依存性を解決しました ================================================================================ Package アーキテクチャー バージョン リポジトリー 容量 ================================================================================ インストール中: rabbitmq-server noarch 3.6.5-1.el7 centos-openstack-rocky 5.1 M 依存性関連でのインストールをします: erlang-asn1 x86_64 19.3.6.4-1.el7 centos-openstack-rocky 737 k erlang-compiler x86_64 19.3.6.4-1.el7 centos-openstack-rocky 1.1 M erlang-crypto x86_64 19.3.6.4-1.el7 centos-openstack-rocky 122 k erlang-eldap x86_64 19.3.6.4-1.el7 centos-openstack-rocky 120 k erlang-erts x86_64 19.3.6.4-1.el7 centos-openstack-rocky 3.0 M erlang-hipe x86_64 19.3.6.4-1.el7 centos-openstack-rocky 2.6 M erlang-inets x86_64 19.3.6.4-1.el7 centos-openstack-rocky 766 k erlang-kernel x86_64 19.3.6.4-1.el7 centos-openstack-rocky 1.1 M erlang-mnesia x86_64 19.3.6.4-1.el7 centos-openstack-rocky 769 k erlang-os_mon x86_64 19.3.6.4-1.el7 centos-openstack-rocky 118 k erlang-otp_mibs x86_64 19.3.6.4-1.el7 centos-openstack-rocky 37 k erlang-public_key x86_64 19.3.6.4-1.el7 centos-openstack-rocky 585 k erlang-runtime_tools x86_64 19.3.6.4-1.el7 centos-openstack-rocky 214 k erlang-sasl x86_64 19.3.6.4-1.el7 centos-openstack-rocky 293 k erlang-sd_notify x86_64 1.0-2.el7 centos-openstack-rocky 9.9 k erlang-snmp x86_64 19.3.6.4-1.el7 centos-openstack-rocky 1.6 M erlang-ssl x86_64 19.3.6.4-1.el7 centos-openstack-rocky 788 k erlang-stdlib x86_64 19.3.6.4-1.el7 centos-openstack-rocky 2.4 M erlang-syntax_tools x86_64 19.3.6.4-1.el7 centos-openstack-rocky 408 k erlang-tools x86_64 19.3.6.4-1.el7 centos-openstack-rocky 567 k erlang-xmerl x86_64 19.3.6.4-1.el7 centos-openstack-rocky 1.0 M lksctp-tools x86_64 1.0.17-2.el7 base 88 k トランザクションの要約 ================================================================================ インストール 1 パッケージ (+22 個の依存関係のパッケージ) 総ダウンロード容量: 23 M インストール容量: 40 M Downloading packages: (1/23): erlang-asn1-19.3.6.4-1.el7.x86_64.rpm | 737 kB 00:02 (2/23): erlang-crypto-19.3.6.4-1.el7.x86_64.rpm | 122 kB 00:00 (3/23): erlang-compiler-19.3.6.4-1.el7.x86_64.rpm | 1.1 MB 00:03 (4/23): erlang-eldap-19.3.6.4-1.el7.x86_64.rpm | 120 kB 00:00 (5/23): erlang-erts-19.3.6.4-1.el7.x86_64.rpm | 3.0 MB 00:03 (6/23): erlang-hipe-19.3.6.4-1.el7.x86_64.rpm | 2.6 MB 00:03 (7/23): erlang-kernel-19.3.6.4-1.el7.x86_64.rpm | 1.1 MB 00:02 (8/23): erlang-mnesia-19.3.6.4-1.el7.x86_64.rpm | 769 kB 00:03 (9/23): erlang-inets-19.3.6.4-1.el7.x86_64.rpm | 766 kB 00:06 (10/23): erlang-os_mon-19.3.6.4-1.el7.x86_64.rpm | 118 kB 00:00 (11/23): erlang-otp_mibs-19.3.6.4-1.el7.x86_64.rpm | 37 kB 00:00 (12/23): erlang-public_key-19.3.6.4-1.el7.x86_64.rpm | 585 kB 00:01 (13/23): erlang-sasl-19.3.6.4-1.el7.x86_64.rpm | 293 kB 00:00 (14/23): erlang-runtime_tools-19.3.6.4-1.el7.x86_64.rpm | 214 kB 00:00 (15/23): erlang-sd_notify-1.0-2.el7.x86_64.rpm | 9.9 kB 00:00 (16/23): erlang-snmp-19.3.6.4-1.el7.x86_64.rpm | 1.6 MB 00:01 (17/23): erlang-ssl-19.3.6.4-1.el7.x86_64.rpm | 788 kB 00:01 (18/23): erlang-syntax_tools-19.3.6.4-1.el7.x86_64.rpm | 408 kB 00:00 (19/23): erlang-tools-19.3.6.4-1.el7.x86_64.rpm | 567 kB 00:00 (20/23): erlang-stdlib-19.3.6.4-1.el7.x86_64.rpm | 2.4 MB 00:01 (21/23): lksctp-tools-1.0.17-2.el7.x86_64.rpm | 88 kB 00:00 (22/23): erlang-xmerl-19.3.6.4-1.el7.x86_64.rpm | 1.0 MB 00:01 (23/23): rabbitmq-server-3.6.5-1.el7.noarch.rpm | 5.1 MB 00:04 -------------------------------------------------------------------------------- 合計 1.0 MB/s | 23 MB 00:22 Running transaction check Running transaction test Transaction test succeeded Running transaction インストール中 : lksctp-tools-1.0.17-2.el7.x86_64 1/23 インストール中 : erlang-syntax_tools-19.3.6.4-1.el7.x86_64 2/23 インストール中 : erlang-hipe-19.3.6.4-1.el7.x86_64 3/23 インストール中 : erlang-compiler-19.3.6.4-1.el7.x86_64 4/23 インストール中 : erlang-crypto-19.3.6.4-1.el7.x86_64 5/23 インストール中 : erlang-stdlib-19.3.6.4-1.el7.x86_64 6/23 インストール中 : erlang-erts-19.3.6.4-1.el7.x86_64 7/23 インストール中 : erlang-kernel-19.3.6.4-1.el7.x86_64 8/23 インストール中 : erlang-mnesia-19.3.6.4-1.el7.x86_64 9/23 インストール中 : erlang-runtime_tools-19.3.6.4-1.el7.x86_64 10/23 インストール中 : erlang-snmp-19.3.6.4-1.el7.x86_64 11/23 インストール中 : erlang-asn1-19.3.6.4-1.el7.x86_64 12/23 インストール中 : erlang-public_key-19.3.6.4-1.el7.x86_64 13/23 インストール中 : erlang-inets-19.3.6.4-1.el7.x86_64 14/23 インストール中 : erlang-ssl-19.3.6.4-1.el7.x86_64 15/23 インストール中 : erlang-tools-19.3.6.4-1.el7.x86_64 16/23 インストール中 : erlang-sasl-19.3.6.4-1.el7.x86_64 17/23 インストール中 : erlang-eldap-19.3.6.4-1.el7.x86_64 18/23 インストール中 : erlang-otp_mibs-19.3.6.4-1.el7.x86_64 19/23 インストール中 : erlang-os_mon-19.3.6.4-1.el7.x86_64 20/23 インストール中 : erlang-xmerl-19.3.6.4-1.el7.x86_64 21/23 インストール中 : erlang-sd_notify-1.0-2.el7.x86_64 22/23 インストール中 : rabbitmq-server-3.6.5-1.el7.noarch 23/23 検証中 : erlang-snmp-19.3.6.4-1.el7.x86_64 1/23 検証中 : erlang-kernel-19.3.6.4-1.el7.x86_64 2/23 検証中 : erlang-otp_mibs-19.3.6.4-1.el7.x86_64 3/23 検証中 : erlang-xmerl-19.3.6.4-1.el7.x86_64 4/23 検証中 : erlang-mnesia-19.3.6.4-1.el7.x86_64 5/23 検証中 : erlang-runtime_tools-19.3.6.4-1.el7.x86_64 6/23 検証中 : rabbitmq-server-3.6.5-1.el7.noarch 7/23 検証中 : erlang-syntax_tools-19.3.6.4-1.el7.x86_64 8/23 検証中 : erlang-asn1-19.3.6.4-1.el7.x86_64 9/23 検証中 : erlang-tools-19.3.6.4-1.el7.x86_64 10/23 検証中 : erlang-eldap-19.3.6.4-1.el7.x86_64 11/23 検証中 : lksctp-tools-1.0.17-2.el7.x86_64 12/23 検証中 : erlang-os_mon-19.3.6.4-1.el7.x86_64 13/23 検証中 : erlang-sd_notify-1.0-2.el7.x86_64 14/23 検証中 : erlang-public_key-19.3.6.4-1.el7.x86_64 15/23 検証中 : erlang-inets-19.3.6.4-1.el7.x86_64 16/23 検証中 : erlang-hipe-19.3.6.4-1.el7.x86_64 17/23 検証中 : erlang-compiler-19.3.6.4-1.el7.x86_64 18/23 検証中 : erlang-crypto-19.3.6.4-1.el7.x86_64 19/23 検証中 : erlang-stdlib-19.3.6.4-1.el7.x86_64 20/23 検証中 : erlang-erts-19.3.6.4-1.el7.x86_64 21/23 検証中 : erlang-sasl-19.3.6.4-1.el7.x86_64 22/23 検証中 : erlang-ssl-19.3.6.4-1.el7.x86_64 23/23 インストール: rabbitmq-server.noarch 0:3.6.5-1.el7 依存性関連をインストールしました: erlang-asn1.x86_64 0:19.3.6.4-1.el7 erlang-compiler.x86_64 0:19.3.6.4-1.el7 erlang-crypto.x86_64 0:19.3.6.4-1.el7 erlang-eldap.x86_64 0:19.3.6.4-1.el7 erlang-erts.x86_64 0:19.3.6.4-1.el7 erlang-hipe.x86_64 0:19.3.6.4-1.el7 erlang-inets.x86_64 0:19.3.6.4-1.el7 erlang-kernel.x86_64 0:19.3.6.4-1.el7 erlang-mnesia.x86_64 0:19.3.6.4-1.el7 erlang-os_mon.x86_64 0:19.3.6.4-1.el7 erlang-otp_mibs.x86_64 0:19.3.6.4-1.el7 erlang-public_key.x86_64 0:19.3.6.4-1.el7 erlang-runtime_tools.x86_64 0:19.3.6.4-1.el7 erlang-sasl.x86_64 0:19.3.6.4-1.el7 erlang-sd_notify.x86_64 0:1.0-2.el7 erlang-snmp.x86_64 0:19.3.6.4-1.el7 erlang-ssl.x86_64 0:19.3.6.4-1.el7 erlang-stdlib.x86_64 0:19.3.6.4-1.el7 erlang-syntax_tools.x86_64 0:19.3.6.4-1.el7 erlang-tools.x86_64 0:19.3.6.4-1.el7 erlang-xmerl.x86_64 0:19.3.6.4-1.el7 lksctp-tools.x86_64 0:1.0.17-2.el7 完了しました! [root@controller ~]#
RabbitMQ で必要となる TCP 5672 通信を firewalld で許可します。
[root@controller ~]# firewall-cmd --add-port=5672/tcp --zone=public --permanent success [root@controller ~]#
firewalld をリロードし、設定を反映します。
[root@controller ~]# firewall-cmd --reload success [root@controller ~]#
RabbitMQ の自動起動を有効化します。
■ 自動起動の有効化 [root@controller ~]# systemctl enable rabbitmq-server.service Created symlink from /etc/systemd/system/multi-user.target.wants/rabbitmq-server.service to /usr/lib/systemd/system/rabbitmq-server.service. [root@controller ~]# ■ 自動起動の状態確認 [root@controller ~]# systemctl is-enabled rabbitmq-server.service enabled [root@controller ~]#
RabbitMQ を再起動します。
■ 再起動 [root@controller ~]# systemctl restart rabbitmq-server.service [root@controller ~]# ■ 起動状態の確認 [root@controller ~]# systemctl status rabbitmq-server.service ● rabbitmq-server.service - RabbitMQ broker Loaded: loaded (/usr/lib/systemd/system/rabbitmq-server.service; enabled; vendor preset: disabled) Active: active (running) since 日 2018-10-21 02:49:55 JST; 9s ago Main PID: 9400 (beam.smp) Status: "Initialized" CGroup: /system.slice/rabbitmq-server.service ├─9400 /usr/lib64/erlang/erts-8.3.5.3/bin/beam.smp -W w -A 64 -P 1... ├─9590 erl_child_setup 1024 ├─9600 inet_gethost 4 └─9601 inet_gethost 4 10月 21 02:49:54 controller systemd[1]: Starting RabbitMQ broker... 10月 21 02:49:54 controller rabbitmq-server[9400]: RabbitMQ 3.6.5. Copyright... 10月 21 02:49:54 controller rabbitmq-server[9400]: ## ## Licensed unde... 10月 21 02:49:54 controller rabbitmq-server[9400]: ## ## 10月 21 02:49:54 controller rabbitmq-server[9400]: ########## Logs: /var/lo... 10月 21 02:49:54 controller rabbitmq-server[9400]: ###### ## /var/lo... 10月 21 02:49:54 controller rabbitmq-server[9400]: ########## 10月 21 02:49:54 controller rabbitmq-server[9400]: Starting broker... 10月 21 02:49:55 controller systemd[1]: Started RabbitMQ broker. 10月 21 02:49:55 controller rabbitmq-server[9400]: completed with 0 plugins. Hint: Some lines were ellipsized, use -l to show in full. [root@controller ~]#
RabbiMQ に Openstack ユーザーを追加します。ここでは、Openstack のユーザー名は openstack 、ユーザーのパスワードは RABBIT_PASS としているので、実際のユーザーとパスワードに置き換えてください。
※ RABBIT_PASS は、作成する OpenStack ユーザーのパスワードを指定 [root@controller ~]# rabbitmqctl add_user openstack RABBIT_PASS Creating user "openstack" ... [root@controller ~]#
作成した OpenStack ユーザーに対して、設定、書き込み、読み出しの権限を付与します。
[root@controller ~]# rabbitmqctl set_permissions openstack ".*" ".*" ".*" Setting permissions for user "openstack" in vhost "/" ... [root@controller ~]#