1. 环境准备
主要参考官方文档 http://www.rabbitmq.com/install-rpm.html
1.1 erlang下载(下载零依赖版本,否则需要安装很多依赖)
下载erlang https://github.com/rabbitmq/erlang-rpm/releases
在这个地址下载对应系统版本的零依赖的erlang安装包
1.2 安装erlang
rpm -ivh erlang-21.0.3-1.el6.x86_64.rpm (需要root权限)
1.3 socat安装
# socat # 方式1 #http://www.rpmfind.net/linux/sourceforge/r/ro/roblinux-ext/repository/centos6/roblinux/10pe/x86_64/Packages/socat-1.7.3.0-1.x86_64.rpm
#https://forensics.cert.org/centos/cert/7/x86_64//socat-1.7.3.2-1.1.el7.x86_64.rpm
wget https://forensics.cert.org/centos/cert/6/x86_64//socat-1.7.3.2-1.1.el6.x86_64.rpm
rpm -ivh socat-1.7.3.2-1.1.el6.x86_64.rpm
# 方式2 # wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo
yum -y install socat
2.安装rabbitmq
2.1 下载rabbitmq安装包
wget https://dl.bintray.com/rabbitmq/all/rabbitmq-server/3.7.7/rabbitmq-server-3.7.7-1.el6.noarch.rpm
2.2 安装
rpm -ivh rabbitmq-server-3.7.7-1.el6.noarch.rpm
3.配置rabbitmq
3.1 设置开机启动
chkconfig rabbitmq-server on
3.2 启动和停止rabbitmq
/sbin/service rabbitmq-server start /sbin/service rabbitmq-server stop
3.3 开启管理插件
rabbitmq-plugins enable rabbitmq_management
插件管理参考http://www.rabbitmq.com/management.html
3.4 添加用户
rabbitmqctl add_user admin admin
3.5 为用户添加标签
rabbitmqctl set_user_tags admin administrator
3.6 为用户添加vhosts权限
rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"
用户管理参考 http://www.rabbitmq.com/rabbitmqctl.8.html
4.配置文件管理
参考http://www.rabbitmq.com/configure.html
5.rabbitmqctl的使用
参考 http://www.rabbitmq.com/rabbitmqctl.8.html
6.设置 Erlang Cookie
设置不同节点间同一认证的Erlang Cookie
这里将 node1 的该文件复制到 node2
scp /var/lib/rabbitmq/.erlang.cookie node2:/var/lib/rabbitmq/
7.组建集群
7.1 运行service rabbitmq-server start 启动各个节点
7.2 让node2 加入node1集群为例,更多节点类推
在node2上运行
rabbitmqctl stop_app
rabbitmqctl join_cluster rabbit@MSJTVL-FHJF-H01 ## 此处主机名要保证可以ping通
rabbitmqctl start_app
8.查看集群状态
rabbitmqctl cluster_status
9.注意事项
如 10.0.110.19 node1.rabbitmq.com
10.0.110.29 node2.rabbitmq.com
10. 搭建rabbitmq的镜像高可用模式集群
设置镜像队列策略
set_policy [-p vhostpath] {name} {pattern} {definition} [priority]
首先镜像模式要依赖policy模块,这个模块是做什么用的呢?
policy中文来说是政策,策略的意思,那么他就是要设置,那些Exchanges或者queue的数据需要复制,同步,如何复制同步?对就是做这些的。
这里有点内容的,我先上例子慢慢说:
[root@G ~]# ./rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all"}'
参数意思为:
ha-all:为策略名称。
^:为匹配符,只有一个^代表匹配所有,^zlh为匹配名称为zlh的exchanges或者queue。
ha-mode:为匹配类型,他分为3种模式:all-所有(所有的queue),exctly-部分(需配置ha-params参数,此参数为int类型比如3,众多集群中的随机3台机器),nodes-指定(需配置ha-params参数,此参数为数组类型比如["3rabbit@F","rabbit@G"]这样指定为F与G这2台机器。)。
参考示例如下
当然在web管理界面也能配置:
配置完看队列如下,其中表示ha-haall的说明用我的ha-haall策略啦,属于镜像模式,没有表示的就是普通模式:
11. 集群重启
集群重启时,最后一个挂掉的节点应该第一个重启,如果因特殊原因(比如同时断电),而不知道哪个节点最后一个挂掉。可用以下方法重启:
先在一个节点上执行
$ rabbitmqctl force_boot
$ service rabbitmq-server start
在其他节点上执行
$ service rabbitmq-server start
查看cluster状态是否正常(要在所有节点上查询)。
$ rabbitmqctl cluster_status
文章主要参考了以下两篇文章