Keepalived+Rabbitmq集群部署
Keepalived+Rabbitmq集群部署
一、Keepalived
1.前期准备
下载Keepalived:https://www.keepalived.org/download.html
版本最好下载,否则可能会出现编译异常: Version 2.1.5
2.安装流程
1)安装依赖
yum -y install openssl-devel
2)编译并安装
# 1)创建目录及日志文件,实际上keepalived日志在/var/log/messages
mkdir -p /etc/keepalived
mkdir -p /usr/local/keepalived
touch /var/log/keepalived.log
# 2)上传下载的keepalived,解包
tar xvf keepalived-2.1.5.tar.gz
cd keepalived-2.1.5
# 3)编译
./configure --prefix=/usr/local/keepalived && make && make install
# 4)复制启动及配置
cp /usr/local/keepalived/sbin/keepalived /sbin/
# --复制keepalived.conf
cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf
# --复制系统相关文件
cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
# --复制启动类文件,这个是在keepalived解压出来的源码包里面,位置不一样
cp keepalived/etc/init.d/keepalived.rh.init /etc/init.d/keepalived
chmod 755 /etc/init.d/keepalived
# 5)执行
/sbin/chkconfig --add keepalived && /sbin/chkconfig keepalived on
3.修改配置
1)修改配置
vim /etc/keepalived/keepalived.conf
2)修改主配置
! Configuration File for keepalived
global_defs {
router_id LVS_DEVEL
vrrp_skip_check_adv_addr
vrrp_garp_master_refresh 60
vrrp_garp_interval 0.001
vrrp_gna_interval 0
script_user root
enable_script_security
}
vrrp_script check_mq {
script "/usr/local/src/check_mq.sh"
interval 1
weight -5
}
vrrp_instance VI_1 {
state MASTER
interface em1
virtual_router_id 73
priority 100
advert_int 5
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.220.188
}
track_script {
check_mq
}
3)修改从配置
! Configuration File for keepalived
global_defs {
router_id LVS_DEVEL
vrrp_skip_check_adv_addr
vrrp_garp_master_refresh 60
vrrp_garp_interval 0.001
vrrp_gna_interval 0
script_user root
enable_script_security
}
vrrp_script check_mq {
script "/usr/local/src/check_mq.sh"
interval 1
weight -5
}
vrrp_instance VI_1 {
state BACKUP
interface em1
virtual_router_id 73
priority 100
advert_int 5
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.220.188
}
track_script {
check_mq
}
4)配置简单说明
! Configuration File for keepalived
global_defs {
router_id LVS_DEVEL
vrrp_skip_check_adv_addr
vrrp_garp_master_refresh 60
vrrp_garp_interval 0.001
vrrp_gna_interval 0
script_user root
enable_script_security
}
# "check_mq"后面要有个空格!否则检查脚本不会自动执行
# script "/usr/local/src/check_mq.sh" 必须是绝对路径,权限777
# interval指定脚本执行的间隔。单位是秒。默认为1s
# timeout指定在多少秒后,脚本被认为执行失败
vrrp_script check_mq {
script "/usr/local/src/check_mq.sh"
interval 15
weight -5
}
# state 主为MASTER,从为BACKUP
# interface后接服务器网卡名称
# 查看服务器网卡名称,ifconfig
# virtual_router_id 主和从序号保持一致
# priority优先级,谁优先级大,keepalived就飘到那一台服务器,本质上来说与state主备无关
vrrp_instance VI_1 {
state MASTER
interface em1
virtual_router_id 73
priority 100
# 设置主备之间的检查时间,单位为s
advert_int 5
authentication {
auth_type PASS
auth_pass 1111
}
# 设置虚拟ip地址
virtual_ipaddress {
192.168.220.188
}
# 检查mq的脚本,需要和vrrp_script对应上
track_script {
check_mq
}
}
5)check_mq.sh
#!/bin/bash
source /etc/profile
dates=`date +"%Y%m%d%H%M"`
sleep 10s
STATUS=$(netstat -antlp|grep LISTEN|grep -w 15672|wc -l)
if [[ $STATUS -eq 0 ]]
then
systemctl stop keepalived
echo "ERROR-${dates}-rabbitmq异常,关闭keepalived" >> /home/script/check_mq_status.log
else
echo "INFO-${dates}-rabbitmq正常" >> /home/script/check_mq_status.log
fi
4.注意事项
1)权限问题
检查mq服务脚本,chmod 777 check_mq.sh
2)日志路径
cat /var/log/messages
3)配置文件
cat /etc/keepalived/keepalived.conf
4)正常情况
- 当keepalived设置的虚拟ip与服务器网卡绑定后,可以通过命令 ip a去查看绑定关系;
- 虚拟ip同时只会飘到一台,当主正常,虚拟ip会绑定在主服务器上,当主keepalived关闭,虚拟ip会绑定到从服务器上
5.常用命令
# 启动服务
systemctl start keepalived
# 重启服务
systemctl restart keepalived
# 关闭服务
systemctl stop keepalived
# 服务状态
systemctl status keepalived
# 开机自启(默认)
systemctl enable keepalived
# 开机自启关闭
systemctl disable keepalived
二、Rabbitmq
1.前期准备
1)下载Erlang
wget https://packages.erlang-solutions.com/erlang-solutions-2.0-1.noarch.rpm
其他版本下载地址:
https://www.erlang-solutions.com/downloads/
2)下载Rabbitmq
wget https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.8.13/rabbitmq-server-3.8.13-1.el8.noarch.rpm
其他版本下载地址:
https://www.rabbitmq.com/download.html
2.安装流程
1)安装Erlang&socat
# 安装
rpm -Uvh erlang-solutions-2.0-1.noarch.rpm
yum install -y erlang
# 检查版本
erl -v
# 安装socat
yum install -y socat
2)安装Rabbitmq
rpm -Uvh rabbitmq-server-3.8.13-1.el8.noarch.rpm
3)启动Rabbitmq命令
# 启动服务
systemctl start rabbitmq-server
# 查看服务状态
systemctl status rabbitmq-server
# 停止服务
systemctl stop rabbitmq-server
# 开机启动服务
systemctl enable rabbitmq-server
# 启动图形插件
rabbitmq-plugins enable rabbitmq_management
3.搭建集群
1)检查,是否停止服务器上rabbitmq服务
# 停止
systemctl stop rabbitmq-server
# 查看进程是否存在rabbitmq
ps -ef|grep rabbitmq
2)修改mq服务器的/etc/hosts
192.168.59.150 mq-node01
192.168.59.151 mq-node02
3)添加cookie
# 将mq-node01服务器中/var/lib/rabbitmq/.erlang.cookie复制到mq-node02服务器同目录下覆盖
# 修改.erlang.cookie权限为400
chmod 400 .erlang.cookie
# 修改.erlang.cookie所属者
chown rabbitmq:rabbitmq .erlang.cookie
4)加入集群
主节点服务器上
#启动Broker
rabbitmq-server -detached
#启动集群
rabbitmqctl start_app
#查看集群状态
rabbitmqctl cluster_status
从节点服务器上
#启动Broker
rabbitmq-server -detached
#查看集群状态
rabbitmqctl stop_app
#重置状态
rabbitmqctl reset
从节点加入主节点
# mq-node01为主节点名称
rabbitmqctl join_cluster rabbit@mq-node01
# 从节点启动集群
rabbitmqctl start_app
# 设置成镜像队列(主从服务器都执行)
rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all"}'
检查集群状态
rabbitmqctl cluster_status
4.创建用户
# 启用页面插件
rabbitmq-plugins enable rabbitmq_management
# 查看当前所有用户
rabbitmqctl list_users
# 添加新用户
rabbitmqctl add_user chances chances@2020
# 设置用户tag;administrator最高权限
rabbitmqctl set_user_tags chances administrator
# 赋予用户默认vhost的全部操作权限
rabbitmqctl set_permissions -p / chances ".*" ".*" ".*"
# 查看用户权限
rabbitmqctl list_user_permissions chances
集群部署正常,mq页面正常访问,状态标绿

5.注意事项
1)权限问题
.erlang.cookie文件的权限为400,且所属者为rabbitmq
- 修改.erlang.cookie权限为400
chmod 400 .erlang.cookie
- 修改.erlang.cookie所属者
chown rabbitmq:rabbitmq .erlang.cookie
2)日志路径
/var/log/rabbitmq
三、卸载Rabbitmq
1.卸载并停止服务
#卸载
#停止服务
rabbitmqctl app_stop
yum list | grep rabbitmq
yum -y remove rabbitmq-server.noarch
2.删除erlang
yum list | grep erlang
yum -y remove erlang-*
yum remove erlang.x86_64
3.删除lib
rm -rf /usr/lib64/erlang
rm -rf /var/lib/rabbitmq
四、可能遇到的问题
1.问题:Job for rabbitmq-server.service failed because the control process exited...
解决:ps -ef|grep rabbitmq,将rabbitmq进程杀掉
2.问题:搭载集群遇到ERROR: node with name "rabbit" already running on "chances123"
解决:跳过这步即可 rabbitmq-server -detached
3.问题:搭载集群遇到ERROR:unable to connect to node rabbit@chances124: nodedown
解决:
1)关闭rabbitmq服务,systemctl stop rabbitmq-server
2).erlang.cookie,权限,所属者,里面的值主从保持一致
4.问题:节点无法启动Can't open PID file /run/keepalived.pid (yet?) after start: No such file or directory
/etc/hosts需要配置正确地址



浙公网安备 33010602011771号