1.增加负载均衡器

关于负载均衡器,商业的比如F5的BIG-IP,Radware的AppDirector,是硬件架构的产品,可以实现很高的处理能力。但这些产品昂贵的价格会让人止步,所以我们还有软件负载均衡方案。互联网公司常用的软件LB一般有LVS、HAProxy、Nginx等。LVS是一个内核层的产品,主要在第四层负责数据包转发,使用较复杂。HAProxy和Nginx是应用层的产品,但Nginx主要用于处理HTTP,所以这里选择HAProxy作为RabbitMQ前端的LB。HAProxy的安装使用非常简单,在Centos下直接yum install haproxy,然后更改/etc/haproxy/haproxy.cfg 文件即可,文件内容大概如下:

  1. #---------------------------------------------------------------------
  2. # Global settings
  3. #---------------------------------------------------------------------
  4. global
  5. log         127.0.0.1 local2
  6. chroot      /var/lib/haproxy
  7. pidfile     /var/run/haproxy.pid
  8. maxconn     4000
  9. user        haproxy
  10. group       haproxy
  11. daemon
  12. # turn on stats unix socket
  13. stats socket /var/lib/haproxy/stats
  14. #---------------------------------------------------------------------
  15. # common defaults that all the 'listen' and 'backend' sections will
  16. # use if not designated in their block
  17. #---------------------------------------------------------------------
  18. defaults
  19. mode                    http
  20. log                     global
  21. option                  httplog
  22. option                  dontlognull
  23. option http-server-close
  24. option forwardfor       except 127.0.0.0/8
  25. option                  redispatch
  26. retries                 3
  27. timeout http-request    10s
  28. timeout queue           1m
  29. timeout connect         10s
  30. timeout client          1m
  31. timeout server          1m
  32. timeout http-keep-alive 10s
  33. timeout check           10s
  34. maxconn                 3000
  35. listen rabbitmq_cluster 0.0.0.0:5672
  36. mode tcp
  37. balance roundrobin
  38. server   rqslave1 192.168.36.102:5672 check inter 2000 rise 2 fall 3
  39. server   rqslave2 192.168.36.136:5672 check inter 2000 rise 2 fall 3
  40. #server   rqmaster 192.168.36.217:5672 check inter 2000 rise 2 fall 3

启动:service haproxy  start

负载均衡器会监听5672端口,轮询我们的两个内存节点192.168.36.102、192.168.36.136的5672端口,192.168.36.217为磁盘节点,只做备份不提供给生产者、消费者使用,当然如果我们服务器资源充足情况也可以配置多个磁盘节点,这样磁盘节点除了故障也不会影响,除非同时出故障。

2.配置策略

使用Rabbit镜像功能,需要基于rabbitmq策略来实现,策策是用来控制和修改群集范围的某个vhost队列行为和Exchange行为在cluster中任意节点启用策略,策略会自动同步到集群节点
# rabbitmqctl set_policy -p hrsystem ha-allqueue"^" '{"ha-mode":"all"}'
这行命令在vhost名称为hrsystem创建了一个策略,策略名称为ha-allqueue,策略模式为 all 即复制到所有节点,包含新增节点,
策略正则表达式为 “^” 表示所有匹配所有队列名称。
例如rabbitmqctl set_policy -p hrsystem ha-allqueue "^message" '{"ha-mode":"all"}'
注意:"^message" 这个规则要根据自己修改,这个是指同步"message"开头的队列名称,我们配置时使用的应用于所有队列,所以表达式为"^"

set_policy说明参见
set_policy [-p vhostpath] {name} {pattern} {definition} [priority]      #ha-mode:all、exactly、nodes

也可以通过rabbit控制台添加

下面我们来添加一个queues队列来看看效果,这里只是测试结果,其它的先不填写

在这里边添加的时候你是可以指定Node选项也就是把这个queues放在哪个node节点上.

3.创建队列时需要指定ha 参数,如果不指定x-ha-prolicy 的话将无法复制

4.客户端使用负载服务器192.168.36.127发送消息,队列会被复制到所有节点,当然策略也可以配置制定某几个节点,这时任何节点故障 、或者重启将不会影响我们正常使用某个队列,到这里我们完成了高可用配置(所有节点都宕机那没有办法了)。

5.使用rabbitmq管理端可以看到集群镜像模式中对列状态

参考官网:http://www.rabbitmq.com/ha.html

最新文章

  1. 【leetcode】First Missing Positive
  2. Java动态代理一Proxy
  3. read.csv 把 "T" 读成 "TRUE" 的问题
  4. 为 UIButton 添加长按事件
  5. 熊猫TV提示“您的账号存在被盗风险,请在网站上登录解锁”
  6. Ajax.Utility.RegisterTypeForAjax(typeof(_Default)) 的使用
  7. Palindrome - POJ 3974 (最长回文子串,Manacher模板)
  8. 奇舞js笔记——第0课——如何写好原生js代码
  9. Apache服务器中设置端口映射和反向代理的方法
  10. Verilog中的reg一定会被综合成寄存器么
  11. Spring initializr使用
  12. Linux系统学习之进程管理
  13. Jfrog Maven jenkins pipeline 流水线 培训 简单实验
  14. thinkphp error:no database select
  15. Spark、Hadoop、Hive相关文章
  16. day14 多态与抽象
  17. c# net 使用反射为对象赋值
  18. w3cschool菜鸟教程离线版chm手册正式发布
  19. TreeSet之定制排序和自然排序
  20. 【最小割】【Dinic】HihoCoder - 1252 - The 2015 ACM-ICPC Asia Beijing Regional Contest - D - Kejin Game

热门文章

  1. X5内核浏览器,video兼容
  2. 读取com口接收byte数据的处理
  3. 【codeforces 797D】Broken BST
  4. 转载 - KMP算法祥解
  5. [bzoj1606][Usaco2008 Dec]Hay For Sale 购买干草_动态规划_背包dp
  6. UVA The Tower of Babylon
  7. Thread和ThreadGroup
  8. javap命令
  9. 6581 Number Triangle
  10. js获取验证码 秒表效果(原创)