keepalived介绍、安装及配置详解

keepalived简介

keepalived起初是为LVS设计的专门用来监控集群系统中各个服务节点的状态如果某个服务节点出现异常或者工作出现故障,keepalived将检测到,并将出现故障的服务节点从集群系统中剔除,而在故障节点恢复正常后,keepalived又可以自动将该服务节点重新加入集群中,这些工作全部自动完成。这部分功能类似于nginx 等反向代理的应用探活功能实现后端服务高可用。
后来又加入了VRRP的功能,VRRP(Virtual Router Redundancy Protocol),虚拟路由协议出现的目的是为了解决静态路由出现的单点故障问题,通过VRRP可以实现网络不间断稳定运行,因此keepalived一方面具有服务器状态检测和故障隔离功能,另一方面也有HA cluster功能;这个功能实现各种中间件高可用。

keeplived和LVS关系

LVS 是 Linux Virtual Server 的缩写,也就是 Linux 虚拟服务器,在 linux2.4 内核以后,已经完全内置了 LVS 的各个功能模块。它是工作在四层的负载均衡,类似于 Haproxy, 主要用于实现对服务器集群的负载均衡。

他俩都需要虚拟IP,思考一下,这俩东西到底是啊啥关系?
根据上述描述,一开始keepalive是LVS用来探活上游应用使用。后来引入了VRRP 可以实现静态路由(LVS)的高可用。
由此我们可以得出如下结论:
LVS通过ipvsadm配置虚拟服务器,来实现反向代理和负载均衡功能。
Keepalived 用来帮LVS实现服务探活功能。同时实现LVS实例的冗余备份功能。
二者使用相同的虚拟IP,且keepalived已经内置了 ipvsadm 的管理功能可以根据keepalived 配置文件自动完成lvs配置。

所以Keepalived 一方面具有配置管理 LVS 的功能,同时还具有对 LVS 下面节点进行健康检查的功能,另一方面也可实现系统网络服务的高可用功能。

keeplived 实现高可用示意图
在这里插入图片描述

VRRP工作原理

在现实的网络环境中,主机之间的通信都是通过配置静态路由(默认网关)完成的,而主机之间的路由器一旦出现故障,通信就会失败,因此,在这种通信模式中,路由器就成为了一个单点故障,为了解决这个问题就引入了VRRP协议;

VRRP协议是一种主备模式的协议,通过VRRP可以在网络发生故障时透明的进行设备切换而不影响主机之间的数据通信,这其中涉及了两个概念:物理路由器和虚拟路由器

VRRP可以讲两台或多台物理路由器虚拟成一个虚拟路由器,这个虚拟路由器通过虚拟IP对外提供服务,而在虚拟路由器内部是多个物理路由器协同工作,同一时间只有一台物理路由器对外提供服务,这台物理路由器被称为主路由器(处于MASTER角色)

一般情况下MASTER由选举算法产生,他拥有对外服务的虚拟IP,通过各种网络功能。而其他无路路由器不用有虚拟IP,也不提供网络服务,仅仅接收MASTER的VRRP状态通告信息,这些路由器统称为备份路由器(处于BACKUP角色)。当主路由器失效时,处于BACKUP角色的备份路由器将重新进行选举,产生一个新的路由器进入MASTER角色继续提供对外服务,整个过程对用户来说是完全透明的。

每个虚拟路由器都有一个唯一的标识,称为VRID,一个VRID与一组IP地址构成了一个虚拟路由器。在VRRP协议中,所有的报文都是通过IP多播形式发送的,而在一个虚拟路由器中,只有MASTER角色的路由器会一直发送VRRP数据包,BACKUP角色的路由器只接收MASTER发送过来的报文信息,用来监控MASTER运行状态,因此不会发生BACKUP抢占的现象,除非他的优先级更高。而当MASTER不可用时,BACKUP也就无法收到MASTER发送过来的报文信息,于是就认为MASTER出现故障,接着多台BACKUP就会进行选举,优先级最高的BACKUP将会成为新的MASTER;

keepalived体系结构及工作原理

keepalived工作在TCP/IP参考模型的网络层、传输层和应用层,能实现对集群服务器运行状态的监控及故障隔离,其原理:

  1. 在网络层,运行者4个重要的协议:IP协议,ICMP协议,ARP协议和RARP协议。keepalived在网络层采用的最常见的工作方式是通过ICMP协议向集群中的每个节点发送一个ICMP的数据包(类似于Ping),如果某个节点没有返回响应的数据包,那么就认为此节点发生了故障,keepalived将报告此节点失效,并从集群中剔除;
  2. 在传输层,提供了两个主要的协议:传输控制协议TCP和用户数据协议UDP。TCP可以提供可靠的数据传输服务,IP地址和端口,代表TCP的一个连接端。要获得TCP服务,需要在发送机的一个端口上和接收机的一个端口上建立连接。而keepalived在传输层就是利用TCP协议的端口连接和扫描技术来判断集群节点是否正常的;
  3. 在应用层,可以运行FTP,SMTP,DNS等各种不同类型的高层协议,keeoalived的运行方式也更加全面化和复杂化,用户可以通过自定义keeoalived的工作方式。例如,用户可以通过编写程序来运行keepalived,而keepalived将根据用户的设定检测各种程序或服务是否允许正常,如果keepalived的检测结果与它的设定不一致时,keepalived将把对应的服务从服务器中移除;

keepalived的体系结构
keepalived的体系结构整体上分为两层,即用户空间层和内核空间层
在这里插入图片描述
内核空间层包括IPVS和NETLINK两个模块:
IPVS模块是keepalived引入的一个第三方模块,通过IPVS可以实现基于IP的负载均衡集群,而IPVS默认包含在LVS集群软件中,keepalived最初就是为LVS提供服务的,由于keepalived可以实现对集群节点的状态检测,而IPVS可以实现负载均衡功能,因此,keepalived借助于第三方模块IPVS就可以很方便的搭建一套负载均衡集群,但是这不是说keepalived就是一个负载均衡软件。
NETLINK模块主要用于实现一些高级路由框架和一些相关的网络功能,完成用户空间层Netlink Reflector模块发来的各种网络请求。

在用户空间层,keepalived又分为四个部分:
**Scheduler I/O Multiplexer:**一个I/O复用分发调度器,他负责安排keepalived所有内部的任务请求;
**Memory Management:**一个内存管理机制,这个框架提供了访问内存的一些通用方法;
Control Plane keepalived的控制面板,可以实现对配置进行编译和解析(keepalived的配置文件不是一次解析所有模块的配置,而是只有在用到某模块时才解析相应的配置)
Core components: keepalived的核心组件,包含了一系列功能模块,主要有WatchDog,Checkers,VRRP stack,IPVS wrapper和Netlink Reflector;

部分核心模块实现功能介绍:
WatchDog: 针对被监视的目标设置一个计数器和阀值,WatchDog会自己增加此计数值,然后等待被监视的目标周期性的重置该计数器。一旦被监控目标发生错误,就无法重置此计数器,WatchDog就会检测到,于是采取对应的恢复措施,例如重启或关闭;keepalived正是通过WatchDog的运行机制来监控Checkers和VRRP进程的;
Checkers: keepalived的最基础的功能,也是最主要的功能,可实现对服务器运行状态检测和故障隔离;
VRRPStack: 可以实现HA集群中失效切换(Failover)功能,keepalived通过VRRP功能再结合LVS负载均衡软件即可部署一个高性能的负载均衡集群
IPVS wrapper: 这是IPVS功能的一个实现。IPVS wrapper模块可以将设置好的IPVS规则发送到内核空间并提交给IPVS模块,最终实现IPVS模块的负载均衡功能;
Netlink Reflector: 用来实现高可用集群中Failover时虚拟IP的设置和切换,它的所有请求最后都发送到内核空间的NETLINK模块来完成;

MASTER和BACKUP角色选举策略
**不使用vrrp_script时:**在keepalived集群中,其实并没有严格意义上的主备节点,虽然可以在配置文件中设置MASTER状态,但是这并不意味着此节点一直就是MASTER状态。控制节点角色的是配置文件中的priority值,但它并不控制所有节点的角色,另一个能改变角色的是在vrrp_script模块中设置的weight值,一个节点在集群中的角色就是通过这两个值的大小决定的;在vrrp_script模块中,如果不设置weight的值,那么集群优先级的选择将由配置文件中的priority值决定。
使用vrrp_script模块
weight值为正数时在vrrp_script中指定的脚本如果检测成功,那么MASTER节点的权值将是weight值与priority值之和;如果检测失败,那么MASTER节点的权值保持为priority值,因此,切换策略为:
MASTER节点vrrp_script脚本检测失败时,如果MASTER节点priority值小于BACKUP节点weight值与priority值之和,将发生主备切换;
MASTER节点vrrp_script脚本检测成功时,如果MASTER节点weight值与priority之和大于BACKUP节点weight值与priority值之和,主节点依然为主节点,不发生切换;
weight值为负数时
在vrrp_script中指定的脚本如果检测成功,那么MASTER节点的权值仍是priority值;如果检测失败,那么MASTER节点的权值将是priority值与weight值之差,因此,切换策略为:
MASTER节点vrrp_script脚本检测失败时,如果MASTER节点priority值与weight值之差小于BACKUP节点的priority值,将发生主备切换;
MASTER节点vrrp_script脚本检测成功时,如果MASTER节点priority值大于BACKUP节点priority值时,主节点依然为主节点,不发生切换;

keepalived安装

1、下载keepalived 安装包 下载地址

http://www.keepalived.org/software/

2、复制到linux keepalived文件夹下,如下

[root@zk03 apps]# cd keepalived/
[root@zk03 keepalived]# ll
总用量 908
-rw-r--r--. 1 root root 927631 222 2019 keepalived-2.0.10.tar.gz

3、解压文件

[root@zk03 keepalived]# tar -zvxf keepalived-2.0.10.tar.gz 
[root@zk03 keepalived]# ll
总用量 912
drwxrwxr-x. 8 1000 1000   4096 1113 03:40 keepalived-2.0.10
-rw-r--r--. 1 root root 927631 222 2019 keepalived-2.0.10.tar.gz

4、执行 configure 准备编译文件

[root@zk03 keepalived-2.0.10]# ./configure --prefix=/usr/apps/keepalived --sysconf=/etc

提示缺少 OpenSSL

  configure: error: 
      !!! OpenSSL is not properly installed on your system. !!!
      !!! Can not include OpenSSL headers files.            !!!

执行 yum install openssl-devel 安装 OpenSSL

   [root@zk03 keepalived-2.0.10]# yum install openssl-devel

安装完成重新执行 configure

[root@zk03 keepalived-2.0.10]# ./configure --prefix=/usr/apps/keepalived --sysconf=/etc

5、执行 make&& make install 命令进行编译安装,安装完成可以看到/usr/apps/keepalived 多了三个目录 sbin bin share如下

[root@zk03 keepalived]# ll /usr/apps/keepalived
总用量 912
drwxr-xr-x. 2 root root     21 125 22:39 bin
drwxrwxr-x. 9 1000 1000   4096 125 22:38 keepalived-2.0.10
-rw-r--r--. 1 root root 927631 222 2019 keepalived-2.0.10.tar.gz
drwxr-xr-x. 2 root root     24 125 22:39 sbin
drwxr-xr-x. 5 root root     40 125 22:39 share

然后创建系统服务。
6、cd 到/usr/apps/keepalived 然后执行ln命令创建软连接

   ln -s sbin/keepalived  /sbin

7、复制需要的文件到 /etc

[root@zk03 keepalived]# cp /usr/apps/keepalived/keepalived-2.0.10/keepalived/etc/init.d/keepalived /etc/init.d

8 、增加系统服务

[root@zk03 keepalived]# chkconfig --add keepalived

9、chkconfig keepalived on

[root@zk03 keepalived]# chkconfig keepalived on
注意:正在将请求转发到“systemctl enable keepalived.service”。
Created symlink from /etc/systemd/system/multi-user.target.wants/keepalived.service to /usr/lib/systemd/system/keepalived.service.

10、启动 服务service keepalived start
查看服务状态 service keepalived status 服务正在运行 证明安装成功

[root@zk03 keepalived]# service keepalived start
Starting keepalived (via systemctl):  [  确定  ]
[root@zk03 keepalived]# service keepalived status
● keepalived.service - LVS and VRRP High Availability Monitor
   Loaded: loaded (/usr/lib/systemd/system/keepalived.service; enabled; vendor preset: disabled)
   Active: active (running) since 五 2019-01-25 22:59:28 CST; 11s ago
  Process: 85066 ExecStart=/usr/apps/keepalived/sbin/keepalived $KEEPALIVED_OPTIONS (code=exited, status=0/SUCCESS)
 Main PID: 85067 (keepalived)
   CGroup: /system.slice/keepalived.service
           ├─85067 /usr/apps/keepalived/sbin/keepalived -D
           ├─85068 /usr/apps/keepalived/sbin/keepalived -D
           └─91225 /usr/apps/keepalived/sbin/keepalived -D

125 22:59:30 zk03 Keepalived[85067]: VRRP child process(86328) died: Respawning

keepalived配置详解

配置文件可以分为三块:
**全局定义块:**对整个 Keepalive 配置生效的,不管是否使用 LVS;

global_defs {
     notification_email {
     acassen@firewall.loc
     failover@firewall.loc
     sysadmin@firewall.loc
   }
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 192.168.200.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL
}

notification_email:设置报警邮件地址即报警邮件接收者,可设置多个,每行一个;如果要开启邮件报警功能,需要开启本机的postfix或者sendmail服务;
notification_email_from:用于设置邮件的发送地址,即报警邮件发送者;
smtp_server:用于设置邮件的SMTP Server地址;
smtp_connect_timeout:设置连接SMTP Server的超时时间;
router_id:表示运行keepalived服务器的一个标识,是发邮件时显示在邮件主题中的信息;

**VRRP实际定义块:**是keepalived的核心;
1、 vrrp_sync_group VRRP同步组
同步组是相对于多个VRRP实例而言的,在多个VRRP实例的环境中,每个VRRP实例所对应的网络环境会有所不同,假设一个实例处于网段A,另一个实例处于网段B,而如果VRRP只配置了A网段的检测,那么当B网段主机出现故障时,VRRP会认为自己仍处于正常状态,不会进行主备节点切换,这样问题就出现了。而同步组会将所有VRRP实例都加入同步组中,这样任何一个实例出现问题,都会导致keepalived进行主备切换;
以实例组group至少包含一个vrrp实例。
如:两个同步组的配置样例

vrrp_sync_group G1 {
group {
    VI_1
    VI_2
    VI_5
   }
    notify_backup "/usr/local/bin/vrrp.bak arg1 arg2"
    notify_master "/usr/local/bin/vrrp.mast arg1 arg2"
    notify_fault "/usr/local/bin/vrrp.fault arg1 arg2"
    notify_stop "/usr/local/bin/vrrp.stop arg1 arg2"
  }
vrrp_sync_group G2 {
    group {
    VI_3
    VI_4
     }
  }

其中:
G1同步组包含VI_1,VI_2,VI_5三个VRRP实例,G2同步组包含VI_3,VI_4两个实例,这5个实例将在vrrp_instance段进行定义
keepalived配置中的一个通知机制,也是keepalived包含的四种状态:
notify_master:指定当keepalived进入MASTER状态时要执行的脚本,这个脚本可以是一个状态报警脚本,也可以是一个服务管理脚本,允许传入参数;
notify_backup:指定当keepalived进入BACKUP状态时要执行的脚本;
notify_fault:指定当keepalived进入FAULT状态时要执行的脚本;
notify_stop:指定当keepalived程序终止时需要执行的脚本;

2、Vrrp实例vrrp_instance。VRRP实例配置即keepalived的高可用功能
VRRP实例段主要用来配置节点角色(主从),实例绑定端口,节点间验证机制,集群服务IP等,如:

vrrp_instance VI_1 { 
    state MASTER
    interface eth0
    virtual_router_id 51
    priority 100
    advert_int 1
	mcast_src_ip 
	garp_master_delay 10
	track_interface {
	eth0
	eth1
	}
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.200.16
        192.168.200.17 dev eth1
        192.168.200.18 dev eth2
    }
	virtual_routers {
		src 192.168.100.1 to 192.168.109.0/24 via 192.168.200.254 dev eth1
		192.168.110.0/24 via 192.168.200.254 dev eth1
		192.168.111.0/24 dev eth2
		192.168.112.0/24 via 192.168.100.254
		192.168.113.0/24 via 192.168.100.252 or 192.168.100.253
	}
	nopreempt
	preemtp_delay 300
}

vrrp_instance:是VRRP实例的标识,后跟VRRP实例名称;
state:用于指定keepalived的角色,MASTER表示主服务器,BACKUP表示备用服务器;
interface:用于指定HA监测网络的接口;
virtual_router_id:虚拟路由标识,是一个数字,同一个VRRP实例使用唯一的标识,即在同一个vrrp_instance下,MASTER和BACKUP必须是一致的;
priority:节点优先级,数字越大优先级越高(在一个VRRP_instance下,MASTER的优先级必须大于BACKUP的优先级);
advert_int:用于设定MASTER与BACKUP主机之间同步检查的时间间隔,单位秒;
mcast_src_ip:用于设置发送多播包的地址,若不设置,将使用绑定网卡对应的IP地址;
garp_master_delay:用于设置在切换到MASTER状态后延时进行Gratuitous arp请求的时间;
track_interface:用于设置一些额外的网络监控接口,其中任何一个接口出现故障,keepalived都会进入FAULT状态;
authentication:用于设定节点间通信验证码类型和密码 ,主要类型有PASS和AH两种,在一个vrrp_instance下,MASTER和BACKUP必须使用相同的密码才能正常通信;
virtual_ipaddress:用于设置虚拟IP地址(VIP),可设置多个,每行一个;keepalived通过ip address add命令的形式将VIP添加进系统中,而且IP形式可多样;
virtual_routers:和virtual_ipaddress段一样,用来设置在切换时添加或删除相关路由信息;
nopreempt:设置高可用集群不抢占功能;在使用不抢占时,只能在state状态为BACKUP的节点上设置,而且这个节点的优先级必须高于其他节点
preemtp_delay:用于设置抢占的延时时间,单位秒,如系统启动或重启之后网络需要经过一段时间才能正常工作,这时进行主备切换是没有必要的,此选项就是来设置这种情况发生的时间间隔;
vs_sync_daemon_inteface。负载均衡器之间的监控接口,类似于HA HeartBeat的心跳线。但它的机制优于Heartbeat,因为它没有“裂脑”这个问题,它是以优先级这个机制来规避这个麻烦的。在DR模式中,lvs_sync_daemon_inteface 与服务接口interface 使用同一个网络接口。

3、keepalived的LVS配置
LVS配置段以virtual_server为开始标识,此段分为两部分:real_server段和健康检测段
real_server段

virtual_server 192.168.12.200 80 {
	delay_loop 6 
	lb_algo rr
	lb_kind DR
	persistence_timeout 50 
	persistence_granularity 
	protocol TCP
	ha_suspend
	virtualhost 
	sorry_server 
}

virtual_server:设置虚拟服务器开始的标识,后跟虚拟IP地址空格符服务端口;
delay_loop:设置健康检查的时间间隔,单位秒;
lb_algo:设置负载调度算法,常用的有rr,wrr,lc,wlc等;
lb_kind:设置LVS实现负载均衡的机制,有NAT,TUN和DR模式;
persistence_timeout:会话保持时间,单位秒,该选项使用户的请求会一直分发到某个服务节点,直到超过这个会话的保持时间;
persistence_granularity:配合persistence_timeout使用,后面跟的值是子网掩码,表示持续连接的粒度,默认是255.255.255.255即一个单独的客户端IP,如果改为255.255.255.0那么客户端所在的整个网段的请求都会分发到同一台realserver上;
protocol:指定转发协议类型,有TCP和UDP两种选型;
ha_suspend:节点状态从MASTER到BACKUP切换时,暂不启用real server节点的健康检查;
virtualhost:再通过HTTP_GET/SSL_GET做健康检测时,指定的web服务器的虚拟主机地址;
sorry_server:相当于一个备用节点,在所有realserver失效后,启用这个节点,

real_server 192.168.12.132 80 {
	weight 3
	inhibit_on_failure
	notify_up | 
	notify_down | 
}

real_server:real_server段开始的标识,用来指定real server节点,后跟real server的真实IP地址和端口(有空格)
weight:配置real server节点的权值,数字越大权值越高;
inhibit_on_failure:表示在检测到real server节点失效后,把他的weight值置为0,而不是从IPVS中删除;
notify_up:和notify_master相同,后跟一个脚本,表示在检测到real server节点服务处于UP状态后只执行的脚本;
notify_down:表示在检测到real server节点服务处于DOWN状态后只执行的脚本

健康检测段
常见的有HTTP_GET,SSL_GET,TCP_CHECK,SMTP_CHECK,MISC_CHECK
TCP_CHECK检测方式示例:

TCP_CHECK {
	connect_port 80
	connect_timeout 3
	nb_get_retry 3
	delay_before_retry 3
}

其中:
connect_port:健康状态检查的端口,如果不指定,默认是real_server指定的端口;
connect_timeout:表示无响应超时时间,单位秒;
nb_get_retry:重试次数;
delay_before_retry:重试间隔时间;

HTTP_GET和SSL_GET检测方式示例:

HTTP_GET | SSL_GET {
	url {
		path /index.html
		digest e6c271eb5f017f280cf97ec2f51b02d3
		status_code 200 
	}
	connect_port 80
	bindto 192.168.12.80
	connect_timeout 3
	nb_get_retry 3
    delay_before_retry 2
  }

其中:
url:用来指定HTTP/SSL检查的URL信息,可指定多个URL;
path:后跟详细的URL路径;
digest:SSL检查后的摘要信息,可通过genhash命令获取,如genhash -s 192.168.12.80 -p 80 -u /index.html
status_code:指定HTTP检查返回正常状态吗的类型,一般为200;
bindto:表示通过此地址来发送请求对服务器进行健康检查;

配置示例

[root@localhost ~]# cat /usr/local/keepalived/etc/keepalived/keepalived.conf
! Configuration File for keepalived
 
global_defs {					#全局配置
	notification_email {		#指定keepalived在发生切换时需要发送email到的对象,一行一个
		acassen@firewall.loc	#指定收件人邮箱
		failover@firewall.loc
		sysadmin@firewall.loc
	}
	notification_email_from Alexandre.Cassen@firewall.loc #指定发件人
	smtp_server 192.168.200.1	#指定smtp服务器地址
	smtp_connect_timeout 30		#指定smtp连接超时时间
	router_id LVS_DEVEL			#此处注意router_id为负载均衡标识,在局域网内应该是唯一的。
	vrrp_skip_check_adv_addr
	vrrp_strict
	vrrp_garp_interval 0
	vrrp_gna_interval 0
}

#如果这块没有,就不用管他 
vrrp_sync_group VG_1{				#监控多个网段的实例
	group {
		inside_network				#实例名
		outside_network
	}
	notify_master /path/xx.sh		#指定当切换到master时,执行的脚本
	netify_backup /path/xx.sh		#指定当切换到backup时,执行的脚本
	notify_fault "path/xx.sh VG_1" 	#故障时执行的脚本
	notify /path/xx.sh
	smtp_alert 						#使用global_defs中提供的邮件地址和smtp服务器发送邮件通知
}
 
vrrp_instance inside_network {
	state BACKUP 			#指定那个为master,那个为backup,如果设置了nopreempt这个值不起作用,主备考priority决定
	interface eth0 			#设置实例绑定的网卡
	dont_track_primary 		#忽略vrrp的interface错误(默认不设置)
	track_interface{ 		#设置额外的监控,里面那个网卡出现问题都会切换
		eth0
		eth1
	}
	mcast_src_ip			#发送多播包的地址,如果不设置默认使用绑定网卡的primary ip
	garp_master_delay		#在切换到master状态后,延迟进行gratuitous ARP请求
	virtual_router_id 50	#VPID标记
	priority 99				#优先级,高优先级竞选为master
	advert_int 1			#检查间隔,默认1秒
	nopreempt				#设置为不抢占 注:这个配置只能设置在backup主机上,而且这个主机优先级要比另外一台高
	preempt_delay			#抢占延时,默认5分钟
	debug					#debug级别
	authentication {		#设置认证
		auth_type PASS		#认证方式,类型主要有PASS、AH 两种
		auth_pass 111111	#认证密码
	}
	virtual_ipaddress {		#设置vip
		192.168.36.200
	}
}
 
vrrp_instance VI_1 {		#虚拟路由的标识符
	state MASTER			#状态只有MASTER和BACKUP两种,并且要大写,MASTER为工作状态,BACKUP是备用状态
	interface eth0			#通信所使用的网络接口
    lvs_sync_daemon_inteface eth0  #这个默认没有,相当于心跳线接口,DR模式用的和上面的接口一样,也可以用机器上的其他网卡eth1,用来防止脑裂。
    virtual_router_id 51	#虚拟路由的ID号,是虚拟路由MAC的最后一位地址
    priority 100			#此节点的优先级,主节点的优先级需要比其他节点高
    advert_int 1			#通告的间隔时间
    nopreempt				#设置为不抢占 注:这个配置只能设置在backup主机上,而且这个主机优先级要比另外一台高
    preempt_delay			#抢占延时,默认5分钟
    authentication {		#认证配置
		auth_type PASS		#认证方式
        auth_pass 1111		#认证密码
    }
    virtual_ipaddress {		#虚拟ip地址,可以有多个地址,每个地址占一行,不需要子网掩码,同时这个ip 必须与我们在lvs 客户端设定的vip 相一致!
        192.168.200.16
        192.168.200.17
        192.168.200.18
    }
}
 
virtual_server 192.168.200.100 443 { #集群所使用的VIP和端口
    delay_loop 6					#健康检查间隔,单位为秒
    lb_algo rr						#lvs调度算法rr|wrr|lc|wlc|lblc|sh|dh
    nat_mask 255.255.255.0			#VIP掩码
    lb_kind NAT						#负载均衡转发规则。一般包括DR,NAT,TUN 3种
    persistence_timeout 50			#会话保持时间,会话保持,就是把用户请求转发给同一个服务器,不然刚在1上提交完帐号密码,就跳转到另一台服务器2上了
    protocol TCP					#转发协议,有TCP和UDP两种,一般用TCP,没用过UDP
    persistence_granularity <NETMASK> #lvs会话保持粒度
 
    real_server 192.168.201.100 443 { #真实服务器,包括IP和端口号
        weight 1					#默认为1,0为失效
        inhibit_on_failure			#在服务器健康检查失效时,将其设为0,而不是直接从ipvs中删除
        notify_up <string> | <quoted-string> #在检测到server up后执行脚本
        notify_down <string> | <quoted-string> #在检测到server down后执行脚本
 
		TCP_CHECK {					#通过tcpcheck判断RealServer的健康状态
            connect_timeout 3		#连接超时时间
            nb_get_retry 3			#重连次数
            delay_before_retry 3	#重连间隔时间
            connect_port 23			健康检查的端口的端口
            bindto <ip>  
        }
           
        HTTP_GET | SSL_GET {		#健康检测方式,可选有 SSL_GET、TCP_CHECK、HTTP_GET
            url {					#检查url,可以指定多个
              path /				#检查的url路径
              digest ff20ad2481f97b1754ef3e12ecd3a9cc  #需要检查到的内容。检查后的摘要信息。
              status_code 200		#检查的返回状态码
            }
            url {
              path /mrtg/
              digest 9b3a0c85a887a256d6939da88aabd8cd
            }
            connect_timeout 3		#连接超时时间
            nb_get_retry 3			#检测尝试几次
            delay_before_retry 3	#检测的时间间隔
        }
    }
}

如果对您有帮助请随手点赞
基于keepalived 搭建高可用nginx 架构参见:高可用Nginx
基于keepalived 搭建高可用LVS架构参见:高可用LVS

  • 22
    点赞
  • 148
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

catch that elf

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值