镜像
1 2 3
| docker pull rabbitmq:3-management
docker pull rabbitmq:3-management
|
link 连接(仅集群,不代理)
node_0
1
| docker run -d --hostname node_0_rabbit --name node_0_rabbit -e RABBITMQ_DEFAULT_USER=your username -e RABBITMQ_DEFAULT_PASS=yous pword -e RABBITMQ_ERLANG_COOKIE='rabbitcookie' -p 15672:15672 -p 5672:5672 rabbitmq:3-management
|
node_1
1
| docker run -d --hostname node_1_rabbit --name node_1_rabbit --link node_0_rabbit:node_0_rabbit -e RABBITMQ_ERLANG_COOKIE='rabbitcookie' -e RABBITMQ_DEFAULT_USER=your username -e RABBITMQ_DEFAULT_PASS=yous pword -p 15673:15672 -p 5673:5672 rabbitmq:3-management
|
node_2
1
| docker run -d --hostname node_2_rabbit --name node_2_rabbit --link node_0_rabbit:node_0_rabbit --link node_1_rabbit:node_1_rabbit -e RABBITMQ_ERLANG_COOKIE='rabbitcookie' -e RABBITMQ_DEFAULT_USER=your username -e RABBITMQ_DEFAULT_PASS=yous pword -p 15674:15672 -p 5674:5672 rabbitmq:3-management
|
network 连接
内网ip一览
- 172.100.100.3 - node_0_rabbit
- 172.100.100.4 - node_1_rabbit
- 172.100.100.5 - node_2_rabbit
- 172.100.100.6 - haproxy_0
- 172.100.100.7 - haproxy_1
创建网卡
1
| docker network create --subnet=172.100.100.0/24 rabbit_net
|
注意:docker rabbitmq需要节点设置erlang cookie,节点之间需要一致。服务器则需要拷贝相关.erlang.cookie文件(好像是这个)
node_0
1 2 3 4 5 6 7 8 9 10
| docker run -d --hostname node_0_rabbit \ --name node_0_rabbit \ --net=rabbit_net \ --ip=172.100.100.3 \ -e RABBITMQ_DEFAULT_USER=your username \ -e RABBITMQ_DEFAULT_PASS=yous pword \ -e RABBITMQ_ERLANG_COOKIE='rabbitcookie' \ -p 15672:15672 \ -p 5672:5672 \ rabbitmq:3-management
|
node_1
1 2 3 4 5 6 7 8 9 10
| docker run -d --hostname node_1_rabbit \ --name node_1_rabbit \ --net=rabbit_net \ --ip=172.100.100.4 \ -e RABBITMQ_DEFAULT_USER=your username \ -e RABBITMQ_DEFAULT_PASS=yous pword \ -e RABBITMQ_ERLANG_COOKIE='rabbitcookie' \ -p 15673:15672 \ -p 5673:5672 \ rabbitmq:3-management
|
node_2
1 2 3 4 5 6 7 8 9 10
| docker run -d --hostname node_2_rabbit \ --name node_2_rabbit \ --net=rabbit_net \ --ip=172.100.100.5 \ -e RABBITMQ_DEFAULT_USER=your username \ -e RABBITMQ_DEFAULT_PASS=yous pword \ -e RABBITMQ_ERLANG_COOKIE='rabbitcookie' \ -p 15674:15672 \ -p 5674:5672 \ rabbitmq:3-management
|
haproxy_0
1 2 3 4 5 6 7 8 9
| # 5670 web监控 http://your ip address:5670/rabbitmq-stats # 5671 集群端口 # 关于配置 docker run -d --hostname haproxy_0 \ --name haproxy_0 \ -p 5670-5671:5670-5671 \ -v /home/haproxy/haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg \ --ip=172.100.100.6 \ --net=rabbit_net haproxy
|
haproxy_1 同理 后面高可用备用
haproxy.cfg
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
| global maxconn 5120 log 127.0.0.1 local0 info #[err warning info debug] chroot /usr/local/sbin #chroot运行的路径 daemon #以后台形式运行haproxy nbproc 20 pidfile /var/run/haproxy.pid #haproxy的pid存放路径,启动进程的用户必须有权限访问此文件 defaults log global mode tcp #所处理的类别 (#7层 http;4层tcp ) maxconn 2000 #最大连接数 option dontlognull #不记录健康检查的日志信息 option redispatch #serverId对应的服务器挂掉后,强制定向到其他健康的服务器 option tcplog #stats refresh 30 retries 3 #3次连接失败就认为服务不可用,也可以通过后面设置 #balance roundrobin #balance source #balance leastconn #timeout connect 5000 #timeout client 50000 #timeout server 50000 #timeout check 2000 contimeout 5s clitimeout 60s srvtimeout 15s #配置haproxy web监控 listen stats bind 0.0.0.0:5670 mode http option httplog stats enable stats uri /rabbitmq-stats #统计页面url stats refresh 5s listen rabbitmq_cluster bind 0.0.0.0:5671 option tcplog mode tcp #timeout client 3h #timeout server 3h #option clitcpka balance roundrobin #负载均衡算法(#banlance roundrobin 轮询,balance source 保存session值,支持static-rr,leastconn,first,uri等参数) #balance url_param userid #balance url_param session_id check_post 64 #balance hdr(User-Agent) #balance hdr(host) #balance hdr(Host) use_domain_only #balance rdp-cookie #balance leastconn #balance source //ip server node_0_rabbit 172.100.100.3:5672 check inter 5s rise 2 fall 2 #check inter 2000 是检测心跳频率,rise 2是2次正确认为服务器可用,fall 3是3次失败认为服务器不可用 server node_1_rabbit 172.100.100.4:5672 check inter 5s rise 2 fall 2 server node_2_rabbit 172.100.100.5:5672 check inter 5s rise 2 fall 2
|
设置mq集群
使用rabbitmqctl
1 2 3 4 5 6 7 8 9 10 11 12
| # node_0 docker exec -it node_0_rabbit bash rabbitmqctl stop_app rabbitmqctl reset rabbitmqctl start_app
# node_1 node_2 (join_cluster --ram 以内存的方式加入,默认disc) docker exec -it node_1(2)_rabbit bash rabbitmqctl stop_app rabbitmqctl reset rabbitmqctl join_cluster [email protected]_0_rabbit rabbitmqctl start_app
|
开启集群镜像模式
1 2
| # 任何rabbitmq节点 rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all"}'
|
相关链接