[高可用]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
- [高可用]Ubuntu搭建高可用的RabbitMQ(2)
- [高可用]Ubuntu搭建高可用的RabbitMQ(1)
- rabbitmq集群的高可用
- Rabbitmq集群高可用
- Rabbitmq集群高可用
- Rabbitmq集群高可用
- rabbitmq+keepalived高可用
- redis的高可用搭建
- 高可用集群的搭建
- Rabbitmq队列高可用的策略
- [高可用]Ubuntu搭建高可用的MariaDB Galera数据库集群
- RabbitMQ高可用配置(Haproxy + Keepalived)
- 搭建高可用的MongoDB集群(下)-2
- [openstack]配置高可用RabbitMQ
- [openstack]配置高可用RabbitMQ
- Rabbitmq集群高可用测试
- Rabbitmq集群高可用测试
- Rabbitmq集群高可用测试
- C# 客户端 在 服务器获取数据库图片
- Linux内核之进程管理和调度
- oracle学习笔记
- hdoj 1535 Invitation Cards 【最短路径SPFA】【正反向建边求单源最短路之和】
- 强制去除xcode的编译警告
- [高可用]Ubuntu搭建高可用的RabbitMQ(2)
- 菜鸟系列——最小生成树
- 数据结构与算法分析(C语言描述)L1.1
- Android _Smali中插入Toast
- 动态编辑删除Toolbar中的元素
- BNUOJ 28887 A Simple Tree Problem(线段树, 区间查询,区间更新)
- 写一封电子情书,困了的时候逗妹子玩儿的
- welcome to my scala and spark blog! Let's go!
- 架构师速成7.6-高中书单资料推荐