コンテナのRabbitMQを作成します。
最新rabbimqミラーを引っ張るドッカプルRabbitMQのを使用して、ドッキングウィンドウプルはhaproxyミラーを引くhaproxy
通信とrabbimq用ドッキングウィンドウネットワークrabbtimanetのhaproxyを作成します。
ドッキングウィンドウのネットワーク作成rabbtimanet
3ノードRabbitMQのコンテナを作成します。
rabbitmq1:
ドッキングウィンドウの実行-d --name = rabbitmq1 -p 5672:5672 15672 -p:15672 -e RABBITMQ_NODENAME = rabbitmq1 -e RABBITMQ_ERLANG_COOKIE = 'YZSDHWMFSMKEMBDHSGGZ' -h rabbitmq1 --net = rabbtimanetのRabbitMQ:管理
rabbitmq2:
ドッキングウィンドウの実行-d --name = rabbitmq2 -p 5673:5672 15673 -p:15672 -e RABBITMQ_NODENAME = rabbitmq2 -e RABBITMQ_ERLANG_COOKIE = 'YZSDHWMFSMKEMBDHSGGZ' -h rabbitmq2 --net = rabbtimanetのRabbitMQ:管理
rabbitmq3:
ドッキングウィンドウの実行-d --name = rabbitmq3 -p 5674:5672 15674 -p:15672 -e RABBITMQ_NODENAME = rabbitmq3 -e RABBITMQ_ERLANG_COOKIE = 'YZSDHWMFSMKEMBDHSGGZ' -h rabbitmq3 --net = rabbtimanetのRabbitMQ:管理
RabbitMQのクラスタ
それぞれ、容器rabbitmq2とrabbitmq3に(EXEC -itコンテナID / binに/ bashのをドッカー)、次の手順を実行します。
rabbitmqctlのstop_appの rabbitmqctlリセット rabbitmqctl join_cluster --ram rabbitmq1 @ rabbitmq1 rabbitmqctl start_app
展開Haproxy
次のように設定ファイルを編集Haproxy:
global daemon maxconn 256 defaults mode http timeout connect 5000ms timeout client 5000ms timeout server 5000ms listen rabbitmq_cluster监听5677端口转发到rabbitmq服务 bind 0.0.0.0:5677 option tcplog mode tcp balance leastconn server rabbit1 rabbitmq1:5672 check inter 2s rise 2 fall 3 server rabbit2 rabbitmq2:5672 check inter 2s rise 2 fall 3 server rabbit3 rabbitmq3:5672 check inter 2s rise 2 fall 3 listen http_front #haproxy的客户页面 bind 0.0.0.0:80 stats uri /haproxy?stats listen rabbitmq_admin #监听8011端口转发到rabbitmq的客户端 bind 0.0.0.0:8001 server rabbit1 rabbitmq1:15672 check inter 2s rise 2 fall 3 server rabbit2 rabbitmq2:15672 check inter 2s rise 2 fall 3 server rabbit2 rabbitmq3:15672 check inter 2s rise 2 fall 3
创建haproxy容器
docker run -d --name rabbitmq-haproxy -p 8090:80 -p 5677:5677 -p 8001:8001 --net=rabbtimanet -v /home/haproxy/haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg:ro haproxy:latest
通过外部8090访问haproxy容器的80端口,外部8001访问haproxy容器8001,外部5677访问haproxy 容器5677端口
测试
连接rabbitmq 的5677端口,并发送数据,检查haproxy的web页面,对每次的请求转发至不同的rabbitmq
通过haproxy的8001端口访问rabbitmq的客户端: