rabbitmq集群

#haproxy+keepalived+rabbitmq集群

192.168.6.128  haproxy+keepalived

192.168.6.129  haproxy+keepalived

192.168.6.130  rabbitmq

192.168.6.131  rabbitmq

192.168.6.132  vip

1、erlang安装:

wget http://www.erlang.org/download/otp_src_R15B01.tar.gz

tar zxvf otp_src_R15B01.tar.gz

cd otp_src_R15B01

yum -y install make gcc gcc-c++ kernel-devel m4 ncurses-devel openssl-devel

 ./configure --prefix=/usr/local/erlang --enable-hipe --enable-threads --enable-smp-support --enable-kernel-poll

 make;make install


添加这三句到/etc/profile

ERL_HOME=/usr/local/erlang


PATH=$ERL_HOME/bin:$PATH


export ERL_HOME PATH


source /etc/profile


1、rabbit安装 :

 wget http://www.rabbitmq.com/releases/rabbitmq-server/v3.0.1/rabbitmq-server-3.0.1.tar.gz

 tar zxvf rabbitmq-server-3.0.1.tar.gz

 cd rabbitmq-server-3.0.1

 yum install python-simplejson libxslt xmlto -y

 make TARGET_DIR=/usr/local/rabbitmq SBIN_DIR=/usr/local/sbin MAN_DIR=/usr/local/man install

在安装好的两台节点服务器中,分别修改/etc/hosts文件,指定他们的hosts文件

192.168.6.130 web3

192.168.6.131 web4


Rabbitmq的集群是依赖于erlang的集群来工作的,所以必须先构建起erlang的集群环境。Erlang的集群中各节点是通过一个magic cookie来实现的,这个cookie存放在 /var/lib/rabbitmq/.erlang.cookie 中,cookie有可能会在$HOME/.erlang.cookie,文件是400的权限。所以必须保证各节点cookie保持一致,否则节点之间就无法通信。


rabbitmq-server start 两个节点启动

rabbitmqctl stop

rabbitmq-server -detached

131上执行:rabbitmqctl join_cluster  rabbit@web3 

rabbitmqctl cluster_status 查看是否组成集群

上面配置RabbitMQ默认集群模式,但并不保证队列的高可用性,尽管交换机、绑定这些可以复制到集群里的任何一个节点,但是队列内容不会复制,虽然该模式解决一部分节点压力,但队列节点宕机直接导致该队列无法使用,只能等待重启,所以要想在队列节点宕机或故障也能正常使用,就要复制队列内容到集群里的每个节点,需要创建镜像队列。

使用Rabbit镜像功能,需要基于rabbitmq策略来实现,政策是用来控制和修改群集范围的某个vhost队列行为和Exchange行为

在cluster中任意节点启用策略,策略会自动同步到集群节点

 

 rabbitmqctl set_policy ha-all "^ha\." '{"ha-mode":"all"}'




 haproxy配置文件:


 global

    maxconn 51200

    chroot /usr/local/haproxy

    uid 99

    gid 99

    daemon

    #quiet  

    nbproc 1 #进程数  

    pidfile /usr/local/haproxy/logs/haproxy.pid


defaults

        mode http #默认的模式mode { tcp|http|health },tcp是4层,http是7层,health只会返回OK  

        #retries 2 #两次连接失败就认为是服务器不可用,也可以通过后面设置  

        option redispatch #当serverId对应的服务器挂掉后,强制定向到其他健康的服务器  

        option abortonclose #当服务器负载很高的时候,自动结束掉当前队列处理比较久的链接  

        timeout connect 5000ms #连接超时  

        timeout client 30000ms #客户端超时  

        timeout server 30000ms #服务器超时  

        #timeout check 2000 #=心跳检测超时  

        log 127.0.0.1 local0 err #[err warning info debug]  

        balance roundrobin                     #负载均衡算法  

#        option  httplog                        #日志类别,采用httplog  

#        option  httpclose   #每次请求完毕后主动关闭http通道,ha-proxy不支持keep-alive,只能模拟这种模式的实现  

#        option  dontlognull  

#        option  forwardfor  #如果后端服务器需要获得客户端真实ip需要配置的参数,可以从Http Header中获得客户端ip  

frontend HAPROXY

        bind *:80

        mode http

        option httplog

        default_backend www.web.com

#listen  localhost 192.168.6.128:80

#        mode http    

#        option httplog #采用http日志格式  

#        stats refresh 30s #统计页面自动刷新时间  

#        stats uri /stats #统计页面url  

#        stats realm Haproxy Manager #统计页面密码框上提示文本  

#        stats auth admin:admin #统计页面用户名和密码设置  

#        #stats hide-version #隐藏统计页面上HAProxy的版本信息

backend www.web.com       #这是做的nginx负载均衡

        balance source

        server web2 192.168.6.131:80 check inter 1500 rise 3 fall 3

        server web3 192.168.6.130:80 check inter 1500 rise 3 fall 3


listen rabbitmq_cluster 0.0.0.0:5672  #这是rabbitmq

    mode tcp

    balance roundrobin

    server   rqslave1 192.168.6.131:5672 check inter 2000 rise 2 fall 3

    server   rqslave2 192.168.6.130:5672 check inter 2000 rise 2 fall 3




#keepalived详情见自己博客!


你可能感兴趣的:(haproxy,rabbitmq,keepalvied)