rpm -ivh http://elrepo.org/linux/elrepo/el7/x86_64/RPMS/elrepo-release-7.0-2.el7.elrepo.noarch.rpm
rpm -ivh http://mirrors.sohu.com/fedora-epel/7/x86_64/e/epel-release-7-2.noarch.rpm
yum install rabbitmq-server -y
####prepare rabbitmq on both os-node node
echo 'MYRABBITMQCLUSTERABC' > /var/lib/rabbitmq/.erlang.cookie
chown rabbitmq:rabbitmq /var/lib/rabbitmq/.erlang.cookie
chmod 400 /var/lib/rabbitmq/.erlang.cookie
cat > /etc/rabbitmq/rabbitmq.config << EOF
[{rabbit, [{loopback_users, []}, {tcp_listeners, [{"192.168.4.10", 5672}]}]}].
EOF
yum install pacemaker corosync resource-agents crmsh cluster-glue drbd84 kmod-drbd84 pcs -y
cat >/etc/drbd.d/rabbitmq.res < resource drbd-rabbitmq { device /dev/drbd0; meta-disk internal; on os-node1 { address 192.168.4.11:7789; disk /dev/vdb; } on os-node2 { address 192.168.4.12:7789; disk /dev/vdb; } syncer { rate 40M; } net { after-sb-0pri discard-zero-changes; after-sb-1pri discard-secondary; } } EOF modprobe drbd lsmod | grep drbd ###check drbd & bring resource up drbdadm dump drbd-rabbitmq drbdadm create-md drbd-rabbitmq drbdadm up drbd-rabbitmq ###set os-node1 as primary drbdadm -- --overwrite-data-of-peer primary drbd-rabbitmq ###format rabbitmq disk and mount in os-node1 mkfs -t xfs /dev/drbd0 mkdir -p /data/ms mount /dev/drbd0 /data/ms ; mv /var/lib/rabbitmq /data/ms umount /dev/drbd0 ####set os-node1 as secondary after drbd synchronization finished drbdadm secondary drbd-rabbitmq ########config pacemaker and corosync ########start pcsd, corosync, pacemaker service as default on both os-node node systemctl enable pcsd.service systemctl enable corosync.service systemctl enable pacemaker.service systemctl enable drbd.service systemctl start pcsd.service ######set user hacluster password on both os-node node [root@os-node1 ~]# passwd hacluster Changing password for user hacluster. New password: Retype new password: passwd: all authentication tokens updated successfully. ######config corosync [root@os-node1 ~]# pcs cluster auth os-node1 os-node2 Username: hacluster Password: os-node1: Authorized os-node2: Authorized [root@os-node1 ~]# pcs cluster setup --name oscluster os-node1 os-node2 Shutting down pacemaker/corosync services... Redirecting to /bin/systemctl stop pacemaker.service Redirecting to /bin/systemctl stop corosync.service Killing any remaining services... Removing all cluster configuration files... os-node1: Succeeded os-node2: Succeeded [root@os-node1 ~]# #######start cluster pcs cluster start os-node1 os-node2 #######verify corosync installation on both ct node corosync-cfgtool -s pcs status corosync #########configure cluster resources for rabbitmq ####global: pcs property set no-quorum-policy=ignore pcs property set stonith-enabled=false #####rabbitmq: pcs resource create drbd-rabbitmq ocf:linbit:drbd params drbd_resource="drbd-rabbitmq" op monitor interval="50s" role="Master" timeout="30s" op monitor interval="60s" role="Slave" timeout="30s" pcs resource create fs-rabbitmq ocf:heartbeat:Filesystem params device="/dev/drbd0" directory="/data/ms" fstype="xfs" meta target-role="Started" pcs resource create rabbitmq ocf:rabbitmq:rabbitmq-server params mnesia_base="/data/ms/rabbitmq" ip="192.168.4.10" nodename="rabbit@localhost" op monitor interval="20s" timeout="10s" pcs resource create vip-rabbitmq ocf:heartbeat:IPaddr2 params ip="192.168.4.10" cidr_netmask="24" pcs resource group add g-rabbitmq fs-rabbitmq vip-rabbitmq rabbitmq pcs resource master ms-drbd-rabbitmq drbd-rabbitmq meta notify="true" master-max="1" master-node-max="1" clone-max="2" clone-node-max="1" pcs constraint colocation add g-rabbitmq with master ms-drbd-rabbitmq pcs constraint order promote ms-drbd-rabbitmq then start g-rabbitmq ####check cluster status and config pcs config show pcs status #####change password of rabbitmq guest user on master node abbitmqctl -n rabbit@localhost change_password guest guest rabbitmqctl set_permissions guest ".*" ".*" ".*" rabbitmqctl set_user_tags guest administrator