1. rabbitmq、haproxy安装
参考
http://www.jianshu.com/p/edf2c8c7d83f (haproxy)
http://www.jianshu.com/p/bd5362ab0c7e (Rabbitmq)
rabbitmq安装在192.168.0.1、192.168.0.2、192.168.0.3 三台机器
2. rabbitmq集群搭建
2.1 cookie文件
因为RabbitMQ的集群是通过Erlang的集群来实现的,所以,要求三台机器的/var/lib/rabbitmq/.erlang.cookie 文件内容一致,用VI等工具将它的内容修改为zHDCGETPYWOWREASJUAB
由于RabbitMQ在启动Booker时会检查该文件的权限,必须为400,否则会报错,所以要修改文件的权限
chmod 400 .erlang.cookie
2.2 修改各机器hosts
cd /etc
cp hosts hosts0319
vi hosts
172.16.0.104 pzs-test-1
172.16.0.105 pzs-test-2
172.16.0.106 pzs-test-3
保证三台机器可以互相访问对方
2.3 加入集群
对主节点(104):
#启动Broker
rabbitmq-server –detached > nohup.out&
#启动集群
rabbitmqctl start_app
#查看集群状态
rabbitmqctl cluster_status
对备节点(102、103):
rabbitmq-server –detached > nohup.out&
rabbitmqctl start_app
rabbitmqctl stop_app
#加入集群
rabbitmqctl join_cluster --ram rabbit@pzs-test-1
rabbitmqctl start_app
#查看集群状态
rabbitmqctl cluster_status
如果备节点不能加入主节点,可以换另外两台机器之一(102或者103)作为主节点,剩余作为备节点试试。
在三台机器运行以下命令:
设置成镜像队列
# rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all"}' //["^"匹配所有]
3. HaProxy配置
global
log 127.0.0.1 local0
log 127.0.0.1 local1 notice
maxconn 409600 #并发数
user haproxy
group haproxy
daemon
defaults
log global
#使用tcp监听模式
mode tcp
option tcplog
option dontlognull
retries 3
option redispatch
maxconn 2000
timeout connect 10000
timeout client 50000
timeout server 50000
listen admin_stat
#haproxy的web管理端口 8888,自行设置
bind 0.0.0.0:8888
mode http
stats refresh 30s
#haproxy web管理url,自行设置
stats uri /haproxy_stats
stats realm Haproxy\ Statistics
#haproxy web管理用户名密码,自行设置
stats auth admin:admin
stats hide-version
listen rabbitmq
bind 0.0.0.0:5670
##listen rabbitmq 10.10.1.53:5670
#监听5670端口,并转发给两个个节点的5672端口,采用轮询策略
mode tcp
balance roundrobin
server rabbitmq-1 192.168.0.1.:5672 check inter 2000 rise 2 fall 3
server rabbitmq-2 192.168.0.2:5672 check inter 2000 rise 2 fall 3
server rabbitmq-3 192.168.0.3:5672 check inter 2000 rise 2 fall 3
启动haproxy
haproxy -f haproxy.cfg