Keepalived+Rabbitmq集群部署

Keepalived+Rabbitmq集群部署

摘要:Rabbit-mq消息中间件在线思维导图
image

一、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.修改配置

配置详解:Keepalived部署与配置详解
image

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页面正常访问,状态标绿

image

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需要配置正确地址

posted @ 2021-09-11 20:07  难删亦删  阅读(378)  评论(0)    收藏  举报