RabbitMQインストール
公式参考(https://www.rabbitmq.com/install-rpm.html)
Erlangインストール
前提
- RabbitMQはErlangで動いてるので、前提としてErlangインストールが必要
- RabbitMQが対応してるバージョン確認しておく
Erlangインストール
rabbitmq-erlangのリポジトリを設定する。
# rpm --import https://www.rabbitmq.com/rabbitmq-release-signing-key.asc
[rabbitmq-erlang] name=rabbitmq-erlang baseurl=https://dl.bintray.com/rabbitmq/rpm/erlang/20/el/7 gpgcheck=1 gpgkey=https://dl.bintray.com/rabbitmq/Keys/rabbitmq-release-signing-key.asc repo_gpgcheck=0 enabled=1
インストールする
# yum install erlang
# yum info erlang
Installed Packages
Name : erlang
Arch : x86_64
Version : 20.2.3
Release : 1.el7.centos
Size : 31 M
Repo : installed
From repo : rabbitmq-erlang
Summary : General-purpose programming language and runtime environment
URL : http://www.erlang.org
License : ERPL
Description : This is a minimal packaging of Erlang produced by Pivotal to support
: running RabbitMQ. Compared to the community Erlang packaging it is
: monolithic, has fewer dependencies, and has lower disk and memory
: overhead. Many applications from Erlang Open Telecom Platform (OTP)
: have been removed. The following applications remain: asn1, compiler,
: crypto, erl_interface, erts, hipe, inets, kernel, mnesia, os_mon,
: otp_mibs, public_key, reltool, runtime_tools, sasl, snmp, ssl, stdlib,
: syntax_tools and xmerl.
epelリポジトリからインストールする場合(epelは古い場合があるので注意する)
# yum install epel-release
# yum install erlang
# yum info erlang
Installed Packages
Name : erlang
Arch : x86_64
Version : R16B
Release : 03.18.el7
Size : 32 k
Repo : installed
From repo : epel
Summary : General-purpose programming language and runtime environment
URL : http://www.erlang.org
License : ERPL
Description : Erlang is a general-purpose programming language and runtime
: environment. Erlang has built-in support for concurrency, distribution
: and fault tolerance. Erlang is used in several large telecommunication
: systems from Ericsson.
RabbitMQインストール
# rpm --import https://www.rabbitmq.com/rabbitmq-release-signing-key.asc # yum install https://dl.bintray.com/rabbitmq/all/rabbitmq-server/3.7.4/rabbitmq-server-3.7.4-1.el7.noarch.rpm
初期設定
ulimits変更
[Service] LimitNOFILE=300000
RabbitMQのPluginインストール
# rabbitmq-plugins enable rabbitmq_management
Cluster設定
名前解決の確認
host名で各ノードへ接続にいくようなので、事前にDNSやhostsなどで各ノードのホスト名を名前解決できることを確認しておく。
192.168.1.11 rabbitmq1 192.168.1.12 rabbitmq2 192.168.1.13 rabbitmq3
erlang.cookieの設定
クラスタ内の全ノードで同じcookie値を設定しておく必要がある。
1台目のノードのerlnag.cookieの値を確認し他のノードにも同じ値を設定する。
1台目のノードのerlnag.cookieの値を確認
# cat /var/lib/rabbitmq/.erlang.cookie
2台目以降のノードに1台目のノードと同じ値を設定する
# echo 'xxxxxxxx' | tr -d '\n' > /var/lib/rabbitmq/.erlang.cookie # chown rabbitmq:rabbitmq /var/lib/rabbitmq/.erlang.cookie # chmod 0400 /var/lib/rabbitmq/.erlang.cookie
クラスタ参加
全台のRabbitMQを起動する
# systemctl start rabbitmq-server
全台でクラスタ状態を確認すると、それぞれ単一ノードで動いてる。
# rabbitmqctl cluster_status
Cluster status of node rabbit@rabbitmq1 ...
[{nodes,[{disc,[rabbit@rabbitmq1]}]},
{running_nodes,[rabbit@rabbitmq1]},
{cluster_name,<<"rabbit@rabbitmq1.local">>},
{partitions,[]},
{alarms,[{rabbit@rabbitmq1,[]}]}]
2台目と3台目のノードを1台目のクラスタに参加させる
# rabbitmqctl stop_app Stopping rabbit application on node rabbit@rabbitmq2 ... # rabbitmqctl join_cluster rabbit@rabbitmq1 Clustering node rabbit@rabbitmq2 with rabbit@rabbitmq1 # rabbitmqctl start_app Starting node rabbit@rabbitmq2 ... completed with 3 plugins.
全ノードがrunningになってること
# rabbitmqctl cluster_status
Cluster status of node rabbit@rabbitmq1 ...
[{nodes,[{disc,[rabbit@rabbitmq1,rabbit@rabbitmq2,rabbit@rabbitmq3]}]},
{running_nodes,[rabbit@rabbitmq3,rabbit@rabbitmq2,rabbit@rabbitmq1]},
{cluster_name,<<"rabbit@rabbitmq1.local">>},
{partitions,[]},
{alarms,[{rabbit@rabbitmq3,[]},{rabbit@rabbitmq2,[]},{rabbit@rabbitmq1,[]}]}]
アカウント作成
デフォルトではguestアカウントで管理画面にアクセスできるが、ローカルホストからの接続のみになっていて、リモートからの接続できない。
そのため、管理者用アカウントを作成する。(1台で設定したら他のノードにも反映される)
# rabbitmqctl add_user admin password
作成したユーザに管理者権限のタグ(administrator)を設定する
# rabbitmqctl set_user_tags admin administrator
作成したユーザにvhostへの権限を付与(vhost(/)に対して設定変更可能、書き込み可能、読み込み可能)
# rabbitmqctl set_permissions admin '.*' '.*' '.*'
管理画面へアクセスして確認

http://xxx.xxx.xxx.xxx:15672 にアクセスして確認