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 にアクセスして確認