rabbitmq-server单机搭建+镜像集群keepalived高可用

安装erlang环境(需要有epel源的前提下)

rpm -Uvh http://www.rabbitmq.com/releases/erlang/erlang-18.1-1.el7.centos.x86_64.rpm

下载rabbitmq的rpm安装包

wget http://www.rabbitmq.com/releases/rabbitmq-server/v3.6.6/rabbitmq-server-3.6.6-1.el7.noarch.rpm

导入秘钥 

rpm --import https://www.rabbitmq.com/rabbitmq-release-signing-key.asc

 yum安装rabbitmq

yum -y install rabbitmq-server-3.6.6-1.el7.noarch.rpm

启动rabbitmq

systemctl start rabbitmq-server

配置文件模板路径

/usr/share/doc/rabbitmq-server-3.6.6/rabbitmq.config.example

rabbitmq_management管理插件使用

启用:
rabbitmq-plugins enable rabbitmq_management
增加一个用户:
rabbitmqctl add_user admin 12345

授权:
rabbitmqctl set_user_tags admin administrator
查看用户:
rabbitmqctl list_users
赋予用户权限:
rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"

镜像集群keepalived高可用3.6.6

添加hosts解析

192.168.0.221   master
192.168.0.56    slave

安装erlang插件

两台机器都运行
rpm -Uvh http://www.rabbitmq.com/releases/erlang/erlang-18.1-1.el7.centos.x86_64.rpm

安装mq

两台机器都执行安装
wget http://www.rabbitmq.com/releases/rabbitmq-server/v3.6.6/rabbitmq-server-3.6.6-1.el7.noarch.rpm
yum -y install rabbitmq-server-3.6.6-1.el7.noarch.rpm

测试rabbitmq是否可以正常启动,并查看状态

systemctl start rabbitmq-server
systemctl status rabbitmq-server
systemctl enable rabbitmq-server

修改配置文件

cd /etc/rabbitmq/
cp /usr/share/doc/rabbitmq-server-3.6.6/rabbitmq.config.example ./rabbitmq.config
根据具体需求进行参数修改

安装其他所需插件

cd /usr/lib/rabbitmq/lib/rabbitmq_server-3.6.6/plugins
wget https://dl.bintray.com/rabbitmq/community-plugins/rabbitmq_delayed_message_exchange-0.0.1.ez
https://github.com/rabbitmq/rabbitmq-delayed-message-exchange/releases/tag/3.9.0

设置开机自启动

rabbitmq-plugins enable rabbitmq_management
rabbitmq-plugins enable rabbitmq_delayed_message_exchange
rabbitmq-plugins enable rabbitmq_tracing

查看端口是否正常

netstat -tnlp

添加账户并设置管理员账户

rabbitmqctl add_user user 123456
rabbitmqctl set_user_tags user administrator

以下为集群配置:

RabbitMQ的集群是依赖erlang集群,而erlang集群是通过这个cookie进行通信认证的,因此我们做集群的第一步就是统一cookie。
路径在$HOME中或者在/var/lib/rabbitmq中,文件名称为.erlang.cookie

cat /var/lib/rabbitmq/.erlang.cookie 查看是否统一
scp /var/lib/rabbitmq/.erlang.cookie root@ip:/var/lib/rabbitmq/.erlang.cookie 使两台mq的cookie统一
设置权限为600
chmod 600 /var/lib/rabbitmq/.erlang.cookie

重启从节点
systemctl restart rabbitmq-server

查看集群状态 任意一个节点操作

rabbitmqctl cluster_status

加入集群 从节点执行

rabbitmqctl stop_app
rabbitmqctl join_cluster rabbit@master
rabbitmqctl start_app

查看集群状态是否正常并打开网页管理页面查看nodes

设置为镜像模式 任意一个节点操作

rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all"}'
(默认虚拟主机为/)
使用Rabbit镜像功能,需要基于rabbitmq策略来实现,策策是用来控制和修改群集范围的某个vhost队列行为和Exchange行为在cluster中任意节点启用策略,策略会自动同步到集群节点
# rabbitmqctl set_policy -p hrsystem ha-allqueue"^" '{"ha-mode":"all"}'
这行命令在vhost名称为hrsystem创建了一个策略,策略名称为ha-allqueue,策略模式为 all 即复制到所有节点,包含新增节点,
策略正则表达式为 “^” 表示所有匹配所有队列名称。
例如rabbitmqctl set_policy -p hrsystem ha-allqueue "^message" '{"ha-mode":"all"}'
注意:"^message" 这个规则要根据自己修改,这个是指同步"message"开头的队列名称,我们配置时使用的应用于所有队列,所以表达式为"^"

查看策略 任意节点执行

[root@master ~]# rabbitmqctl list_policies
Listing policies …
/ ha-all all ^ {“ha-mode”:“all”} 0

配置keepalived

安装

yum -y install keepalived ipvsadm nmap

配置文件

global_defs {
router_id LVS_01
}

vrrp_script chk_rabbitmq {
script "/etc/keepalived/scripts/rabbitmq_check.sh"
interval 2
weight 2
}

vrrp_instance VI_1 {
state MASTER
interface ens33
virtual_router_id 51
priority 150
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
10.4.7.103/24 dev ens33
}
track_script {
chk_rabbitmq
}

}

从:

global_defs {
router_id LVS_02
}

vrrp_script chk_rabbitmq {
script "/etc/keepalived/scripts/rabbitmq_check.sh"
interval 2
weight 2
}

vrrp_instance VI_1 {
state BACKUP
interface ens33
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
10.4.7.103/24 dev ens33
}
track_script {
chk_rabbitmq
}

}

检测脚本:

#!/bin/bash
k1=`/usr/bin/nmap -sS 127.0.0.1 -p 5672 | grep 5672 | awk '{printf $2}'`
if [ "$k1" != "open" ]; then
systemctl restart rabbitmq-server
fi
Q1=`/usr/bin/nmap -sS 127.0.0.1 -p 5672 | grep 5672 | awk '{printf $2}'`
if [ "$Q1" != "open" ]; then
systemctl stop keepalived
fi

启动keepalived查看是否启动

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值