#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 ... 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
运维网声明
1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网 享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com