RabbitMQ之linux服务器安装与集群搭建
一、安装
# 官网下载Erlang安装包和rabbitmq安装包
erlang-22.0.7-1.el7.x86_64.rpm
rabbitmq-server-3.7.18-1.el7.noarch.rpm
socat-1.7.3.2-2.el7.x86_64.rpm
# 1、安装Erlang依赖包
rpm -ivh erlang-22.0.7-1.el7.x86_64.rpm
# 2、安装socat环境包
rpm -ivh socat-1.7.3.2-2.el7.x86_64.rpm
# 3、安装RabbitMQ安装包(需要联网)
yum install -y rabbitmq-server-3.7.18-1.el7.noarch.rpm
注意:默认安装完成后配置文件模板在:/usr/share/doc/rabbitmq-server-3.7.18/rabbitmq.config.example目录中,需要将配置文件复制到/etc/rabbitmq/目录中,并修改名称为rabbitmq.config
# 4、复制配置文件
cp /usr/share/doc/rabbitmq-server-3.7.18/rabbitmq.config.example /etc/rabbitmq/rabbitmq.config
# 5、查看配置文件位置
ls /etc/rabbitmq/rabbitmq.config
# 6、修改配置文件(参见下图)
vim /etc/rabbitmq/rabbitmq.config
# 将上图中配置文件中红色部分去掉%%,以及最后的“,” 修改为下图
# 7、执行如下命令,启动rabbitmq中的插件管理
rabbitmq-plugins enable rabbitmq_management
出现如下:
Enabling plugins on node rabbit@localhost:
rabbitmq_management
The following plugins have been configured:
rabbitmq_management
rabbitmq_management_agent
rabbitmq_web_dispatch
Applying plugin configuration to rabbit@localhost:
The following plugins have been enabled:
rabbitmq_management
rabbitmq_management_agent
rabbitmq_web_dispatch
set 3 plugins.
Offline change;changes will take effect at broker restart.
# 8、启动RabbitMQ服务
systemctl start rabbitmq-server
systemctl restart rabbit-server
systemctl status rabbitmq-server
systemctl stop rabbitmq-server
# 9、浏览器访问
http://xx.xx.xx.xx:15672
默认用户名和密码:guest guest
二、集群搭建
1、主从集群
注:主从集群,一旦主节点宕机,所有从节点不可用,主节点恢复,从节点消息队列恢复到主节点,作用相当于备份主节点数据
# 1、克隆三台机器主机名和ip映射
vim /etc/hosts
xx.xx.xx.xx mq1
xx.xx.xx.xx mq2
xx.xx.xx.xx mq3
node1:vim /etc/hostname 加入:mq1
node2:vim /etc/hostname 加入:mq2
node3:vim /etc/hostname 加入:mq3
# 2、三个机器安装rabbitmq,并同步cookie文件,在node1上执行:
scp /var/lib/rabbitmq/.erlang.cookie root@mq2:/var/lib/rabbitmq/
scp /var/lib/rabbitmq/.erlang.cookie root@mq3:/var/lib/rabbitmq/
# 3、查看cookie是否一致
cat /var/lib/rabbitmq/.erlang.cookie
# 4、后台启动rabbitmq所有节点,执行如下命令,启动成功访问管理界面
rabbitmq-server -detached
# 5、在node2和node3执行加入集群命令
1.关闭 rabbitmqctl stop_app
2.加入集群 rabbitmqctl join_cluster rabbit@mq1
3.启动服务 rabbitmqctl start_app
# 6、查看集群状态
rabbitmqctl cluster_status
2、镜像集群
镜像队列机制就是将队列在三个节点之间设置主从关系,消息会在三个节点之间进行自动同步,且如果其中一个节点不可用,并不会导致消息丢失或服务不可用的情况,提升MQ集群的整体高可用性。
# 策略说明
rabbitmqctl set_policy [-p <vhost>] [--priority <priority>] [--apply-to <apply-to>] <name> <pattern> <definition>
-p Vhost:可选参数,针对指定vhost下的queue进行设置
name:policy的名称
pattern:queue的匹配模式(正则表达式)
definition:镜像定义,包括三个部分ha-mode,ha-params,ha-sync-mode
ha-mode:指明镜像队列的模式,有效值为:all/exactly/nodes
all:表示在集群中所有的节点上进行镜像
exactly:表示在指定个数的节点上进行镜像,节点的个数由ha-params指定
nodes:表示在指定的节点上进行镜像,节点名称通过ha-params指定
ha-params:ha-mode模式需要用到的参数
ha-sync-mode:进行队列中消息的同步方式,有效值为automatic和manual
priority:可选参数,policy的优先级
# 1、查看当前策略
rabbitmqctl list_policies
# 2、添加策略
rabbitmqctl set_policy ha-all '^hello' '{"ha-mode":"all","ha-sync-mode":"automatic"}'
说明:策略正则表达式为"^" 表示所有匹配所有队列名称 ^hello:匹配hello开头队列,"^"不写hello为匹配所有队列
# 3、删除策略
rabbitmqctl clear_policy ha-all