Centos 7 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 erlang RabbitMQ 10.10.100.103 RABBITMQ-C erlang RabbitMQ
目录
配置erlang yum源
cat >/etc/yum.repos.d/rabbitmq_erlang.repo<<-EOF [rabbitmq_erlang] name=rabbitmq_erlang baseurl=https://packagecloud.io/rabbitmq/erlang/el/7/$basearch repo_gpgcheck=1 gpgcheck=0 enabled=1 gpgkey=https://packagecloud.io/rabbitmq/erlang/gpgkey sslverify=1 sslcacert=/etc/pki/tls/certs/ca-bundle.crt metadata_expire=300 [rabbitmq_erlang-source] name=rabbitmq_erlang-source baseurl=https://packagecloud.io/rabbitmq/erlang/el/7/SRPMS repo_gpgcheck=1 gpgcheck=0 enabled=1 gpgkey=https://packagecloud.io/rabbitmq/erlang/gpgkey sslverify=1 sslcacert=/etc/pki/tls/certs/ca-bundle.crt metadata_expire=300 EOF
配置rabbitmq的yum源
cat >/etc/yum.repos.d/bintray-rabbitmq-server<<-EOF [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 EOF
安装erlang和rabbitmq-server
yum install erlang rabbitmq-server -y
1、配置hostname
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
至此,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_delayed_message_exchange插件,所以就要下载并安装。
下载地址:https://www.rabbitmq.com/community-plugins.html
下载到服务器上解压出来后,复制插件到rabbitmq安装目录下的plugins目录:
cp rabbitmq_delayed_message_exchange-20171201-3.7.x.ez /usr/lib/rabbitmq/lib/rabbitmq_server-3.7.17/plugins/ rabbitmq-plugins enable rabbitmq_delayed_message_exchange Enabling plugins on node rabbit@localhost: rabbitmq_delayed_message_exchange The following plugins have been configured:rabbitmq_delayed_message_exchange Applying plugin configuration to rabbit@localhost... Plugin configuration unchanged.
上面表示插件启动成功。
启动管理功能
为了管理方便,启动web管理功能,默认端口为15672。
rabbitmq-plugins enable rabbitmq_management
配置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