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

来源:互联网 发布:后台解析json字符串 编辑:程序博客网 时间:2024/05/17 05:53

添加RabbitMQ用户

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

修改guest密码

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

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

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

为demo用户设置tags

root@mq1:~# rabbitmqctl set_user_tags demo memberSetting 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_usersListing 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_policiesListing policies .../       ha-all  all     ^ha\\.  {"ha-mode":"all"}       0...done.

安装HAProxy

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

在主节点安装软件

root@mq1:~# apt-get install haproxyReading package lists... DoneBuilding dependency treeReading state information... DoneSuggested packages:  vim-haproxyThe following NEW packages will be installed:  haproxy0 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        daemondefaults        log     global        #使用tcp监听模式        mode    tcp        option  tcplog        option  dontlognull        retries 3        option redispatch        maxconn 2000        contimeout      5000        clitimeout      50000        srvtimeout      50000listen  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-versionlisten  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

这里写图片描述

0 0
原创粉丝点击