zoukankan      html  css  js  c++  java
  • RabbitMQ学习之集群镜像模式配置

    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 文件即可,文件内容大概如下:

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

  • 相关阅读:
    python 网页cookie的使用
    python PIL 图像处理操作
    numpy linalg模块
    Robot Framework自动化测试Selenium2Library库详细用法
    Numpy 基本除法运算和模运算
    Java基础系列--基础排序算法
    java基础系列--SecurityManager入门(转)
    Java基础系列--ArrayList集合
    Java基础系列--instanceof关键字
    Java基础系列--throw、throws关键字
  • 原文地址:https://www.cnblogs.com/telwanggs/p/7124862.html
Copyright © 2011-2022 走看看