Linux搭建RabbitMQ镜像集群及相关操作命令

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

系统环境

基于CentOS 7.2操作系统部署。

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

安装erlang

点击此处访问Erlang官网

# 下载并安装erlang
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

# 修改系统环境变量
vim /etc/profile
export ERLANG_HOME=/opt/erlang
export PATH=$PATH:$ERLANG_HOME/bin

安装RabbitMQ

阅读RabbitMQ官网提供的yum源配置方法。

# 导入rabbitmq签证
rpm --import https://dl.bintray.com/rabbitmq/Keys/rabbitmq-release-signing-key.asc

# 修改rabbitmq.repo
vim /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
# 安装rabbitmq
yum -y install rabbitmq-server

配置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相关文章,以下为关键配置:

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

相关知识点

镜像策略参数说明

rabbitmqctl set_policy [-p Vhost] Name Pattern Definition [Priority]
-p Vhost 可选参数,对指定vhost下的queue进行设置
Name 指定policy的名称
Pattern 指定queue的匹配模式(正则表达式)
Definition 指定镜像模式
ha-mode {all|exactly|nodes} 指定镜像队列的模式
all 对集群中的所有节点进行镜像
exactly 表示在指定个数的节点上进行镜像,由ha-params指定节点数量
nodes 对指定的节点进行镜像,由ha-params指定节点名称
ha-params 对ha-mode定义参数node-name或node-number
ha-sync-mode {automatic|manual} 进行队列中消息的同步方式,有效值为automatic和manual
Priority 可选参数,policy的优先级

命令操作说明

rabbitmqctl start_app|stop_app 启动/关闭应用
start|stop [-n {policy-name}] 关闭节点和应用
add_vhost|delete_vhost {vhost-name} 新建/删除虚拟机
add_user {user-name} {user-pwd}|delete_user {user-name}|list_users 新建/删除/查看用户
change_password {user-name} {new-pwd} 修改密码
set_user_tags {user-name} {administrator|monitoring|management} 设置用户角色
set_permissions [-p vhostpath] {user} {conf} {write} {read} 设置权限
change_cluster_node_type {disc|ram} 更改节点类型
status|cluster_status 服务器/集群状态
list_queues [-p vhostpath] [queueinfoitem …] 队列信息
rabbitmq-plugins enable|disable {plugin-name} 开启/关闭插件
rabbitmq-server -detached 启动节点和应用

原创文章禁止转载:技术学堂 » Linux搭建RabbitMQ镜像集群及相关操作命令

精彩评论

7+4=

感谢您的支持与鼓励

支付宝扫一扫打赏

微信扫一扫打赏