rabbitmq集群安装

 

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

扫描二维码关注公众号,回复: 2683326 查看本文章

 

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.注意事项

cookie在所有节点上必须完全一样,同步时一定要注意。
erlang是通过主机名来连接服务,必须保证各个主机名之间可以ping通。可以通过编辑/etc/hosts来手工添加主机名和IP对应关系。如果主机名ping不通,rabbitmq服务启动会失败。

如 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

文章主要参考了以下两篇文章

http://www.cnblogs.com/knowledgesea/p/6535766.html

https://segmentfault.com/a/1190000010702020 

猜你喜欢

转载自blog.csdn.net/liufei198613/article/details/81133292