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服务同步;配置模型如下图:
编辑配置文件:vim /etc/keepalived/keepalived.cof
注:配置virtual_server段注释掉,红色框为第二个节点配置文件要修改内容:
启动服务查看状态:
模拟主节点故障:
1.查看master节点信息
2.backup信息:进入主节点模式
重启主节点服务检查状态:开始健康状态检查,重新进入master模式
定义vrrp_notify通知命令在vrrp_instance
vim /etc/keepalived/keepalived.cof
通知脚本示例,给予执行权限,重启服务;
检查主机邮件信息:邮件接收正常
配置virtual-server;keepalived +lvs高可用基于DR模型
检查ipvs集群状态,以及监听地址信息:
通过本地请求:
模拟场景测试:其中master故障,邮件通知,backup转为主节点,测试访问页面正常;
real server都出现故障时访问服务至sorry_server;
根据需要添加会话保持:persistence_timeout <INT> 持久连接