1、安装前规划
CentOS7内核版本
3.10.0-693.2.2.el7.x86_64
2、对应主机host地址&节点角色
三台主机hosts文件要保持一致
IP | 主机名 | 作用 |
111.111.111.111 | server111-111 | 主节点 |
111.111.111.112 | server111-112 | 从节点 |
111.111.111.113 | server111-113 | 从节点 |
- 软件安装版本
Erlang:19.0.4
RabbitMQ:3.6.14
二、正式安装
备注:
3台主机都安装相同的软件:
1、安装依赖组件erlang
1 2 3 4 5 6 7 8 9 | 下载erlang: [root@server111-111 opt]# wget https://www.rabbitmq.com/releases/erlang/erlang-19.0.4-1.el7.centos.x86_64.rpm 安装erlang: [root@server111-111 opt]# rpm -ivh erlang-19.0.4-1.el7.centos.x86_64.rpm
安装日志如下: 准备中... ################################# [100%] 正在升级/安装... 1:erlang-19.0.4-1.el7 ################################# [100%] |
2、安装rabbitMQ
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | rabbitmq安装文件为:rabbitmq-server-3.6.14-1.el7.noarch.zip
下载、解压rabbitmq: [root@server111-111 opt]# wget https://dl-download.csdn.net/down11/20180322/1a5b9211637dff70a41fde0712a6a56f.zip?response-content-disposition=attachment%3Bfilename%2A%3D%22utf8%27%27rabbitmq-server-3.6.14-1.el7.noarch.zip%22&OSSAccessKeyId=9q6nvzoJGowBj4q1&Expires=1559203882&Signature=S8xmXED0X7QqHbPYiOoiljLsvcw%3D&user=liuwei0376&sourceid=10303202&sourcescore=0&isvip=0 如果过期无法下载,请自行去下载渠道(如csdn)查找。 [root@server111-111 opt]# unzip /opt/rabbitmq-server-3.6.14-1.el7.noarch.zip
安装rabbitmq: [root@server111-111 opt]# rpm -ivh rabbitmq-server-3.6.14-1.el7.noarch.rpm 错误:依赖检测失败: socat 被 rabbitmq-server-3.6.14-1.el7.noarch 需要 解决报错: [root@server111-111 opt]# yum install socat -y [root@server111-111 opt]# rpm -ivh rabbitmq-server-3.6.14-1.el7.noarch.rpm 准备中... ################################# [100%] 正在升级/安装... 1:rabbitmq-server-3.6.14-1.el7 ################################# [100%] |
3、启动RabbitMQ服务和设置开机自启
1 2 3 4 5 6 | service rabbitmq-server start service rabbitmq-server status
#CentOS7推荐使用如下方法: systemctl start rabbitmq-server.service systemctl status rabbitmq-server.service
设置开机自启动: systemctl enable rabbitmq-server.service |
- 安装插件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | rabbitmq-plugins list #查看插件列表
web管理类插件: 启用管理组件,此时Web控制台方可使用: rabbitmq-plugins enable rabbitmq_management
日志跟踪插件: rabbitmq-plugins enable rabbitmq_tracing #rabbitmq启用trace插件 rabbitmqctl trace_on #打开trace的开关 rabbitmqctl trace_on -p test #打开trace的开关(test为需要日志追踪的vhost) rabbitmqctl trace_off #关闭trace的开关 安装rabbitmq_delayed_message_exchange(延时队列)插件:
默认插件安装目录: cd /usr/lib/rabbitmq/lib/rabbitmq_server-3.6.14/plugins
安装延时插件: 说明: 以上为内置组件的管控,延时组价不属于内置组件,需另外下载:
下载组件: wget https://dl.bintray.com/rabbitmq/community-plugins/rabbitmq_delayed_message_exchange-0.0.1.ez
启用插件 rabbitmq-plugins enable rabbitmq_delayed_message_exchange
日志显示如下: The following plugins have been enabled: rabbitmq_delayed_message_exchange Applying plugin configuration to v01-app-rabbit@localhost... started 1 plugin. |
至此3台上面的rabbitmq都已安装完成,并且启动正常,现在开始配置集群服务。
三、普通集群配置
1、说明
Rabbitmq的集群是依附于erlang的集群来工作的,所以必须先构建起erlang的集群镜像。Erlang的集群中各节点是经由一个magic cookie来实现的,这个cookie一般存放在 $home/.erlang.cookie 中,但我们用rpm安装后,它将存放在/var/lib/rabbitmq中
2、复制分发cookie内容
erlang.cookie是erlang实现分布式的必要文件,erlang分布式的每个节点上要保持相同的.erlang.cookie文件,同时保证文件的权限是400,不然节点之间就无法通信。
打开文件然后需要先把其中的一台服务器的.erlang.cookie中的内容复制到别的机器上,最好是复制内容,因为文件权限不对的话会出现问题,在最后退出保存的时候使用wq!用!来进行强制保存即可.
3、复制完成重启三节点服务
1 2 | systemctl restart rabbitmq-server.service systemctl status rabbitmq-server.service |
4、添加节点到集群
将rabbit@server111-111作为集群主节点,在节点111-112和节点111-113上面分别执行如下命令,以加入集群中.
1 2 3 4 | rabbitmqctl stop_app rabbitmqctl reset rabbitmqctl join_cluster rabbit@server111-111 rabbitmqctl start_app |
5、检查集群状态
三节点上,分别使用如下命令检查集群状态:
1 | rabbitmqctl cluster_status |
6、账号管理
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | 添加账号: rabbitmqctl add_user admin admin
添加 权限tag rabbitmqctl set_user_tags admin administrator
删除用户(guest访客用户) [root@server111-111 rabbitmq]# rabbitmqctl delete_user guest
修改用户密码语法 rabbitmqctl change_password ${USERNAME} ${NEWPASSWORD} [root@server111-111 ~]# rabbitmqctl change_password admin aidwdata.rabbitmq
查看当前用户列表 rabbitmqctl list_users Listing users admin [administrator] |
7、WEB方式管控集群
Web控制台地址:111.111.111.111:15672
至此rabbitmq普通集群模式创建完成.
8、一些运维操作
【注意】:
正常安装后一般无需执行如下操作,如下操作将可能初始化并销毁已有数据,部分操作将改变数据存储类型,请谨慎操作!
8.1、从集群中移除节点:
1 2 3 4 5 6 | [root@server111-112 rabbitmq]# rabbitmqctl stop_app Stopping rabbit application on node 'rabbit@server111-112' [root@server111-112 rabbitmq]# rabbitmqctl reset Resetting node 'rabbit@server111-112' [root@server111-112 rabbitmq]# rabbitmqctl start_app Starting node 'rabbit@v01-app-rabbitmq02' |
8.2、加入集群时指定节点类型
1 2 3 4 5 | rabbitmqctl stop_app rabbitmqctl join_cluster --ram rabbit@server111-111 --ram 指定内存节点类型,--disc指定磁盘节点类型 rabbitmqctl start_app
【注意】: 该步骤如果执行失败,请在主节点上执行如下操作恢复: rabbitmqctl forget_cluster_node rabbit@server111-112 |
8.3、修改节点类型:
1 2 3 | rabbitmqctl stop_app rabbitmqctl change_cluster_node_type disc rabbitmqctl start_app |
8.4、日志文件查看位置:
1 2 | /var/log/rabbitmq/rabbit@server111-111.log /var/log/rabbitmq/rabbit@server111-111-sasl.log |
8.5、集群镜像模式(HA)配置
上面配置RabbitMQ默认集群模式,但并不保证队列的高可用性,尽管交换机、绑定这些可以复制到集群里的任何一个节点,但是队列内容不会复制,虽然该模式解决一部分节点压力,但队列节点宕机直接导致该队列无法使用,只能等待重启,所以要想在队列节点宕机或故障也能正常使用,就要复制队列内容到集群里的每个节点,需要创建镜像队列。
使用镜像模式可解决复制的问题,从而提高可用性.
使用Rabbit镜像功能,需要基于rabbitmq策略来实现,策略是用来控制和修改群集范围的某个vhost队列行为和Exchange行为的。
在集群中执行如下指令,所有队列都执行镜像模式:
# rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all"}' |