Keepalived高可用集群

keepalived高可用集群

1 概述

代理服务器和调度器都是单点模式,keepalived就是用来实现调度器的高可用集群,防止出现单点故障问题。

1.1 keepalived的工作原理

keepalived是专门为了LVS集群开发出来的,是基于vrrp协议(虚拟路由的冗余协议)实现的调度器的高可用方案,但是适用场景不仅仅局限于LVS。而且keepalived为后台的真实服务器做了一个健康检查,当服务不可用时,会自动的移除ipvs的转发策略,服务恢复时,会自动重新把策略加入到ipvs。

1.1.1 健康检查

健康检查,别名探针

1)发送心跳消息 ping/pang

2)TCP端口检查 向一个主机的IP:PORT 发起TCP连接

3) HTTP URL 检查 向一个主机的 http://IP:PORT/URL路径 发送HTTP GET请求方法,主机响应返回2XX、3XX状态码则认为健康检查正常,如响应返回4XX、5XX状态码则认为健康检查异常

检查服务器作用
节点服务器如果发现有故障的节点就会将其隔离或者剔除集群,待其恢复后再重新加入到集群当中
负载均衡器会定时检查主服务器的状态(包括主机和服务的状态),如果主服务器故障就自动切换到备服务器上,待主服务器恢复后再重新让主服务器去承载业务请求
1.1.2 keepalive功能
  1. 按优先级进行主备切换,当主故障时,可以自动切换到备,主恢复之后,如果主的优先级比备高,还是会自动的切换到主。
  2. 故障检测和恢复功能。
  3. 主备之间通过组播地址:224.0.0.18,互相发送健康检查的报文,确定主和备之间的通信(确定双方是否工作正常)。
  4. 通过配置vip来实现集群的入口,vrrp是一个冗余协议,主在工作时,备完全不参与集群的工作,只是监听主的状态。
1.1.3 Keepalived体系主要模块及其作用
Keepalived的主要模块作用
core模块为Keepalived的核心,负责主进程的启动、维护及全局配置文件的加载和解析
vrrp模块是来实现VRRP协议的
check模块负责健康检查,常见的方式有端口检查及URL检查

1.2 脑裂

在HA系统,只要是通过vip这个机制实现的,都有可能会出现这个问题。

1.2.1 脑裂的定义

vip地址同时出现在了主和备上。

注:vip地址永远只能出现一台服务器上!

1.2.2 脑裂的原因

1、防火墙屏蔽了主备的之间224.0.0.18的报文,导致互相收不到信息,就认为对方已经挂起,所以都认为自己是主。

2、网卡出现故障(硬件故障),配置出问题:ip地址冲突。

3、心跳线:网线之间连接故障,断开,老化。

4、keepalived的配置文件有问题,配置的相关项出现问题(80%)

1.2.3 脑裂的解决方法
  • 软件层面:

    1. 抓包进行定位,查看组播的报文是否正常。
    2. 配置文件进行排查(网卡配置,应用配置)。
  • 硬件层面:

    1. 更换心跳线(网线)进行测试。
    2. 网卡硬件的问题。
    3. 内存和cpu,磁盘空间不足,也会出现脑裂。

2 LVS高可用

2.1 架构

名称IP地址
LVS-Master192.168.207.100
LVS-Backup192.168.207.110
Web-A192.168.207.200
Web-B192.168.207.210
VIP192.168.207.250
Client192.168.207.10

2.2 步骤

2.2.1 主备统一操作
apt -y install ipvsadm keepalived
cp /usr/share/doc/keepalived/samples/keepalived.conf.sample /etc/keepalived/keepalived.conf
vim /etc/keepalived/keepalived.conf
systemctl restart keepalived.service

主配置如下:

在这里插入图片描述

备配置如下:

在这里插入图片描述

主备再统一操作

vim /etc/sysctl.conf
sysctl -p
route add -host 192.168.207.250 dev ens33

在这里插入图片描述

2.2.2 检查配置的转发策略是否生效

主备服务器统一检查

ipvsadm -ln

在这里插入图片描述

在这里插入图片描述

2.2.3 检查主的vip地址是否生成

主备服务器统一检查

ip a

在这里插入图片描述

在这里插入图片描述

2.2.4 模拟主服务器故障切换

看主的vip能否飘到备服务器

在这里插入图片描述

在这里插入图片描述

2.2.5 恢复主服务器

看vip是否能够会到主服务器

在这里插入图片描述

在这里插入图片描述

3 nginx高可用

3.1 架构

名称IP地址
Nginx-Master192.168.207.200
Nginx-Backup192.168.207.210
VIP192.168.207.150
后端服务器1192.168.207.100
后端服务器2192.168.207.110
后端服务器3192.168.207.120

3.2 编写nginx检查脚本

vim /opt/check_nginx.sh
#!/bin/bash                                   
/usr/bin/curl -I http://localhost &> /dev/null
if [ $? -ne 0 ]
then
    systemctl stop keepalived
fi

3.3 主代理服务器keepalived配置

vim /etc/keepalived/keepalived.conf
global_defs {
   router_id LVS_01
}

vrrp_script check_nginx {
    script "/opt/check_nginx.sh"
    #脚本必须能执行,位置一定要写绝对路径
    interval 3
    #每隔5秒钟通过脚本检查nginx的状态
}

vrrp_instance VI_1 {
    state MASTER
    interface ens33
    virtual_router_id 50
    priority 100
    advert_int 1
    virtual_ipaddress {
        192.168.207.150
    }
    track_script {
        check_nginx
    }
}

3.4 备代理服务器keepalived配置

vim /etc/keepalived/keepalived.conf
global_defs {
   router_id Nginx_02
}

vrrp_instance VI_1 {
    state BACKUP
    interface ens33
    virtual_router_id 50
    priority 80
    advert_int 1
    virtual_ipaddress {
        192.168.207.150
    }
}

3.5 主备代理服务器nginx七层反向代理配置

vim /usr/local/nginx/conf/nginx.conf
upstream kc {              
    server 192.168.207.100;
    server 192.168.207.110;
    server 192.168.207.120;
}
server {
    listen       80;
    proxy_pass   http://kc;
}     

3.6 实验效果

3.6.1 正常情况

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

3.6.2 关闭nginx服务(主故障)

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

3.6.3 重启keepalived服务(主恢复)

在这里插入图片描述

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值