笔者不推荐大家使用这种方式,操作繁琐且不利于维护管理;
推荐大家使用docker构建RabbitMQ集群,可以点击查看这篇文章《docker-compose安装rabbitmq集群镜像队列》
或者使用K8S来进行管理,这篇文章正在路上。。。先立个flag
安装单机
准备:注意RabbitMQ的版本和Erlang版本对应,在RabbitMQ官网可以进行下载和查看对应关系
build-essential openssl openssl-devel unixODBC unixODBC-devel
make gcc gcc-c++ kernel-devel m4 ncurses-devel tk tc xz
下载:
wget www.rabbitmq.com/releases/erlang/erlang-18.3-1.el7.centos.x86_64.rpm
wget http://repo.iotti.biz/CentOS/7/x86_64/socat-1.7.3.2-5.el7.lux.x86_64.rpm
wget www.rabbitmq.com/releases/rabbitmq-server/v3.6.5/rabbitmq-server-3.6.5-1.noarch.rpm
配置文件:
vim /usr/lib/rabbitmq/lib/rabbitmq_server-3.6.5/ebin/rabbit.app
比如修改密码、配置等等,例如:loopback_users 中的 <<"guest">>,只保留guest
服务启动和停止:
启动 rabbitmq-server start &
停止 rabbitmqctl app_stop
管理插件:rabbitmq-plugins enable rabbitmq_management
访问地址:http://192.168.11.76:15672/
提前准备1(文件同步步骤)
#选择1位主节点,则需要将1节点的Cookie文件复制到2,3两个从节点上/进入目录修改权限,远程copy 到2和3节点
scp /var/lib/rabbitmq/.erlang.cookie 192.168.1.2:/var/lib/rabbitmq/
scp /var/lib/rabbitmq/.erlang.cookie 192.168.1.3:/var/lib/rabbitmq/
提前准备2 (设置host)每一台虚拟机都要更改
vim /etc/host
192.168.0.1 Bhz1
192.168.0.2 Bhz2
192.168.0.3 Bhz3
1. 停止mq 服务
rabbitmqctl stop
2. 组成集群方式进行启动 (配置1.1,1.2,1.3为集群模式)
rabbitmq-server -detached
3. slave 加入集群操作(注意该步骤,需要配置/etc/hosts 必须相互能够寻址到)
Bhz2: rabbitmqctl join_cluster rabbit@Bhz1
Bhz2: rabbitmqctl start_app
Bhz3: rabbitmqctl stop_app
Bhz3: rabbitmqctl join_cluster rabbit@Bhz1
Bhz3: rabbitmqctl start_app
扩展: 从集群中去除某个节点(不在此处运行)
rabbitmqctl forget_cluster_node rabbit@OtherNode
扩展:设置集群如何存储(不在此处运行)
rabbitmqctl join_cluster rabbit@Bhz1
加入集群,默认是使用磁盘存储,即disc
;如果想用内存存储,使用rabbitmqctl join_cluster --ram rabbit@Bhz1
4. 修改集群名称(在任意一个节点修改就可以了,不用每个节点都运行)
rabbitmqctl set_cluster_name rabbitmq_cluster1
5. 查看集群状态
rabbitmqctl cluster_status
6. 配置镜像队列策略(在任意一个节点上执行),目的是为了将所有队列设置成镜像队列,即队列会被复制到各个节点,各个节点状态一致,到此RabbitMQ高可用集群搭建完成
rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all"}'
查看当前策略
rabbitmqctl list_policies
删除策略
rabbitmqctl clear_policy ha-11