栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

RabbitMQ + Keepalived + lvs高可用镜像集群

RabbitMQ + Keepalived + lvs高可用镜像集群

如图所示: 前端采用keepalived+lvs实现高可用负载均衡, RabbitMQ HA 队列(镜像队列)进行消息队列结构复制。本方案中搭建两个节点,并且都是磁盘节点(所有节点状态保持一致,节点完全对等),只要有任何一个节点能够工作,RabbitMQ 集群对外就能提供服务。任务处理进程同时监控每一太RabbitMQ节点(每个节点都相应部署一份任务处理模块)。这样一来,每一份任务处理模块只需要处理自己所监听的rabbitMQ-server接受的任务即可,两份任务处理模块功能完全一致,但相互不影响;当其中一台RabbitMQ宕机之后,与之对应的任务处理进程停止即可,不影响另外一个节点正常工作。

本例环境:

rabbitMQ1:192.168.86.224

rabbitMQ2:192.168.86.235

keepalived(master)+lvs:192.168.86.224

keepalived(backup)+lvs:192.168.86.235

VIP:192.168.86.14

一.安装mq

1.二台机器全部安装Erlang

yum install compat-openssl10

yum install libnsl

yum install ncurses-compat-libs

2.安装socat、erlang依赖包以及mq

yum install socat

rpm -ivh erlang-20.3-1.el7.centos.x86_64.rpm

rpm -ivh rabbitmq-server-3.7.4-1.el7.noarch.rpm


 二、集群镜像部署配置

1.关闭防火墙

查看防火墙状态      firewall-cmd --state

关闭防火墙              firewall-cmd stop firewalld.service

2.Rabbitmq相互通信需要修改主机名,修改并生效

vim /etc/hosts

插入

192.168.86.224 server224

192.168.86.235 server235

修改相应主机名称:执行命令 hostname set-hostname server224

3.设置开机启动:chkconfig

启动两个节点:systemctl start rabbitmq-server.service

在副节点(192.168.86.235)停止应用:rabbitmqctl stop_app

副节点复位:rabbitmqctl reset

4.同步 .erlang_cookie: cat /var/lib/rabbitmq/.erlang.cookie

(查看两台服务器的erlang_cookie是否相同)

5.设置集群,副节点执行命令:

rabbitmqctl join_cluster rabbit@server224

出现 Clustering node rabbit@server235 with rabbit@server224表示成功

6.副节点开始应用

rabbitmqctl start_app

7.两台机器检查集群镜像状态

rabbitmqctl cluster_status

[root@rabbit1 tmp] rabbitmqctl cluster_status
Cluster status of node rabbit@rabbit2
[{nodes,[{disc,[rabbit@rabbit1,rabbit@235,rabbit@224]}]},
 {running_nodes,[rabbit@rabbit1,rabbit@r235,rabbit@224]},
 {cluster_name,<<"rabbit@host9">>},
 {partitions,[]},
 {alarms,[{rabbit@235,[]},{rabbit@224,[]}]}]
三.启动rabbit

1.启动.停止.命令行

systemctl start/stop rabbitmq-server.service  开启/关闭 (开启就行,不用关闭)

rabbitmqctl shutdown 关闭 (不用执行)

2.两机器启动可视化ui界面

rabbitmq-plugins enable rabbitmq_management

浏览器打开访问:192.168.86.224:15762、192.168.86.235:15762

四.用户权限

1.创建vhost

rabbitmqctl add_vhost 管理员

2.创建用户

rabbitmqctl add_user 用户 密码

3.分配权限

设置管理员最大管理权限,可登录ui,默认的guser用户需要自行配置才能登录

设置权限:rabbitmqctl set_permissions -p / 用户名 ".*" ".*" ".*"

修改用户角色: rabbitmqctl set_user_tags 用户名 administrator

keepalived+lvs热备负载均衡

两台机器都需要做配置,只需修改个别配置参数,文档以192.168.86.224和192.168.86.235两台机器上部署rabbitmq为例

1. 两台机器安装所需要得应用

yum install keepalived

yum install ipvsadm #虚拟路由管理软件,几乎不用

2.两台机器设置开机启动

chkconfig keepalived on 或 systemctl enable keepalived.service

查看启动目录

/usr/lib/systemd/system/ | grep keepalived

3.配置虚拟网卡

vim /etc/keepalived/net.sh

#!/bin/bash  
# description: Config realserver lo and apply noarp  
SNS_VIP=192.168.86.14
. /etc/rc.d/init.d/functions
case "$1" in
start)
   ifconfig lo:0 $SNS_VIP netmask 255.255.255.255 broadcast $SNS_VIP
   /sbin/route add -host $SNS_VIP dev lo:0
   echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
   echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
   echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
   echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
   sysctl -p >/dev/null 2>&1
   echo "RealServer Start OK"  
   ;;
stop)
   ifconfig lo:0 down
   route del $SNS_VIP >/dev/null 2>&1
   echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore
   echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce
   echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore
   echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce
   echo "RealServer Stoped"  
   ;;
*)
   echo "Usage: $0 {start|stop}"  
   exit 1
esac

添加可执行权限:chmod a+x /etc/keepalived/net.sh

执行脚本:sh /etc/keepalived/net.sh start

4.配置keepalived启动文件

vim /etc/keepalived/keepalived.conf

192.168.86.224服务器配置

global_defs {
   notification_email {
   }
   router_id LVS_DEVEL #设置lvs的id,在一个网格内应该是唯一的
}

# 虚拟组
vrrp_instance VI_1 {
    state MASTER # 此处为`主`,备机是 `BACKUP`
    interface bond0 #检查网络的接口,ifconfig查询
    virtual_router_id 51 # 虚拟路由id,同一个组内需要相同
    priority 100 # 主机的优先权要比备机高
    advert_int 1 # 心跳检查频率,单位:秒
    authentication { # 认证,组内的要相同
        auth_type PASS
        auth_pass 1111
    }
    # 虚拟ip,多个换行
    virtual_ipaddress {
        192.168.86.14
    }
}

virtual_server 192.168.86.14 5672 { #配置虚拟IP实例
delay_loop 6
lb_algo wrr #负载均衡调度算法
lb_kind DR #负载均衡法则
persistence_timeout 50
protocol TCP

real_server 192.168.86.224 5672 {#后端的realserver,即真正运行rabbitMQd 主机IP 及端口
weight 100
TCP_CHECK { #rabbitMQ端口检测
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
connect_port 5672
}
}

real_server 192.168.86.235 5672 { #第二个rabbitMQ节点
weight 1
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
connect_port 5672
}
}
}
}

192.168.86.235 Backup服务配置修改:

将 state MASTER 改成 state BACKUP

priority 100 改成 priority 80

在 advert_int 1后加上 nopreempt 非抢占模式

5.启动keepalived

systemctl start keepalived

在主节点上查看,VIP是否绑定到主节点上的ethN网卡上: ip a

[root@initiator ~]# ip add
1: lo:  mtu 16436 qdisc noqueue state UNKNOWN 
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
inet 192.168.86.14/32 brd 192.168.86.14 scope global lo:0
inet6 ::1/128 scope host 
   valid_lft forever preferred_lft forever
2: eth1:  mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:50:56:27:b0:80 brd ff:ff:ff:ff:ff:ff
inet 192.168.86.224/24 brd 192.168.1.255 scope global eth1
inet 192.168.86.14/32 scope global eth1:0
inet6 fe80::250:56ff:fe27:b080/64 scope link 
   valid_lft forever preferred_lft forever

可以看到,VIP已经成功绑定到eth1上。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/784919.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号