Show Table of Contents
2.3. メッセージブローカーのインストール
完全な Red Hat OpenStack Platform 環境をデプロイするには、稼働中のメッセージブローカーを以下の OpenStack コンポーネントに設定する必要があります。
- Block Storage サービス
- Compute サービス
- OpenStack Networking
- Orchestration サービス
- Image サービス
- Telemetry サービス
2.3.1. RabbitMQ メッセージブローカーパッケージのインストール
RabbitMQ はデフォルト (かつ推奨) のメッセージブローカーです。RabbitMQ メッセージングサービスは rabbitmq-server パッケージにより提供されます。
RabbitMQ をインストールします。
#
yum install rabbitmq-server
2.3.2. メッセージブローカーのトラフィックを許可するためのファイアウォール設定
メッセージブローカーをインストールおよび設定する前には、使用するポートで受信接続を許可しておく必要があります。メッセージブローカー (AMQP) のトラフィック用のデフォルトポートは
5672
です。以下の手順で記載するステップはすべて、メッセージングサービスをホストするサーバーに root
ユーザーとしてログインして実行する必要があります。
手順2.8 メッセージブローカーのトラフィックのファイアウォール設定
- テキストエディターで
/etc/sysconfig/iptables
ファイルを開きます。 - このファイルに、ポート
5672
で 受信接続を許可する INPUT ルールを追加します。新規ルールは、トラフィックを REJECT する INPUT ルールよりも前に記載する必要があります。-A INPUT -p tcp -m tcp --dport 5672 -j ACCEPT
/etc/sysconfig/iptables
ファイルへの変更を保存します。iptables
サービスを再起動して、ファイアウォールの変更を有効にします。#
systemctl restart iptables.service
2.3.3. RabbitMQ メッセージブローカーの起動と設定
手順2.9 RabbitMQ メッセージブローカーを OpenStack で使用するための起動および設定手順
rabbitmq-server
サービスを立ち上げ、ブート時に起動するように設定します。#
systemctl start rabbitmq-server.service
#
systemctl enable rabbitmq-server.service
- rabbitmq-server パッケージのインストール時には、RabbitMQ サービスの
guest
ユーザーは、デフォルトのguest
パスワードとともに自動的に作成されます。Red Hat では、特に IPv6 が利用可能な場合には、このデフォルトパスワードを変更することを強くお勧めします。IPv6 では、RabbitMQ はネットワーク外部からアクセスが可能となる場合があります。#
rabbitmqctl change_password guest NEW_RABBITMQ_PASS
NEW_RABBITMQ_PASS は、よりセキュアなパスワードに置き換えます。 - Block Storage サービス、Compute サービス、OpenStack Networking、Orchestration サービス、Image サービス、Telemetry サービス用の RabbitMQ ユーザーアカウントを作成します。
#
rabbitmqctl add_user cinder CINDER_PASS
#
rabbitmqctl add_user nova NOVA_PASS
#
rabbitmqctl add_user neutron NEUTRON_PASS
#
rabbitmqctl add_user heat HEAT_PASS
#
rabbitmqctl add_user glance GLANCE_PASS
#
rabbitmqctl add_user ceilometer CEILOMETER_PASS
CINDER_PASS、NOVA_PASS、NEUTRON_PASS、HEAT_PASS、GLANCE_PASS、CEILOMETER_PASS は、各サービスのセキュアなパスワードに置き換えてください。 - これらの RabbitMQ ユーザーに、全リソースに対する読み取り/書き込みのパーミッションを付与します。
#
rabbitmqctl set_permissions cinder ".*" ".*" ".*"
#
rabbitmqctl set_permissions nova ".*" ".*" ".*"
#
rabbitmqctl set_permissions neutron ".*" ".*" ".*"
#
rabbitmqctl set_permissions heat ".*" ".*" ".*"
#
rabbitmqctl set_permissions glance ".*" ".*" ".*"
#
rabbitmqctl set_permissions ceilometer ".*" ".*" ".*"
2.3.4. RabbitMQ メッセージブローカーでの SSL の有効化
RabbitMQ メッセージブローカーには SSL 機能が組み込まれており、トラフィックのセキュリティー保護に使用することができます。SSL 通信に必要な証明書を作成して、
/etc/rabbitmq/rabbitmq.config
設定ファイルで RabbitMQ に SSL を設定します。
手順2.10 RabbitMQ メッセージブローカーでの SSL の有効化
- 必要な証明書を保管するためのディレクトリーを作成します。
#
mkdir /etc/pki/rabbitmq
- 証明書用のセキュアなパスワードを選択して、
/etc/pki/rabbitmq
ディレクトリー内にファイル形式で保存します。#
echo SSL_RABBITMQ_PW > /etc/pki/rabbitmq/certpw
SSL_RABBITMQ_PW は、証明書のパスワードに置き換えます。このパスワードは、後で必要な証明書をさらにセキュリティー保護する際に使用します。 - 証明書のディレクトリーとパスワードファイルのパーミッションを設定します。
#
chmod 700 /etc/pki/rabbitmq
#
chmod 600 /etc/pki/rabbitmq/certpw
/etc/pki/rabbitmq/certpw
ファイル内のパスワードを使用して/etc/pki/rabbitmq
ディレクトリーに証明書データベースファイル (*.db
) を作成します。#
certutil -N -d /etc/pki/rabbitmq -f /etc/pki/rabbitmq/certpw
- 実稼働環境では、信頼のできるサードパーティーの証明局 (CA) を使用して証明書に署名することを推奨します。サードパーティーの CA には、証明書署名要求 (CSR) が必要となります。
#
certutil -R -d /etc/pki/rabbitmq -s "CN=RABBITMQ_HOST" \
-a -f /etc/pki/rabbitmq/certpw > RABBITMQ_HOST.csr
RABBITMQ_HOST は、RabbitMQ メッセージブローカーをホストするサーバーの IP アドレスまたはホスト名に置き換えます。このコマンドにより、RABBITMQ_HOST.csr
という名前の CSR とキーファイル (keyfile.key) が生成されます。このキーファイルは、後で RabbitMQ メッセージブローカーが SSL を使用するように設定する際に使用します。注記
一部の CA には、"CN=RABBITMQ_HOST"
以外の追加の値が必要な場合があります。 RABBITMQ_HOST.csr
をサードパーティーの CA に提供して署名を受けます。CA は署名済みの証明書 (server.crt) と CA ファイル (ca.crt) を提供します。これらのファイルを証明書のデータベースに追加します。#
certutil -A -d /etc/pki/rabbitmq -n RABBITMQ_HOST -f /etc/pki/rabbitmq/certpw \
-t u,u,u -a -i /path/to/server.crt
#
certutil -A -d /etc/pki/rabbitmq -n "Your CA certificate" \
-f /etc/pki/rabbitmq/certpw -t CT,C,C -a -i /path/to/ca.crt
- RabbitMQ メッセージブローカーがセキュアな通信に証明書ファイルを使用するように設定します。テキストエディターで
/etc/rabbitmq/rabbitmq.config
の設定ファイルを開き、以下のようにrabbit
のセクションを編集します。- 以下の行を探します。
%% {ssl_listeners, [5671]},
パーセントの記号を削除して、設定をアンコメントします。{ssl_listeners, [5671]},
- 次に以下の行まで、下方向にスクロールします。
%% {ssl_options, [{cacertfile, "/path/to/testca/cacert.pem"},
この行と、その次のssl_options
で構成される数行を、以下の内容に置き換えます。{ssl_options, [{cacertfile, "/path/to/ca.crt"}, {certfile, "/path/to/server.crt"}, {keyfile, "/path/to/keyfile.key"}, {verify, verify_peer}, {versions, ['tlsv1.2','tlsv1.1',tlsv1]}, {fail_if_no_peer_cert, false}]}
- /path/to/ca.crt は、CA 証明書への絶対パスに置き換えます。
- /path/to/server.crt は、署名済みの証明書への絶対パスに置き換えます。
- /path/to/keyfile.key はキーファイルへの絶対パスに置き換えます。
- 特定の TLS 暗号化バージョンのみのサポートを含めるように
rabbitmq.config
を編集して、SSLv3 を無効化します。{rabbit, [ {ssl_options, [{versions, ['tlsv1.2','tlsv1.1',tlsv1]}]}, ]}
- RabbitMQ サービスを再起動し、変更を有効にします。
# systemctl restart rabbitmq-server.service
2.3.5. クライアント用 SSL 証明書のエクスポート
サーバーで SSL を有効にする場合には、セキュアな接続を確立するために、クライアントにその SSL 証明書のコピーが必要です。
以下のコマンド例は、メッセージブローカーの証明書データベースからのクライアント用証明書と秘密鍵をエクスポートするのに使用することができます。
#
pk12util -o <p12exportfile> -n <certname> -d <certdir> -w <p12filepwfile>
#
openssl pkcs12 -in <p12exportfile> -out <clcertname> -nodes -clcerts -passin pass:<p12pw>
SSL コマンドとオプションに関する詳細情報は、OpenSSL のマニュアル を参照してください。または、Red Hat Enterprise Linux では、
openssl
のマニュアルページを参照してください。
Comments