一. 下载
因为rabbitmq安装需要erlang环境,对于版本环境有对应要求,为节省不必要时间,这里直接分享一套在用版本
链接:https://pan.baidu.com/s/1sQjpbiFIFhnSpa0_uCP53A
提取码:AA56
文件:rabbitmq3.7.rar
内含
rabbitMq版本:3.7.17
erlang版本:21.0.2
socat版本: 1.7.3.2
openssl版本: 1.0.2k-16.el7
如果想安装最新版本可以参考这篇博文:RabbitMQ介绍及linux下集群部署_咖啡那么浓的博客-优快云博客a
二. 安装
集群服务器配置如下,本文采用3台服务器搭建集群环境
node1 | 192.168.177.171 |
node2 | 192.168.177.172 |
node3 | 192.168.177.173 |
以下每台操作都一样:可批量同时执行
1. 修改hosts文件
vim /etc/hosts
写入如下内容(按自身服务环境配置)
2. 解压Rabbitmq.zip
unzip RabbitMQ.zip && rm -rf RabbitMQ.zip && cd RabbitMQ
注:如系统报unzip不存在,执行
yum install unzip
3. 安装全部应用
cd RabbitMQ
yum -y install ./*
4. 修改配置
安装完成后
#拷贝配置文件,在此文件内进行优化
cp /usr/share/doc/rabbitmq-server-3.7.17/rabbitmq.config.example /etc/rabbitmq/rabbitmq.config
5. 设置日志存储目录
mkdir -p /data/rabbitmq/{mnesia,log}
chown -R rabbitmq:rabbitmq /data/rabbitmq/{mnesia,log}
创建或新增环境参数配置文件,可在此文件内添加自定义的数据及日志存储目录
vim /etc/rabbitmq/rabbitmq-env.conf
加入下列几句话:
RABBITMQ_MNESIA_BASE=/data/rabbitmq/mnesia
RABBITMQ_LOG_BASE=/data/rabbitmq/log
6. 启动RabbitMQ
systemctl start rabbitmq-server
systemctl enable rabbitmq-server
rabbitmq-plugins enable rabbitmq_management
7. 创建管理员用户
rabbitmqctl add_user admin admin
rabbitmqctl set_user_tags admin administrator
rabbitmqctl set_permissions -p "/" admin ".*" ".*" ".*"
即到此,安装成功,通过ip+ 端口(15672)访问
注意需要开放服务器访问端口(如云服务器则还要配置安全组)
#开启防火墙
systemctl start firewalld
# 开放2181端口
firewall-cmd --zone=public --add-port=15672/tcp --permanent
# 开放3888端口
firewall-cmd --zone=public --add-port=5672/tcp --permanent
# 重启防火墙,使之生效
firewall-cmd --reload
访问地址:http://192.168.177.171:15672/
三.集群配置
注:从下开始就是重要部分
首先我们假设node1为master节点,node2,node3为slave节点
关闭node2,node3节点
# node2,node3执行
systemctl stop rabbitmq-server
# 判断是否已经关闭,没有则KILL
ps -ef|grep rabbitmq
1. 复制erlang.cookie到其他服务器的mq目录下(node1服务器操作)
# 查看erlang.cookie的位置并分发到集群中各个节点(根据现场环境实际路径查找)
cat /data/rabbitmq/log/rabbit@`hostname`.log | grep home | uniq
# 返回:home dir : /var/lib/rabbitmq
ls -a /var/lib/rabbitmq/
# 返回: . .. .erlang.cookie mnesia
2. 将主节点的erlang.cookie分发到各个节点(node1服务器操作)
scp /var/lib/rabbitmq/.erlang.cookie root@node2:/var/lib/rabbitmq/
# 注:中途需要输入服务器密码
scp /var/lib/rabbitmq/.erlang.cookie root@node3:/var/lib/rabbitmq/
3. slave节点服务器重新启动MQ(node2,node3服务器操作)
# 重启rabbitmq-server,使新的erlang.cookie生效
systemctl restart rabbitmq-server
4. slave节点加入到集群环境中(node2,node3服务器操作)
# 将节点加入集群
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl join_cluster rabbit@node1
rabbitmqctl start_app
成功后,返回主节点服务器,查看是否显示以下:
5. 设置镜像策略(主节点node1服务器操作)
rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all","ha-sync-mode":"automatic"}'
6. 查看集群(主节点node1服务器操作)
rabbitmqctl cluster_status
四:Rabbitmq命令
命令集:
启动命令: systemctl start rabbitmq-server
停止命令: systemctl stop rabbitmq-server
重启命令: systemctl restart rabbitmq-server