lvs模型属于单点故障,对real server的健康状态检查可以通过写脚本实现,keepalived可以实现高可用:

keepalive:vrrp协议在Linux主机上以守护进程方式的实现; 能够根据配置文件生成ipvs规则,并对各RS的健康做检测;vrrp_script, vrrp_track;

keepalive组件:

核心组件:(checkers vrrp stack ipvs wrapperwatch dog)、IO复用器、内存管理、配置文件分析器

keepalive配置前提:

1.各节点时间要同步;ntp server 、chrony server

2.确保iptables及selinux不会成为障碍;心跳信息传递方式:单播,广播-会广播整段网络,组播

3.(可选)各节点之间可通过主机名互相通信;

节点的名称设定与hosts文件中解析的主机名都要严格保持一致;

4.(可选)各节点之间基于密钥认证的方式通过ssh互信通信;

配置文件:主配置文件:/etc/keepalived/keepalived.conf

Unit file: /usr/lib/systemd/system/keepalived.service

配置文件:/etc/sysconfig/keepalived

配置文件一共分为3段:GLOBAL CONFIGURATION、  VRRPD CONFIGURATION、LVS CONFIGURATION

global_defs {

notification_email {

...

}:收件人邮箱地址 

notification_email_from:发件人邮箱地址

smtp_server:邮件发送服务器IP;

smtp_connect_timeout:邮件服务器建立连接的超时时长;

router_id LVS_DEVEL:物理节点的标识符;建议使用主机名,字符串;

vrrp_mcast_group4:IPV4多播地址,默认224.0.0.18;

vrrp_instance NAME

常用配置:

state MASTER|BACKUP:在当前VRRP实例中此节点的初始状态;

interface   IFACE_NAME:vrrp用于绑定vip的接口;

virtual_router_id  #:当前VRRP实例的VRID,可用范围为0-255,默认为51;

priority #:当前节点在虚拟路由的优先级,可用范围0-255;

advert_int 1:通告时间间隔;

authentication {     # Authentication block

        # PASS||AH

# PASS - Simple Passwd (suggested)

# AH - IPSEC (not recommended))

auth_type PASS

# Password for accessing vrrpd.

# should be the same for all machines.

# Only the first eight (8) characters are used.

auth_pass 1234

}

virtual_ipaddress {  定义虚拟IP

            <IPADDR>/<MASK> brd <IPADDR> dev <STRING> scope <SCOPE> label <LABEL>

192.168.200.17/24 dev eth1

192.168.200.18/24 dev eth2 label eth2:1

                或者单独给IP

}

track_interface:定义要监听的接口

nopreempt:非抢占模式

# notify scripts, alert as above通告脚本

        notify_master <STRING>|<QUOTED-STRING> [username [groupname]]

        notify_backup <STRING>|<QUOTED-STRING> [username [groupname]]

        notify_fault <STRING>|<QUOTED-STRING> [username [groupname]]

        notify_stop <STRING>|<QUOTED-STRING> [username  [groupname]] 


keepalive主备简单配置实现节点高可用:

配置环境:centos7主机两台,安装软件方式:yum -y install keepalived,ntp服务同步;配置模型如下图:

keepalive基础知识及主备模型搭建_模型搭建

编辑配置文件:vim /etc/keepalived/keepalived.cof

注:配置virtual_server段注释掉,红色框为第二个节点配置文件要修改内容:

keepalive基础知识及主备模型搭建_主备_02

启动服务查看状态:

模拟主节点故障:

1.查看master节点信息

keepalive基础知识及主备模型搭建_基础知识_03

2.backup信息:进入主节点模式

keepalive基础知识及主备模型搭建_模型搭建_04

重启主节点服务检查状态:开始健康状态检查,重新进入master模式

keepalive基础知识及主备模型搭建_基础知识_05

定义vrrp_notify通知命令在vrrp_instance

vim /etc/keepalived/keepalived.cof

keepalive基础知识及主备模型搭建_基础知识_06

通知脚本示例,给予执行权限,重启服务;

keepalive基础知识及主备模型搭建_模型搭建_07

检查主机邮件信息:邮件接收正常

keepalive基础知识及主备模型搭建_keepalive_08

配置virtual-server;keepalived +lvs高可用基于DR模型

keepalive基础知识及主备模型搭建_keepalive_09 

检查ipvs集群状态,以及监听地址信息:

keepalive基础知识及主备模型搭建_主备_10

keepalive基础知识及主备模型搭建_模型搭建_11

通过本地请求:

keepalive基础知识及主备模型搭建_模型搭建_12

keepalive基础知识及主备模型搭建_基础知识_13

模拟场景测试:其中master故障,邮件通知,backup转为主节点,测试访问页面正常;

                        real server都出现故障时访问服务至sorry_server;

根据需要添加会话保持:persistence_timeout  <INT> 持久连接

keepalive基础知识及主备模型搭建_主备_14