記事のディレクトリ
ドッカー - クラスタのRabbitMQを構築します
1、まず、引き上げミラーのRabbitMQ
私たちは、例えば、3.8.2バージョンを持っています
docker pull rabbitmq:3.8.2-management
2、実施例3及びその後のRabbitMQを実行
# 运行镜像,集群模式
docker run \
--name rabbitmq-1 \
--hostname=rabbitmq-1 \
--restart=always \
-d \
-e RABBITMQ_DEFAULT_USER=rabbitmq \
-e RABBITMQ_DEFAULT_PASS=OnlinezuozuoCreated.rabbitmq.test.password \
-e RABBITMQ_ERLANG_COOKIE='oNYE40jp2YbuXfWKd9vFu1VZiic8' \
-v /etc/docker/volume/rabbitmqcluster/rabbitmq-1:/var/lib/rabbitmq \
-p 52001:5672 \
-p 52002:15672 \
rabbitmq:3.8.2-management
docker run \
--name rabbitmq-2 \
--hostname=rabbitmq-2 \
--restart=always \
--link rabbitmq-1:rabbitmq-1 \
-d \
-e RABBITMQ_DEFAULT_USER=rabbitmq \
-e RABBITMQ_DEFAULT_PASS=OnlinezuozuoCreated.rabbitmq.test.password \
-e RABBITMQ_ERLANG_COOKIE='oNYE40jp2YbuXfWKd9vFu1VZiic8' \
-v /etc/docker/volume/rabbitmqcluster/rabbitmq-2:/var/lib/rabbitmq \
-p 52301:5672 \
-p 52302:15672 \
rabbitmq:3.8.2-management
docker run \
--name rabbitmq-3 \
--hostname=rabbitmq-3 \
--restart=always \
--link rabbitmq-1:rabbitmq-1 \
--link rabbitmq-2:rabbitmq-2 \
-d \
-e RABBITMQ_DEFAULT_USER=rabbitmq \
-e RABBITMQ_DEFAULT_PASS=OnlinezuozuoCreated.rabbitmq.test.password \
-e RABBITMQ_ERLANG_COOKIE='oNYE40jp2YbuXfWKd9vFu1VZiic8' \
-v /etc/docker/volume/rabbitmqcluster/rabbitmq-3:/var/lib/rabbitmq \
-p 52501:5672 \
-p 52502:15672 \
rabbitmq:3.8.2-management
RABBITMQ_ERLANG_COOKIE
クラスタ接続のための文字列の通信のRabbitMQクラスタ、それは一貫していなければなりません
--link rabbitmq-1:rabbitmq-1 \
それらが通信できるように、我々は、実施例2 3によって接続されています。
3、その後、私たちは、クラスタを構築し、同期のタイムゾーン
最初のインスタンスに、以下のコマンドを一つずつ実行
docker exec -it rabbitmq-1 bash
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl start_app
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime &&
echo "Asia/Shanghai" >/etc/timezone
date "+%Y-%m-%d %H:%M:%S" ## 显示设置后,新的系统时间
exit
数2個の場合、一つ一つを入力して、次のコマンドを実行
docker exec -it rabbitmq-2 bash
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl join_cluster --ram rabbit@rabbitmq-1
rabbitmqctl start_app
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime &&
echo "Asia/Shanghai" >/etc/timezone
date "+%Y-%m-%d %H:%M:%S" ## 显示设置后,新的系统时间
exit
実施例IIIは、Aでコマンドを入力して実行します
docker exec -it rabbitmq-3 bash
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl join_cluster --ram rabbit@rabbitmq-1
rabbitmqctl start_app
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime &&
echo "Asia/Shanghai" >/etc/timezone
date "+%Y-%m-%d %H:%M:%S" ## 显示设置后,新的系统时间
exit
4、どのようにコンテナを削除するには
あなたが起動に失敗した、またはポートの職業などが発生した場合、我々はコンテナを停止し、容器を取り外し、再生成することができます
docker container stop rabbitmq-1
docker container rm rabbitmq-1
docker container stop rabbitmq-2
docker container rm rabbitmq-2
docker container stop rabbitmq-3
docker container rm rabbitmq-3
5、ファイアウォール、ポート・コントローラ・ポートまたは解放、運転状態検出手段を開きます
アクセスすることにより、
http:// localhostを:52101 /
http:// localhostを:52301 /
http:// localhostを:52501 /
上記のスクリプトで定義されたアカウントの通常の着陸、口座番号とパスワードを確認してください
そして、クラスタが良好な状態である参照してください。
nginxの負荷分散によって6、
nginxの負荷は、管理ページを高めるためにバランスをとります
upstream rabbitmq {
server localhost:52002 weight=1 max_fails=2 fail_timeout=10s;
server localhost:52302 weight=1 max_fails=2 fail_timeout=10s;
server localhost:52502 weight=1 max_fails=2 fail_timeout=10s;
}
location /
{
proxy_pass http://rabbitmq;
proxy_set_header Host rabbitmq;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header REMOTE-HOST $remote_addr;
add_header X-Cache $upstream_cache_status;
#Set Nginx Cache
add_header Cache-Control no-cache;
expires 12h;
}
このように、我々はできる、負荷がnginxのリバースプロキシアクセス経由のアクセスにコンソールのバランスを取ります
接続ポートの負荷分散を高めるnginxの
stream{
upstream rabbitmq {
server localhost:52001 weight=1 max_fails=2 fail_timeout=10s;
server localhost:52301 weight=1 max_fails=2 fail_timeout=10s;
server localhost:52501 weight=1 max_fails=2 fail_timeout=10s;
}
server{
listen 52701;
proxy_connect_timeout 20s;
proxy_pass rabbitmq;
}
}
このように、我々は、nginxのリバースプロキシ経由のアクセスデータ接続をロードバランシングを行うことができます