参考文档
CentOS7haproxy+keepalived实现高可用集群搭建
目标
两节点镜像,使用HAproxy进行服务负载均衡和高可用,Keepalived实现VIP高可用
部署步骤
环境
admin-node:192.168.56.110
node1:192.168.56.111
虚拟IP:192.168.56.110
RabbitMQ
1、两节点安装RabbiMQ服务
yum install rabbitmq-server
2、启动服务
systemctl start rabbitmq-server.service
或
rabbitmq-server –detached
-detached代表后台守护进程方式启动
3、启动后,查看rabbitmq状态
rabbitmqctl status
4、配置网页插件
rabbitmq-plugins enablerabbitmq_management
5、在浏览器输入IP:15672就可以访问web管理界面
6、配置web界面的用hu
rabbitmqctl add_user sxr sxr #添加用户,后面两个参数分别是用户名和密码
rabbitmqctl set_permissions sxr".*"".*"".*"#添加权限
rabbitmqctl set_user_tags sxr administrator #修改用户角色
7、修改 /etc/hosts,添加
192.168.56.110 admin-node
192.168.56.111 node1
8、设置Erlang Cookie
RB的集群是依附于Erlang的集群来工作的,所以必须先构建起Erlang的集群景象,各个节点的这个文件必须要保持一致。
Erlang Cookie 文件:/var/lib/rabbitmq/.erlang.cookie。这里将 admin-node的该文件复制到 node1
scp root@admin-node \
/var/lib/rabbitmq/.erlang.cookie /var/lib/rabbitmq/.erlang.cookie
9、组成集群。在node1上先停止RabbitMQ应用,加入集群,然后在启动
rabbitmqctl stop_app
rabbitmqctl join_clusterrabbit@admin-node
rabbitmqctl start_app
为了提高性能,不需要两个节点都是disc的节点,所以我们可以启动一个节点为RAM模式。
rabbitmqctl change_cluster_node_type ram
10、查看集群状态
rabbitmqctl cluster_status
HAproxy
1、两节点安装haproxy
yum install haproxy –y
2、两节点修改配置文件
vi /etc/haproxy/haproxy.cfg 之后添加:
listen rabbitmq_local_cluster0.0.0.0:56722
mode tcp
option tcplog
balance roundrobin
server admin-node 192.168.56.110:56722check inter 5000 rise 2 fall 2
server node1 192.168.56.111:56722 checkinter 5000 rise 2 fall 2
listen admin_stats
stats enable
bind *:9090
mode http
option httplog
log global
maxconn 10
stats refresh 30s
stats uri /admin
stats realm haproxy
stats auth sxr:sxr
stats hide-version
Keepalived
1、两节点安装keepalived服务
yum install keepalived –y
2、主节点(admin-node)修改配置文件
global_defs {
router_id admin-node
}
vrrp_script chk_haproxy
{
script"/etc/keepalived/scripts/haproxy_check.sh"
interval 2
timeout 2
fall 3
}
vrrp_instance haproxy {
state MASTER
interface eth0
virtual_router_id 29
priority 150
authentication
{
auth_type PASS
auth_pass 29
}
virtual_ipaddress
{
192.168.56.150
}
track_script
{
chk_haproxy
}
notify_master"/etc/keepalived/script/haproxy_master.sh"
}
3、修改备用节点(node1)。和主节点很像,只是state和priority不同
global_defs {
router_id node1
}
vrrp_script chk_haproxy
{
script"/etc/keepalived/scripts/haproxy_check.sh"
interval 2
timeout 2
fall 3
}
vrrp_instance haproxy {
state BACKUP
interface eth0
virtual_router_id 29
priority 100
authentication
{
auth_type PASS
auth_pass 29
}
virtual_ipaddress
{
192.168.56.150
}
track_script
{
chk_haproxy
}
notify_master"/etc/keepalived/script/haproxy_master.sh"
}
4、两个测试脚本的内容
【haproxy_check.sh文件内容】
#!/bin/bash
LOGFILE="/var/log/keepalived-haproxy-state.log"
date >> $LOGFILE
if [ `ps -C haproxy --no-header |wc -l`-eq 0 ];then
echo "fail: check_haproxystatus" >> $LOGFILE
exit 1
else
echo "success: check_haproxystatus" >> $LOGFILE
exit 0
fi
【haproxy_master.sh文件内容】
#!/bin/bash
LOGFILE="/var/log/keepalived-haproxy-state.log"
echo"Being Master ..." >> $LOGFILE
5、启动keepalived
systemdctl startkeepalived.service
测试
1)关闭主keepalived,VIP是否切换至备机,VIP访问RabbitMQweb界面(验证keepalived高可用)
2)关闭主HAproxy,VIP是否切换至备机,业务是否正常,恢复原状;(验证HAproxy高可用)
3)关闭后台服务器admin-node,VIP访问RabbitMQ web界面。(验证HAproxy状态检查)