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 <<EOF
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