ドッカー - クラスタのRabbitMQを構築します

ドッカー - クラスタの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のリバースプロキシ経由のアクセスデータ接続をロードバランシングを行うことができます

公開された447元の記事 ウォンの賞賛1345 ビュー236万+

おすすめ

転載: blog.csdn.net/qq_15071263/article/details/104538722