003 应用Keepalived实现HAPROXY +Nginx高可用

本文介绍Keepalived的基本概念及其在HAProxy高可用架构中的应用,包括环境搭建、配置步骤及测试方法。Keepalived通过VRRP协议实现高可用,监测并自动切换故障服务器,确保web服务稳定运行。

Keepalived简介:

       顾名思义是保持存活,常用来搭建设备的高可用,防止业务核心设备出现单点故障。keepalived基于VRRP协议来实现高可用,主要用作realserver的健康检查以及负载均衡主机和backup主机之间的故障漂移。如果将TCP/IP划分为5层,则Keepalived就是一个类似于3~5层交换机制的软件【3层通讯是给集群中每一个结点发送SMP消息,即ping通讯消息;4层是监测系统中某个端口是否存活,不存活即判定宕机,会从集群中剔除;5层通讯为应用层通讯,监测系统中某个进程是否存在,如果不存在就剔除集群;】,具有3~5层交换功能,其主要作用是检测web服务器的状态,如果某台web服务器故障,Keepalived将检测到并将其从系统中剔除,当该web服务器工作正常后Keepalived自动将其加入到服务器群中,这些工作全部自动完成,而不需要人工干预,只需要人工修复故障的web服务器即可。

HAProxy+Keepalived高可用架构:

环境搭建,两台web-server虚拟机(运行Nginx与springbootDemo),两台HAproxy,分别做master与slave并安装keepalived;

Keepalived 安装配置:

vim /etc/sysconfig/selinux
#SELINUX=enforcing #注释掉
#SELINUXTYPE=targeted #注释掉
SELINUX=disabled #增加

如果防火墙开启,一定要加入下列内容(如果防火墙关闭则忽略):

vim /etc/sysconfig/iptables
-A INPUT -s 192.168.85.120/255 -d 224.0.0.18 -j ACCEPT
-A INPUT -s 192.168.85.120/255 -p vrrp -j ACCEPT

192.168.85.120/255服务器通讯网段(根据自己的IP修改),224.0.0.18VRRP协议组播网段(默认不要修改);

安装:可以通过yum方式也可以通过源代码编译方式安装,但是一定要记住,所有节点都要使用同一种方式安装,否则无法通行和切换(测试过),此处全部选用yum安装;

### yum 安装
yum install keepalived
### 源码编译安装
yum install -y openssl-devel libnl libnl-devel libnfnetlink-devel
wget http://www.keepalived.org/software/keepalived-1.2.13.tar.gz
tar -zvxf keepalived-1.2.13.tar.gz
cd keepalived-1.2.13
./configure --prefix=/usr/local/keepalived
make && make install
cp /root/keepalived-1.2.13/keepalived/etc/init.d/keepalived.init /etc/rc.d/init.d/keepalived
cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
mkdir /etc/keepalived/
cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/
cp /usr/local/keepalived/sbin/keepalived /usr/sbin/
echo "/etc/init.d/keepalived start" >> /etc/rc.local

 

master配置:

! Configuration File for keepalived
global_defs {
notification_email {
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id LVS_DEVEL
}
vrrp_script chk_haproxy {             #每秒钟监测是否存活脚本,如果不存活权重-1,当master权重低于slvae时切换
script "killall -0 haproxy"
interval 1
weight -10
rise 1
fall 2
}
vrrp_instance VI_1 {
state MASTER
interface eth0                             #此处查看自己的网卡,应用那个就改成那个
virtual_router_id 51
priority 100                                #master权重为100,要高于slave
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
track_script {
chk_haproxy
}
virtual_ipaddress {
192.168.85.200
}

#下面为notify脚本配置
notify_master "/etc/keepalived/notify.sh master"
notify_backup "/etc/keepalived/notify.sh backup"
notify_fault "/etc/keepalived/notify.sh fault"
}

slave配置:

## slave
! Configuration File for keepalived
global_defs {
notification_email {
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id LVS_DEVEL
}
vrrp_script chk_haproxy {
script "killall -0 haproxy"
interval 1
weight -5
rise 1
fall 2
}
vrrp_instance VI_1 {
state BACKUP
interface eth1
virtual_router_id 51
priority 99                                  #slave权重为99,要低于master
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
track_script {
chk_haproxy
}
virtual_ipaddress {
192.168.85.200
}
notify_master "/etc/keepalived/notify.sh master"
notify_backup "/etc/keepalived/notify.sh backup"
notify_fault "/etc/keepalived/notify.sh fault"
}

notify脚本:放在keepalived.conf同级目录,master与slave相同

#!/bin/bash
#
contact='XXXXXXXXXX@163.com'                #有状态改变方式通知邮件
notify() {
mailsubject="$(hostname) to be $1, vip floating"
mailbody="$(date +'%F %T'): vrrp transition, $(hostname) changed to be $1"
echo "$mailbody" | mail -s "$mailsubject" $contact
}
case $1 in
master)
notify master
;;
backup)
notify backup
;;
fault)
notify fault
;;
*)
echo "Usage: $(basename $0) {master|backup|fault}"
exit 1
;;
esac

配置完成!

启动haproxy并测试:

HAproxy访问测试通过;

启动两台服务的keepalived并测试同keepalived地址192.168.85.200访问:

master启动后网卡上就会出现192.168.85.200这个绑定地址:

此时slave节点上就没有绑定,当master宕机后就会绑定:

每次访问实现轮询负载,测试通过!

关闭master,测试切换功能:

访问正常!

在重新启动master后:

master会在次绑定。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值