rabbitmq 3.6集群搭建
0. 绪论
最近项目在做mq的技术选型,最终确定采用rabbitMq。需要对rabbitMq进行基准测试,所以在服务器上划出3个虚拟机节点。用这三台虚拟机做基准测试。(ps 以下命令都是用root 用户执行,如果不是root 用户那么命令前加sudo)
1. 集群规划
虚拟机操作系统采用的是centos 7.X
节点ip | 主机名称 |
---|---|
192.168.234.220 | node1 |
192.168.234.221 | node2 |
192.168.234.222 | node3 |
配置项 | 值 |
---|---|
CPU | 4Core |
MEMORY | 10G |
DISK | 1T |
NETWORK | NAT |
2. 版本选择
erlang 版本是 19.3.6
rabbitmq 版本是 3.6.16
3. 环境准备
- 修改hostname
在 192.168.234.220 节点
# hostnamectl set-hostname node1
# cat >> /etc/hosts <<EOF
192.168.234.220 node1
192.168.234.221 node2
192.168.234.222 node3
EOF
在 192.168.234.221 节点
# hostnamectl set-hostname node2
# cat >> /etc/hosts <<EOF
192.168.234.220 node1
192.168.234.221 node2
192.168.234.222 node3
EOF
在 192.168.234.222 节点
# hostnamectl set-hostname node3
# cat >> /etc/hosts <<EOF
192.168.234.220 node1
192.168.234.221 node2
192.168.234.222 node3
EOF
- 安装rabbitMq 依赖
erlang 19.3.6
google group https://groups.google.com/forum/#!msg/rabbitmq-users/kXkI-f3pgEw/UFowJIK4BQAJ
socat
logrotate
node1,node2,node3操作流程
erlang 采用官方提供的 Zero-dependency Erlang from RabbitMQ
Zero dependency Erlang RPM package for running RabbitMQ can be installed via Yum repositories on Bintray and Package Cloud as well as a direct download. As the name suggests, the package strips off some Erlang modules and dependencies that are not essential for running RabbitMQ.
英文不好不会翻译抱歉,提供官方链接 http://www.rabbitmq.com/install-rpm.html#install-erlang,自己研究下。
# cat > /etc/yum.repos.d/rabbitmq-erlang.repo <<EOF
[rabbitmq-erlang]
name=rabbitmq-erlang
baseurl=https://dl.bintray.com/rabbitmq-erlang/rpm/erlang/19/el/7
gpgcheck=1
gpgkey=https://dl.bintray.com/rabbitmq/Keys/rabbitmq-release-signing-key.asc
repo_gpgcheck=0
enabled=1
EOF
// 安装erlang
# yum install erlang -y
// 安装 socat
# yum install socat -y
// 安装 logrotate
# yum install logrotate -y
下载安装包(ps 因为采用3.6.16版本的rabbitMq,官网已经没有该版本配套的文档和软件包链接,通过github下载)
rabbitMq 3.6.16 github 页面url https://github.com/rabbitmq/rabbitmq-server/releases?after=v3.7.8-rc.3
// 下载包
# wget https://github.com/rabbitmq/rabbitmq-server/releases/download/rabbitmq_v3_6_16/rabbitmq-server-3.6.16-1.el6.noarch.rpm
4. node1,node2,node3 安装rabbitMq
// 在node1 node2 node3 节点上用rpm 安装rabbitMq
rpm -ivh rabbitmq-server-3.6.16-1.el6.noarch.rpm
// 启动rabbitmq-server
systemctl start rabbitmq-server
systemctl enable rabbitmq-server
// 启用rabbitmq_management
# rabbitmq-plugins enable rabbitmq_management
// 创建管理用户
# rabbitmqctl add_user admin admin
// 将admin 用户赋予管理员角色
# rabbitmqctl set_user_tags admin administrator
// grant the 'admin' user permission to modify, write, and read all vhosts.
# rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"
5. 集群安装
- copy erlang.cookie 在node1上执行
# scp /var/lib/rabbitmq/.erlang.cookie [email protected]:/var/lib/rabbitmq/
# scp /var/lib/rabbitmq/.erlang.cookie [email protected]:/var/lib/rabbitmq/
# rabbitmqctl cluster_status
- node2,3上执行加入集群指令
# systemctl restart rabbitmq-server
# rabbitmqctl stop_app
# rabbitmqctl join_cluster [email protected]
# rabbitmqctl start_app
- node1 查询集群状态
# rabbitmqctl cluster_status
Cluster status of node '[email protected]'
[{nodes,[{disc,['[email protected]']},
{ram,['[email protected]','[email protected]']}]},
{running_nodes,['[email protected]','[email protected]','[email protected]']},
{cluster_name,<<"[email protected]">>},
{partitions,[]},
{alarms,[{'[email protected]',[]},
{'[email protected]',[]},
{'[email protected]',[]}]}]
// 如果出现以上提示集群加入成功
management web 如下
6. 配置镜像队列
node1 节点上执行
rabbitmqctl set_policy ha-all ".*" '{"ha-mode":"all"}'
或者是 登录management 页面添加policy
参考链接:
http://www.rabbitmq.com/install-rpm.html
http://www.rabbitmq.com/clustering.html
http://www.rabbitmq.com/ha.html
https://www.howtoforge.com/how-to-set-up-rabbitmq-cluster-on-centos-7/