RabbitMQ3.6.16 CentOS6集群安装

1.安装前准备:

RabbitMQ版本界面:

  • http://www.rabbitmq.com/download.html
  • https://github.com/rabbitmq/rabbitmq-server/releases

RabbitMQ Erlang版本兼容:http://www.rabbitmq.com/which-erlang.html

Erlang各版本下载界面:http://erlang.org/download/

2.安装相关依赖库:

yum install ncurses ncurses-base ncurses-devel ncurses-libs ncurses-static ncurses-term ocaml-curses ocaml-curses-devel openssl-devel zlib-devel -y

3.编译安装Erlang

tar -zxf otp_src_19.3.tar.gz
cd otp_src_19.3
./configure --prefix=/opt/erlang/erlang --with-ssl -enable-threads -enable-smmp-support -enable-kernel-poll --enable-hipe --without-javac
make && make install

4.配置环境变量(/etc/profile):

export ERL_HOME=/usr/local/erlang
export PATH=${JAVA_HOME}/bin:${ERL_HOME}/bin:$PATH

source /etc/profile

5.验证erlang环境:

>erl

6.安装RabbitMQ

xz -d rabbitmq-server-generic-unix-3.6.16.tar.xz
tar -xf rabbitmq-server-generic-unix-3.6.16.tar.xz
mv -r rabbitmq_server-3.6.16 /usr/local/rabbitmq-3.6.16

7.准备环境

修改Hosts配置

准备三台服务器并配置hosts(/etc/hosts):

192.168.21.191 vm1
192.168.21.189 vm2
192.168.21.190 vm3

配置host名称(/etc/sysconfig/network):

HOSTNAME=vm1

8.设置Erlang cookie 使三台保持一致:

自己编译安装的rabbitmq 在第一次启动rabbitmq的时候.erlang.cookie才会生成

在搭建RabbitMQ集群的时候往往会因为.erlang.cookie而报各种错误,网上查资料也会经常说.erlang.cookie会在$home下,或者在/var/lib/rabbitmq下,到底在rabbitmq启动的时候用的哪个cookie,cookie存放的路径在哪里,那么下面我们来仔细的查证一下。

.erlang.cookie是什么

erlang.cookie是erlang实现分布式的必要文件,erlang分布式的每个节点上要保持相同的.erlang.cookie文件,同时保证文件的权限是400。

.erlang.cookie存放路径

官方在介绍集群的文档中提到过.erlang.cookie一般会存在这两个地址:第一个是$home/.erlang.cookie;第二个地方就是/var/lib/rabbitmq/.erlang.cookie。

  • 如果我们使用解压缩方式安装部署的rabbitmq,那么这个文件会在${home}目录下,也就是$home/.erlang.cookie。
  • 如果我们使用rpm等安装包方式进行安装的,那么这个文件会在/var/lib/rabbitmq目录下。

9.启动

使用-detached参数运行各节点:

rabbitmqctl stop
rabbitmq-server -detached

然后可以通过rabbitmqctl cluster_status查看节点状态。PS:要先拷贝cookie到另外两台机器上,保证三台机器上的cookie是一致的,然后再启动服务。

由于guest这个用户,只能在本地访问,所以我们要新增一个用户并赋予权限:

添加用户并设置密码:

rabbitmqctl add_user  admin 123456

添加权限(使admin用户对虚拟主机“/” 具有所有权限):

rabbitmqctl set_permissions -p "/" admin ".*" ".*" ".*"

修改用户角色(加入administrator用户组)

rabbitmqctl set_user_tags admin administrator

然后就可以远程访问了,然后可直接配置用户权限等信息。到此,就可以通过http://ip:15672 使用admin 123456 进行登陆了。

到这里的话,每个节点是作为单独的一台RabbitMQ存在的,也可以正常提供服务了

(3)组成集群

rabbitmq-server启动时,会一起启动节点和应用,它预先设置RabbitMQ应用为standalone模式。要将一个节点加入到现有的集群中,你需要停止这个应用,并将节点设置为原始状态。如果使用./rabbitmqctl stop,应用和节点都将被关闭。所以使用rabbitmqctl stop_app仅仅关闭应用。
将 vm2、vm3与 vm1 组成集群,这里以vm2为例
vm2# rabbitmqctl stop_app
vm2# rabbitmqctl join_cluster rabbit@vm1               ####这里集群的名字一定不要写错了
vm2# rabbitmqctl start_app
将vm3重复上述操作,也加入vm1的集群。
则此时 vm2 与 vm3 也会自动建立连接,集群配置完毕;(PS:如果要使用内存节点,则可以使用vm2 # rabbitmqctl join_cluster --ram rabbit@vm1加入集群)集群配置好后,可以在 RabbitMQ 任意节点上执行 rabbitmqctl cluster_status 来查看是否集群配置成功。
vm3# rabbitmqctl cluster_status

Cluster status of node rabbit@vm3 ...
        [{vms,[{disc,[rabbit@vm1,rabbit@vm2,rabbit@vm3]}]},
        {running_vms,[rabbit@vm1,rabbit@vm2,rabbit@vm3]},
        {cluster_name,<<"rabbit@vm1">>},
        {partitions,[]},
        {alarms,[{rabbit@vm1,[]},{rabbit@vm2,[]},{rabbit@vm3,[]}]}]

可知,集群的名称默认为rabbit@vm1;

PS:另外一种查看集群是否成功的方式,在web页面上的“Queues”的列表中,查看有如下显示为“同步镜像到node2”,则也表示集群配置成功

ae5ea3e0deb39e2e7ae261d1c91157942f6.jpg

 

RabbitMQ脑裂问题:

如上图红色字体展示部分:Network partition detected ,Mnesia reports that this RabbitMQ cluster has experienced a network partition. There is a risk of losing data.

 

 

 

 

 

参考:

https://blog.csdn.net/wochunyang/article/details/52524977
https://www.cnblogs.com/taoge007/p/6208552.html
https://blog.csdn.net/jxdl6655/article/details/78194191
https://www.cnblogs.com/kevingrace/p/8012792.html

 

 

转载于:https://my.oschina.net/LucasZhu/blog/1843387

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值