Linux下搭建RabbitMQ镜像模式集群

基于erlang的分布式特性,RabbitMQ很容易搭建其集群模式。RabbitMQ集群有普通模式和镜像模式两种,但普通模式的可靠性远差于镜像模式;另外,RabbitMQ的消息存储方式也有内存型和磁盘型两种,磁盘型适用于持久型消息,而内存型在重启应用后则消息被清空,故本文只讲述RabbitMQ磁盘型镜像模式集群的搭建方法。

系统环境

操作系统:CentOS 7.2

应用软件:erLang、RabbitMQ

服务器配置

服务器IP 主机名 应用
10.10.100.101 RABBITMQ-A erlang
RabbitMQ
10.10.100.102 RABBITMQ-B
10.10.100.103 RABBITMQ-C

如果图省事的话,可以从本站下载erlang-19.0.4 & rabbitmq-server-3.6.12,从而免去配置yum源等流程,直接从“导入rabbitmq-managerment”开始。

注意事项

1、配置hostname(各节点不同)和hosts

echo "RABBITMQ-A" > /etc/hostname

echo -e "10.10.100.101 RABBITMQ-A\n10.10.100.102 RABBITMQ-B\n10.10.100.103 RABBITMQ-C" >> /etc/hosts

2、要配置或关掉防火墙

安装erlang

erlang官网下载:https://www.erlang-solutions.com/resources/download.html

cd /opt

wget http://erlang.org/download/otp_src_21.0.tar.gz

tar xvf otp_src_21.0.tar.gz

cd otp_src_21.0

./configure --prefix=/opt/erlang

make && makeinstall

vi /etc/profile

export ERLANG_HOME=/opt/erlang
export PATH=$PATH:$ERLANG_HOME/bin

安装RabbitMQ

配置yum源的官方介绍:http://www.rabbitmq.com/install-rpm.html

rpm --import https://dl.bintray.com/rabbitmq/Keys/rabbitmq-release-signing-key.asc

vi /etc/yum.repos.d/rabbitmq.repo

[bintray-rabbitmq-server]
name=bintray-rabbitmq-rpm
baseurl=https://dl.bintray.com/rabbitmq/rpm/rabbitmq-server/v3.7.x/el/7/
gpgcheck=0
repo_gpgcheck=0
enabled=1

yum -y install rabbitmq-server

至此,erlang和rabbitmq已经安装完成,下面开始进入配置环节。

导入插件rabbitmq_management

rabbitmq-plugins enable rabbitmq_management

同步cookie文件

chown rabbitmq:rabbitmq /var/lib/rabbitmq/.erlang.cookie

for i in 2 3; do scp /var/lib/rabbitmq/.erlang.cookie root@10.10.100.10$i:/var/lib/rabbitmq; done

新添加的节点也必须使用原集群的erlang cookie,erlang cookie文件位置:

  • rpm安装 → /var/lib/rabbitmq/.erlang.cookie
  • 编译安装 → $home/.erlang.cookie

配置RabbitMQ集群

配置RabbitMQ用户

在所有节点上添加用户,并加入administrator用户组:

rabbitmqctl add_user rbtmqadmin Rabbitmq@123

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

rabbitmqctl set_user_tags rbtmqadmin administrator

完成后,即可登录web界面http://10.10.100.101:15672。

提醒:RabbitMQ的默认用户“guest”用于集群检测,一般情况下不要做任何修改。

通过-detached启所有节点

rabbitmqctl stop

rabbitmq-server -detached

rabbitmqctl cluster_status

创建集群

从第二个节点开始,依次加入到第一个节点中,创建RabbitMQ集群。

rabbitmqctl stop_app

rabbitmqctl join_cluster rabbit@RABBITMQ-A

rabbitmqctl start_app

设置镜像策略

在web端创建虚拟机(coreserver)并授予rbtmqadmin和guest用户权限:

Admin → Virtual Hosts → Add a new virtual host

然后,在终端执行如下命令:

rabbitmqctl set_policy -p coreserver ha-all "^" '{"ha-mode":"all"}'

至此,RabbitMQ集群已经搭建成功,如果需要搭建HA,可在本博客中搜索“haproxy”参考其他文章,下面举出haproxy中需要调整的配置(10.10.100.100是HA的IP):

listen rabbitmq_admin
    bind 10.10.100.100:15672
    server node1 10.10.100.101:15672
    server node2 10.10.100.102:15672
    server node3 10.10.100.103:15672

listen rabbitmq_cluster 
    bind 10.10.100.100:5672
    option tcplog
    mode tcp
    timeout client 1h
    timeout server 1h
    option clitcpka
    balance roundrobin
    server node1 10.10.100.101:5672 check inter 5s rise 2 fall 3
    server node2 10.10.100.102:5672 check inter 5s rise 2 fall 3
    server node3 10.10.100.103:5672 check inter 5s rise 2 fall 3

1 2
赞 (1) 打赏

评论 0

评论前必须登录!

登陆 注册

感谢您的支持与鼓励

支付宝扫一扫打赏

微信扫一扫打赏