一、环境
RabbitMQ与Erlang的兼容关系详见:https://www.rabbitmq.com/which-erlang.html
rabbitmq集群最好是奇数节点,所以一般需要3台设备以上。
操作系统:CentOS 7
Erlang:erlang-23.3.4.1-1.el7.x86_64.rpm
RabbitMQ:rabbitmq-server-3.8.14-1.el7.noarch
三台主机:
192.168.116.133 rabbitmq-133
192.168.116.134 rabbitmq-134
192.168.116.135 rabbitmq-135
安装Erlang (erlang-23.3.4.1-1.el7.x86_64.rpm)
下载地址: https://github.com/rabbitmq/erlang-rpm/releases/
或者网盘下载:
链接:https://pan.baidu.com/s/1d0hymqFpZKrK29XS9jWSrA
提取码:p8xt
下载rabbitmq的rpm包,找到对应的版本,选择Assets,centos 7系统选择e17的rpm包
下载地址:rabbitmq
或者在我的网盘下载:
链接:https://pan.baidu.com/s/11nDH3rYUjwq01zNNpygIpg
提取码:8he1
二.安装部署
2.1 全部设备都初始化(三台设备上都要操作)
cd /etc/yum.repos.d/
yum install -y wget
wget http://mirrors.aliyun.com/repo/Centos-7.repo
wget http://mirrors.aliyun.com/repo/epel-7.repo
mv CentOS-Base.repo CentOS-Base.repo.bak
yum clean all
yum makecache
systemctl stop firewalld
systemctl disable firewalld
sed -i 's/SELINUX=enforcing$/SELINUX=disabled/g' /etc/selinux/config
setenforce 0
2.2 全部设备下载、上传rabbitMQ和erlang的rpm包
2.3 设置hosts,然后再安装rpm包
1)首先,第一台设备设置hosts,然后安装rpm包
vi /etc/hosts
192.168.116.133 rabbitmq-133
192.168.116.134 rabbitmq-134
192.168.116.135 rabbitmq-135
hostnamectl set-hostname rabbitmq-133
yum install -y erlang-23.3.4.1-1.el7.x86_64.rpm
yum install -y rabbitmq-server-3.8.14-1.el7.noarch.rpm
erl 进入erlang的命令行,查看版本为23
q(). 退出命令行
rabbitmqctl version 查看版本号
2)在rabbitmq-134设置hosts、安装rpm包
vi /etc/hosts
192.168.116.133 rabbitmq-133
192.168.116.134 rabbitmq-134
192.168.116.135 rabbitmq-135
hostnamectl set-hostname rabbitmq-134
yum install -y erlang-23.3.4.1-1.el7.x86_64.rpm
yum install -y rabbitmq-server-3.8.14-1.el7.noarch.rpm
erl 进入erlang的命令行,查看版本为23
q(). 退出命令行
rabbitmqctl version 查看版本号
3)在rabbitmq-135设置hosts、安装rpm包
vi /etc/hosts
192.168.116.133 rabbitmq-133
192.168.116.134 rabbitmq-134
192.168.116.135 rabbitmq-135
hostnamectl set-hostname rabbitmq-135
yum install -y erlang-23.3.4.1-1.el7.x86_64.rpm
yum install -y rabbitmq-server-3.8.14-1.el7.noarch.rpm
erl 进入erlang的命令行,查看版本为23
q(). 退出命令行
rabbitmqctl version 查看版本号
1.4 设置集群为镜像模式,集群节点互为对方节点的主节点
1)在rabbitmq-133操作
systemctl enable rabbitmq-server
systemctl start rabbitmq-server
安装网页插件,使得集群可以通过网页访问
rabbitmq-plugins enable rabbitmq_management
将主节点的cookie复制到其他2个节点
scp /var/lib/rabbitmq/.erlang.cookie root@192.168.116.134:/var/lib/rabbitmq/.erlang.cookie
scp /var/lib/rabbitmq/.erlang.cookie root@192.168.116.135:/var/lib/rabbitmq/.erlang.cookie
rabbitmqctl cluster_status 查看集群状态
注意集群名字:加入集群要用到这个
Cluster name: rabbit@rabbitmq-133
2)在rabbitmq-134操作
安装网页插件,使得集群可以通过网页访问
rabbitmq-plugins enable rabbitmq_management
让cookie信息重新加载
systemctl restart rabbitmq-server
systemctl enable rabbitmq-server
加入集群
rabbitmqctl stop_app 停止服务
rabbitmqctl reset 重置数据,会把数据都删除
rabbitmqctl join_cluster rabbit@rabbitmq-133 加入集群
rabbitmqctl start_app 启动服务
rabbitmqctl set_policy ha-all "#" '{"ha-mode":"all"}' 设置集群为镜像模式
rabbitmqctl cluster_status 确认集群状态
3)在rabbitmq-135操作
安装网页插件,使得集群可以通过网页访问
rabbitmq-plugins enable rabbitmq_management
让cookie信息重新加载
systemctl restart rabbitmq-server
systemctl enable rabbitmq-server
加入集群
rabbitmqctl stop_app 停止服务
rabbitmqctl reset 重置数据,会把数据都删除
rabbitmqctl join_cluster rabbit@rabbitmq-133 加入集群
rabbitmqctl start_app 启动服务
rabbitmqctl set_policy ha-all "#" '{"ha-mode":"all"}' 设置集群为镜像模式
rabbitmqctl cluster_status 确认集群状态
1.5 确认集群是否同步
在rabbitmq-133创建一个账户
rabbitmqctl add_user aa 123456 添加账户aa,密码为123456
rabbitmqctl set_user_tags aa administrator 将账户打上最高权限标签
rabbitmqctl set_permissions aa ".*" ".*" ".*" 设置为最高权限
rabbitmqctl list_users
在rabbitmq-134,rabbitmq-135确认账户生成,证明数据同步成功,集群搭建完成
rabbitmqctl list_users
登录网页查看集群状态
http://192.168.116.133:15672/
注意:
默认RabbitMQ的安装目录路径是/var/lib/rabbitmq、默认log路径是/var/log/rabbitmq/
可以自定义RabbitMQ配置
[root@sh-op-mq01 ~]# cd /etc/rabbitmq/
[root@sh-op-mq01 rabbitmq]# vim rabbitmq-env.conf
LOG_BASE=/data/log/rabbitmq //定义RabbitMQ的日志路径
[root@sh-op-mq01 rabbitmq]# mkdir /data/log/rabbitmq
[root@sh-op-mq01 rabbitmq]# chown -R rabbitmq.rabbitmq /data/log/rabbitmq
rabbit-server当前状态:
[root@sh-op-mq01 rabbitmq]# rabbitmqctl status