RabbitMQ集群的搭建-镜像队列模式

3 篇文章 0 订阅

前边简要介绍了单机版rabbitmq的安装,但是实际使用中往往是集群模式,既然是集群就有普通模式与高性能模式之分,同理rabbitmq亦是如此。

一、节点分布:

主机名

对应Ip

rabbitmq

haproxy

node01

192.168.1.71

 1(disk)磁盘节点

 

node02

 192.168.1.72

1(memory)内存节点

 

node03

 192.168.1.73

1(memory) 内存节点

 

node04

 192.168.1.74

 

 1

二、集群配置

1、配置hosts

在各个节点、编辑 vim /etc/hosts加入

192.168.1.71 node01
192.168.1.72 node02
192.168.1.73 node03
192.168.1.74 node04

2、 设置Erlang Cookie

由于RabbitMQ依赖于erlang,集群间隔节点通信是通过Erlang Cookie进行的。通过rpm包安装的.erlang.cookie一般在/var/lib/rabbitmq/.erlang.cookie,通过源码安装的.erlang.cookie一般在$HOME/.erlang.cookie

由于这个文件权限是 600,所以需要先修改所有mq节点中的该文件权限为 600

$ chmod 600 /var/lib/rabbitmq/.erlang.cookie

注意,设置700执行rabbitmqctl stop_app 时会报错

在node01上设置好后,分发到其它节点

$ scp /var/lib/rabbitmq/.erlang.cookie node02:`pwd`
$ scp /var/lib/rabbitmq/.erlang.cookie node03:`pwd`

3、detached启动mq

分别在每个节点,使用detached参数,后台启动

$ rabbitmqctl stop       #如果mq在运行,先停止
$ rabbitmq-server -detached #后台守护模式启

4、组建集群

这里以node01为集群名字,让node02、node03去主动连接node01,通过此方式,将 node2、node3 与 node1 组成集群。

(1)分别在node02、node03上运行命令:

rabbitmqctl stop_app     #停止
rabbitmqctl join_cluster rabbit@node01 #加入集群
rabbitmqctl start_app   #启动

此时node2 与 node3 便会自动连接node01, node2 与 node3 也会自动建立连接,三个节点便组成了集群 

(2)如果要用做内存节点,则可以使用 --ram形式加入集群

rabbitmqctl join_cluster --ram rabbit@node01 

(3)查看集群配置是否成功,成功如下:

[root@node01 ~]# rabbitmqctl cluster_status
Cluster status of node rabbit@node01 ...
[{nodes,[{disc,[rabbit@node01,rabbit@node02,rabbit@node03]}]},
 {running_nodes,[rabbit@node01,rabbit@node02,rabbit@node03]},
 {cluster_name,<<"rabbit@node01">>},
 {partitions,[]},
 {alarms,[{rabbit@node01,[]},{rabbit@node02,[]},{rabbit@node03,[]}]}]

5、设置镜像队列策略

在以上任意节点执行 $ rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all"}'

这行命令创建了一个策略,策略名称为ha-all,“^”为正则表达式,表示所有匹配所有队列名称,策略模式为 all 即复制到所有节点,包含新增节点。设置后,队列会被复制到各个节点,各个节点状态保持一致。至此就完成了高可用集群的搭建。

三、配置Haproxy

HAProxy是一个基于TCPHTTP的应用代理中间件,其 支持虚拟主机、高可用性、提供一系列负载均衡策略,特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理。接下来用Haproxy做负载均衡了

 1、安装Haproxy

      $ yum -y install Haproxy

  2、配置负载策略

    编辑Haproxy配置文件 $ vim /etc/haproxy/haproxy.cfg

 global  
        log         127.0.0.1 local2
        chroot   /var/lib/haproxy        
        pidfile  /var/run/haproxy.pid   # haproxy的pid存放路径,启动进程的用户必须有权限访问此文件   
        maxconn  4000                   # 最大连接数,默认4000  
        user   haproxy               # 默认用户  
        group   haproxy              # 默认用户组  
        daemon                          # 创建1个进程进入deamon模式运行。此参数要求将运行模式设置为"daemon  
        # Default SSL material locations  
        # ca-base /etc/ssl/certs  
        # crt-base /etc/ssl/private  
        # Default ciphers to use on SSL-enabled listening sockets.  
        # For more information, see ciphers(1SSL). This list is from:  
        #  https://hynek.me/articles/hardening-your-web-servers-ssl-ciphers/  
        # ssl-default-bind-ciphers ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS  
        # ssl-default-bind-options no-sslv3  
    ###########默认配置#########  
    defaults  
        log global  
        mode    http                # 默认的模式mode { tcp|http|health },tcp是4层,http是7层,health只会返回OK  
        option  httplog             # 采用http日志格式  
        option  dontlognull         # 启用该项,日志中将不会记录空连接。所谓空连接就是在上游的负载均衡器或者监控系统为了探测该服务是否存活可用时,  
                                    # 需要定期的连接或者获取某一固定的组件或页面,或者探测扫描端口是否在监听或开放等动作被称为空连接;  
                                    # 官方文档中标注,如果该服务上游没有其他的负载均衡器的话,建议不要使用  
                                    # 该参数,因为互联网上的恶意扫描或其他动作就不会被记录下来  
        timeout connect 5000        # 连接超时时间  
        timeout client  50000       # 客户端连接超时时间  
        timeout server  50000       # 服务器端连接超时时间  
        option  httpclose        # 每次请求完毕后主动关闭http通道   
        option  httplog          # 日志类别http日志格式   
        #option  forwardfor      # 如果后端服务器需要获得客户端真实ip需要配置的参数,可以从Http Header中获得客户端ip    
        option  redispatch       # serverId对应的服务器挂掉后,强制定向到其他健康的服务器  
        timeout connect 10000    # default 10 second timeout if a backend is not found  
        maxconn     60000        # 最大连接数  
        retries     3            # 3次连接失败就认为服务不可用,也可以通过后面设置   
        # errorfile 400 /yougo/haproxy/home/errors/400.http  
        # errorfile 403 /yougo/haproxy/home/errors/403.http  
        # errorfile 408 /yougo/haproxy/home/errors/408.http  
        # errorfile 500 /yougo/haproxy/home/errors/500.http  
        # errorfile 502 /yougo/haproxy/home/errors/502.http  
        # errorfile 503 /yougo/haproxy/home/errors/503.http  
        # errorfile 504 /yougo/haproxy/home/errors/504.http  
    ##########################开启统计页面##########################################  
    listen stats
            bind 0.0.0.0:8888           #监听端口    
            stats refresh 10s           #统计页面自动刷新时间    
            stats uri /haproxy?stats    #统计页面url    
            stats realm Haproxy Manager #统计页面密码框上提示文本    
            stats auth admin:123456      #统计页面用户名和密码设置    
            stats hide-version         #隐藏统计页面上HAProxy的版本信息  
            stats admin if TRUE       #当通过认证才可管理
 
    listen rabbitmq_cluster  
        bind 0.0.0.0:8889                #rabbitmq集群调用的端口  
        option tcplog  
        mode tcp     
        option          clitcpka     是否允许客户端发送tcp keepalive 包,这个和http 的keepalive 没有关系
        timeout client  3000       # 客户端连接超时时间,3s超时
        timeout server  3000       # 服务器端连接超时时间
        balance roundrobin      #负载均衡算法(#banlance roundrobin 轮询,balance source 保存session值,支持static-rr,leastconn,first,uri等参数)  
        server   node01 192.168.1.71:5672 check inter 5s rise 2 fall 3   #check inter 2000 是检测心跳频率,rise 2是2次正确认为服务器可用,fall 3是3次失败认为服务器不可用  
        server   node02 192.168.1.72:5672 check inter 5s rise 2 fall 3  
        server   node03 192.168.1.73:5672 check inter 5s rise 2 fall 3  

 

参考:http://www.rabbitmq.com/clustering.html

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

参考:https://www.cnblogs.com/telwanggs/p/7124832.html

参考:http://www.cnblogs.com/dkblog/archive/2012/03/13/2393321.html

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值