我的上篇文章写rabbitmq搭建集群 ,本文章是是继续上篇文章的,本次是搭建负载均衡和高可用
正文入题
负载均衡 采用 Haproxy 如果是Nginx 请看(https://blog.youkuaiyun.com/qq_20448967/article/details/80956691)我这篇文章关于Nginx搭建 (!!!注意 后来重新用Nginx补上 请看文章最后),都是大同小异
解决高可用 采用是 KeepAlived
准备好两台机器 比如我是 10.0.0.195 10.0.0.194 系统采用是linux centos7
开始搭建
首先配置搭建环境 配置 主机名 和其他机器能通讯
192:命令
vim /ect/hostname
gavin194
保存退出
命令
vim /ect/hosts
10.0.0.191 gavin91
10.0.0.192 gavin192
10.0.0.193 gavin193
10.0.0.193 gavin194
10.0.0.193 gavin195
195:命令
vim /ect/hostname
gavin195
保存退出
命令
vim /ect/hosts
10.0.0.191 gavin91
10.0.0.192 gavin192
10.0.0.193 gavin193
10.0.0.193 gavin194
10.0.0.193 gavin195
保存退出
重启机器 让主机名生效
一 搭建 Haproxy
下载和安装 以下命令 两台机器都是需要同样操作 可以直接复制执行即可
wget http://www.haproxy.org/download/1.6/src/haproxy-1.6.5.tar.gz ##这个官网好被禁了 需要翻墙 点击我百度云盘 https://pan.baidu.com/s/1kxkBnQiTv0fnUHzcA3y5WA
##解压
tar -zxvf haproxy-1.6.5.tar.gz -C /usr/local
## 进入目录
cd /usr/local/haproxy-1.6.5
##编译
make TARGET=linux31 PREFIX=/usr/local/haproxy
##安装
make install PREFIX=/usr/local/haproxy
##创建目录
mkdir /etc/haproxy
## 进入目录
cd /etc/
##授权
groupadd -r -g 149 haproxy
useradd -g haproxy -r -s /sbin/nologin -u 149 haproxy
#然后创建配置文件
touch /etc/haproxy/haproxy.cfg
##配置文件
vim /etc/haproxy/haproxy.cfg
##配置文件全部内容 这个机器的配置是194
#logging options
global
log 127.0.0.1 local0 info
maxconn 5120
chroot /usr/local/haproxy
uid 99
gid 99
daemon
quiet
nbproc 20
pidfile /var/run/haproxy.pid
defaults
log global
#使用4层代理模式,”mode http”为7层代理模式
mode tcp
#如果将模式设置为tcp,则将tcplog更改为httplog
option tcplog
option dontlognull
retries 3
option redispatch
maxconn 2000
contimeout 5s
##客户端空闲超时时间为 60秒 则HA 发起重连机制
clitimeout 60s
##服务器端链接超时时间为 15秒 则HA 发起重连机制
srvtimeout 15s
#前端IP为消费者和生产者
listen rabbitmq_cluster
bind 0.0.0.0:5672
#配置TCP模式
mode tcp
#策略轮询
balance roundrobin
#rabbitmq集群节点配置 #inter 每隔三秒对mq集群做健康检查, 2次正确证明服务器可用,2次失败证明服务器不可用,并且配置主备机制
server gavin191 10.0.0.191:5672 check inter 3000 rise 2 fall 2
server gavin192 10.0.0.192:5672 check inter 3000 rise 2 fall 2
server gavin193 10.0.0.193:5672 check inter 3000 rise 2 fall 2
#配置haproxy web监控,查看统计信息
listen stats
bind 10.0.0.194:8100 ###配置本机的地址
mode http
option httplog
stats enable
#设置haproxy监控地址为http://10.0.0.194:8100/haproxy
stats uri /haproxy
stats refresh 5s
保存退出
接下来是 195 机器的配置
vim /etc/haproxy/haproxy.cfg
##全部内容是
#logging options
global
log 127.0.0.1 local0 info
maxconn 5120
chroot /usr/local/haproxy
uid 99
gid 99
daemon
quiet
nbproc 20
pidfile /var/run/haproxy.pid
defaults
log global
#使用4层代理模式,”mode http”为7层代理模式
mode tcp
#如果将模式设置为tcp,则将tcplog更改为httplog
option tcplog
option dontlognull
retries 3
option redispatch
maxconn 2000
contimeout 5s
##客户端空闲超时时间为 60秒 则HA 发起重连机制
clitimeout 60s
##服务器端链接超时时间为 15秒 则HA 发起重连机制
srvtimeout 15s
#前端IP为消费者和生产者
listen rabbitmq_cluster
bind 0.0.0.0:5672
#配置TCP模式
mode tcp
#简单的轮询
balance roundrobin
#rabbitmq集群节点配置 #inter 每隔三秒对mq集群做健康检查, 2次正确证明服务器可用,2次失败证明服务器不可用,并且配置主备机制
server gavin191 10.0.0.191:5672 check inter 3000 rise 2 fall 2
server gavin192 10.0.0.192:5672 check inter 3000 rise 2 fall 2
server gavin193 10.0.0.193:5672 check inter 3000 rise 2 fall 2
#配置haproxy web监控,查看统计信息
listen stats
bind 10.0.0.195:8100 ###配置本机的地址
mode http
option httplog
stats enable
#设置haproxy监控地址为http://10.0.0.195:8100/haproxy
stats uri /haproxy
stats refresh 5s
保存退出
启动haproxy
命令
/usr/local/haproxy/sbin/haproxy -f /etc/haproxy/haproxy.cfg
访问haproxy 打开浏览器
http://10.0.0.194:8100/haproxy
http://10.0.0.195:8100/haproxy
如果访问不到 那可能是防火墙的问题
命令 systemctl status firewalld 其他版本的系统就百度一下吧 或者开启对应的端口也行
到这已经完成了 负载均衡了 算成功了一半
二 搭建 Keepalived
下载两台机器同操作
命令
wget http://www.keepalived.org/software/keepalived-1.2.18.tar.gz
解压 编译 安装
命令
tar -zxvf keepalived-1.2.18.tar.gz -C /usr/local/
cd keepalived-1.2.18/ && ./configure --prefix=/usr/local/keepalived
make && make install
安装后做一些修改 将keepalived安装成Linux系统服务
首先创建文件夹 将keepalived配置文件进行复制
命令
mkdir /etc/keepalived
cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/
cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
建立软连接,
ln -s /usr/local/sbin/keepalived /usr/sbin/
## 执行下面命令可能会遇到文件已存在错误
ln -s /usr/local/keepalived/sbin/keepalived /sbin/
如果出现 文件已存在错误 删除
进入 这个目录下
rm -f /usr/sbin/keepalived
Keepalived配置 分别在194 和195 各配置
首先配置 194 为主机
命令
vim /etc/keepalived/keepalived.conf
## 这是全部内容
! Configuration File for keepalived
global_defs {
router_id gavin194 ##标识节点的字符串,通常为hostname
}
vrrp_script chk_haproxy {
script "/etc/keepalived/haproxy_check.sh" ##执行脚本位置
interval 2 ##检测时间间隔
weight -20 ##如果条件成立则权重减20
}
vrrp_instance VI_1 {
state MASTER ## 主节点为MASTER,备份节点为BACKUP
interface enp0s3 ## 绑定虚拟IP的网络接口(网卡),与本机IP地址所在的网络接口相同(我这里是enp0s3)
virtual_router_id 90 ## 虚拟路由ID号(主备节点一定要相同)
mcast_src_ip 10.0.0.194 ## 本机ip地址
priority 100 ##优先级配置(0-254的值)
nopreempt
advert_int 1 ## 组播信息发送间隔,俩个节点必须配置一致,默认1s
authentication { ## 认证匹配 和 备份节点一样
auth_type PASS
auth_pass gavin
}
track_script {
chk_haproxy
}
virtual_ipaddress {
10.0.0.94 ## 虚拟ip,可以指定多个
}
}
然后配置 195
vim /etc/keepalived/keepalived.conf
## 这是全部内容
! Configuration File for keepalived
global_defs {
router_id gavin195 ##标识节点的字符串,通常为hostname
}
vrrp_script chk_haproxy {
script "/etc/keepalived/haproxy_check.sh" ##执行脚本位置
interval 2 ##检测时间间隔
weight -20 ##如果条件成立则权重减20
}
vrrp_instance VI_1 {
state BACKUP ## 主节点为MASTER,备份节点为BACKUP
interface enp0s3 ## 绑定虚拟IP的网络接口(网卡),与本机IP地址所在的网络接口相同(我这里是enp0s3)
virtual_router_id 90 ## 虚拟路由ID号(主备节点一定要相同)
mcast_src_ip 10.0.0.195 ## 本机ip地址
priority 90 ##优先级配置(0-254的值)
nopreempt
advert_int 1 ## 组播信息发送间隔,俩个节点必须配置一致,默认1s
authentication { ## 认证匹配
auth_type PASS
auth_pass gavin
}
track_script {
chk_haproxy
}
virtual_ipaddress {
10.0.0.94 ## 虚拟ip,可以指定多个
}
}
然后配置脚本 添加文件位置为/etc/keepalived/haproxy_check.sh 分别为 194和195各一份
命令
vim /etc/keepalived/haproxy_check.sh
###这一下所有的内容 ,意思就是 不停监控 如果发现有 haproxy 有死掉就重启 如果haproxy 起不来 都死掉 就直接关闭 keepalived
#!/bin/bash
COUNT=`ps -C haproxy --no-header |wc -l`
if [ $COUNT -eq 0 ];then
/usr/local/haproxy/sbin/haproxy -f /etc/haproxy/haproxy.cfg
sleep 2
if [ `ps -C haproxy --no-header |wc -l` -eq 0 ];then
killall keepalived
fi
fi
保存退出
然后授权
命令
chmod +x /etc/keepalived/haproxy_check.sh
然后启动 keepalived
命令
service keepalived start
如果启动报错 如下
[root@gavin194 sbin]# service keepalived start
Starting keepalived (via systemctl): Job for keepalived.service failed. See 'systemctl status keepalived.service' and 'journalctl -xn' for details.
[失败]
[root@gavin194 sbin]# systemctl status keepalived.service
keepalived.service - SYSV: Start and stop Keepalived
Loaded: loaded (/etc/rc.d/init.d/keepalived)
Active: failed (Result: exit-code) since 三 2018-12-29 15:02:23 CST; 8s ago
Process: 16720 ExecStart=/etc/rc.d/init.d/keepalived start (code=exited, status=1/FAILURE)
12月 29 15:02:23 edu-proxy-01 systemd[1]: Starting SYSV: Start and stop Keepalived...
12月 29 15:02:23 edu-proxy-01 keepalived[16720]: Starting keepalived: Usage: /sbin/keepalived {start|stop|reload|restart|condrestart|status}
12月 29 15:02:23 edu-proxy-01 keepalived[16720]: [失败]
12月 29 15:02:23 edu-proxy-01 systemd[1]: keepalived.service: control process exited, code=exited status=1
12月 29 15:02:23 edu-proxy-01 systemd[1]: Failed to start SYSV: Start and stop Keepalived.
12月 29 15:02:23 edu-proxy-01 systemd[1]: Unit keepalived.service entered failed state.
这是时候之前没有拷贝那份的 keepalived-s 就用了 解决
命令
rm -f /usr/sbin/keepalived
cp /usr/local/keepalived/sbin/keepalived /usr/sbin/
然后再启动
service keepalived start
停止
service keepalived stop
查看
service keepalived status
重启
service keepalived restart
这时也可以用 ip a 查看
在194 查看 这时候 可以看到虚拟ip 如果停止了 194 的话 在195 命令 ip a 也可以查看虚拟 ip : 10.0.0.94
然后客户端连接rabbitmq 的ip 是 从虚拟ip
如 10.0.0.94:5672
以上就是rabbitmq集群 加 负载均衡 和 Haproxy的高可用 如果想用Nginx做反向代理 请看这遍文章 《补充rabbitmq镜像队列集群在Nginx的负载均衡的配置》