我是靠谱客的博主 愤怒母鸡,这篇文章主要介绍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查看是否启动

最后

以上就是愤怒母鸡最近收集整理的关于rabbitmq-server单机搭建+镜像集群keepalived高可用的全部内容,更多相关rabbitmq-server单机搭建+镜像集群keepalived高可用内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(50)

评论列表共有 0 条评论

立即
投稿
返回
顶部