[高可用]Ubuntu搭建高可用的RabbitMQ(2)

添加RabbitMQ用户

用户可以在主节点进行操作,默认情况下,安装完毕RabbitMQ有一个guest用户,默认该用户是管理员权限,用户可以为guest用户设置密码,当然,也可以增加新的用户,设置相关权限。

修改guest密码

root@mq1:~# sudo rabbitmqctl change_password guest mq4smtest
Changing password for user "guest" ...
...done.

添加一个demo用户,密码也为demo

root@mq1:~# rabbitmqctl add_user demo demo
Creating user "demo" ...
...done.

为demo用户设置tags

root@mq1:~# rabbitmqctl set_user_tags demo member
Setting tags for user "demo" to [member] ...
...done.

为demo用户赋予所有虚拟主机vhost(/),配置、写、读的权限

root@mq1:~# rabbitmqctl set_permissions -p / demo ".*" ".*" ".*"
Setting permissions for user "demo" in vhost "/" ...
...done.

查看已有的用户信息

root@mq1:~# rabbitmqctl list_users
Listing users ...
demo    [member]
guest   [administrator]
...done.

登录Web页面

http://192.168.13.41:15672/

这里写图片描述

从图中可以看到,目前安装的RabbitMQ版本为3.2.4版本,已经可以看到集群包含的三个节点,每个节点的类型也可以看到。

RabbitMQ的集群类型

  • 单一模式:最简单的情况,非集群模式。

  • 普通模式

普通模式:默认的集群模式。对于Queue来说,消息实体只存在于其中一个节点,A、B两个节点仅有相同的元数据,即队列结构.当消息进入A节点的Queue中后,consumer从B节点拉取时,RabbitMQ会临时在A、B间进行消息传输,把A中的消息实体取出并经过B发送给consumer。所以consumer应尽量连接每一个节点,从中取消息。即对于同一个逻辑队列,要在多个节点建立物理Queue。否则无论consumer连A或B,出口总在A,会产生瓶颈。该模式存在一个问题就是当A节点故障后,B节点无法取到A节点中还未消费的消息实体。如果做了消息持久化,那么得等A节点恢复,然后才可被消费;如果没有持久化的话,然后就没有然后了……

  • 镜像模式

镜像模式:把需要的队列做成镜像队列,存在于多个节点,属于RabbitMQ的HA方案。该模式解决了上述问题,其实质和普通模式不同之处在于,消息实体会主动在镜像节点间同步,而不是在consumer取数据时临时拉取。该模式带来的副作用也很明显,除了降低系统性能外,如果镜像队列数量过多,加之大量的消息进入,集群内部的网络带宽将会被这种同步通讯大大消耗掉。所以在对可靠性要求较高的场合中适用。

设置高可用策略

为了使用HAProxy,我们需要将RabbitMQ设置为镜像模式,只需要使用命令行执行即可


root@mq1:~# rabbitmqctl set_policy ha-all "^ha\." '{"ha-mode":"all"}'
Setting policy "ha-all" for pattern "^ha\\." to "{\"ha-mode\":\"all\"}" with priority "0" ...
...done.


root@mq1:~# rabbitmqctl list_policies
Listing policies ...
/       ha-all  all     ^ha\\.  {"ha-mode":"all"}       0
...done.

安装HAProxy

将RabbitMQ集群设置为镜像模式之后,需要用负载均衡服务将访问压力分散于集群中的每个节点,在此我们选择了HAProxy,它的特点在于配置简单,并且功能十分强大,配置过程归纳起来也就是安装、设置配置文件、启动服务这三步这么简单。选择一个节点运行负载均衡服务即可,也可以单独拿一台机器运行,根据实际情况进行调整。

在主节点安装软件

root@mq1:~# apt-get install haproxy
Reading package lists... Done
Building dependency tree
Reading state information... Done
Suggested packages:
  vim-haproxy
The following NEW packages will be installed:
  haproxy
0 upgraded, 1 newly installed, 0 to remove and 182 not upgraded.
Need to get 417 kB of archives.
After this operation, 822 kB of additional disk space will be used.
Get:1 http://mirrors.sohu.com/ubuntu/ trusty-proposed/main haproxy amd64 1.4.24-2ubuntu0.1 [417 kB]
Fetched 417 kB in 3s (135 kB/s)
Selecting previously unselected package haproxy.
(Reading database ... 57754 files and directories currently installed.)
Preparing to unpack .../haproxy_1.4.24-2ubuntu0.1_amd64.deb ...
Unpacking haproxy (1.4.24-2ubuntu0.1) ...
Processing triggers for ureadahead (0.100.0-16) ...
Processing triggers for man-db (2.6.7.1-1) ...
Setting up haproxy (1.4.24-2ubuntu0.1) ...
Processing triggers for ureadahead (0.100.0-16) ...

配置文件,设置/etc/haproxy/haproxy.cfg

global
        log 127.0.0.1   local0
        log 127.0.0.1   local1 notice
        maxconn 4096
        user haproxy
        group haproxy
        daemon

defaults
        log     global
        #使用tcp监听模式
        mode    tcp
        option  tcplog
        option  dontlognull
        retries 3
        option redispatch
        maxconn 2000
        contimeout      5000
        clitimeout      50000
        srvtimeout      50000

listen  admin_stat
        #haproxy的web管理端口 8888,自行设置
        bind 0.0.0.0:8888
        mode    http
        stats   refresh 30s
        #haproxy web管理url,自行设置
        stats uri /haproxy_stats
        stats realm Haproxy\ Statistics
        #haproxy web管理用户名密码,自行设置
        stats auth guest:mq4smtest
        stats hide-version

listen  rabbitmq 0.0.0.0:5670
        #监听5670端口,并转发给三个节点的5672端口,采用轮询策略
        mode    tcp
        balance roundrobin
        server  mq1      192.168.13.41:5672      check   inter   2000 rise 2 fall 3
        server  mq2      192.168.13.92:5672      check   inter   2000 rise 2 fall 3
        server  mq3      192.168.13.93:5672      check   inter   2000 rise 2 fall 3

启动Haproxy服务

 haproxy -f /etc/haproxy/haproxy.cfg -D

查看HAproxy的Web页面

根据上述配置文件,端口号设置为8888,用户名密码设置为guest/mq4smtest,所以登录:http://192.168.13.41:8888/haproxy_stats

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值