LVS原理详解配置⽂件参数详解
LVS原理详解
LVS简介
  Internet的快速增长使多媒体⽹络服务器⾯对的访问数量快速增加,服务器需要具备提供⼤量并发访问服务的能⼒,因此对于⼤负载的服务器来讲, CPU、I/O处理能⼒很快会成为瓶颈。由于单台服务器的性能总是有限的,简单的提⾼硬件性能并不能真正解决这个问题。为此,必须采⽤多服务器和负载均衡技术才能满⾜⼤量并发访问的需要。Linux 虚拟服务器(Linux Virtual Servers,LVS) 使⽤负载均衡技术将多台服务器组成⼀个虚拟服务器。它为适应快速增长的⽹络访问需求提供了⼀个负载能⼒易于扩展,⽽价格低廉的解决⽅案。
LVS结构与⼯作原理
⼀.LVS的结构
  LVS由前端的负载均衡器(Load Balancer,LB)和后端的真实服务器(Real Server,RS)组成。RS间可通过局域⽹或⼴域⽹连接。LVS的这种结构对⽤户是透明的,⽤户只能看见⼀台作为LB的虚拟服务器(Virtual Server),⽽看不到提供服务的RS。当⽤户的请求发往虚拟服务器,LB根据设定的包转发策略
和负载均衡调度算法将⽤户请求转发给RS。RS再将⽤户请求结果返回给⽤户。
⼆.LVS内核模型
1.当客户端的请求到达负载均衡器的内核空间时,⾸先会到达PREROUTING链。
2.当内核发现请求数据包的⽬的地址是本机时,将数据包送往INPUT链。
3.LVS由⽤户空间的ipvsadm和内核空间的IPVS组成,ipvsadm⽤来定义规则,IPVS利⽤ipvsadm定义的规则⼯作,IPVS⼯作在INPUT链上,当数据包到达INPUT链时,⾸先会被IPVS检查,如果数据包⾥⾯的⽬的地址及端⼝没有在规则⾥⾯,那么这条数据包将被放⾏⾄⽤户空间。
4.如果数据包⾥⾯的⽬的地址及端⼝在规则⾥⾯,那么这条数据报⽂将被修改⽬的地址为事先定义好的后端服务器,并送往POSTROUTING链。
5.最后经由POSTROUTING链发往后端服务器。
三.LVS的包转发模型
1.NAT模型:
①.客户端将请求发往前端的负载均衡器,请求报⽂源地址是CIP(客户端IP),后⾯统称为CIP),⽬标地址为VIP(负载均衡器前端地址,后⾯统称为VIP)。
②.负载均衡器收到报⽂后,发现请求的是在规则⾥⾯存在的地址,那么它将客户端请求报⽂的⽬标地址改为了后端服务器的RIP地址并将报⽂根据算法发送出去。group by的用法及原理详解
③.报⽂送到Real Server后,由于报⽂的⽬标地址是⾃⼰,所以会响应该请求,并将响应报⽂返还给LVS。
④.然后lvs将此报⽂的源地址修改为本机并发送给客户端。注意:在NAT模式中,Real Server的⽹关必须指向LVS,否则报⽂⽆法送达客户端。
2.DR模型:
①.客户端将请求发往前端的负载均衡器,请求报⽂源地址是CIP,⽬标地址为VIP。
②.负载均衡器收到报⽂后,发现请求的是在规则⾥⾯存在的地址,那么它将客户端请求报⽂的源MAC地址改为⾃⼰DIP的MAC地址,⽬标MAC改为了RIP的MAC地址,并将此包发送给RS。
③.RS发现请求报⽂中的⽬的MAC是⾃⼰,就会将次报⽂接收下来,处理完请求报⽂后,将响应报⽂
通过lo接⼝送给eth0⽹卡直接发送给客户端。注意:需要设置lo接⼝的VIP不能响应本地⽹络内的arp请求。
3.TUN模型:
①.客户端将请求发往前端的负载均衡器,请求报⽂源地址是CIP,⽬标地址为VIP。
②.负载均衡器收到报⽂后,发现请求的是在规则⾥⾯存在的地址,那么它将在客户端请求报⽂的⾸部再封装⼀层IP报⽂,将源地址改为DIP,⽬标地址改为RIP,并将此
包发送给RS。
③.RS收到请求报⽂后,会⾸先拆开第⼀层封装,然后发现⾥⾯还有⼀层IP⾸部的⽬标地址是⾃⼰lo接⼝上的VIP,所以会处理次请求报⽂,并将响应报⽂通过lo接⼝送
给eth0⽹卡直接发送给客户端。注意:需要设置lo接⼝的VIP不能在共⽹上出现。
四.LVS的调度算法
LVS的调度算法分为静态与动态两类。
1.静态算法(4种):只根据算法进⾏调度⽽不考虑后端服务器的实际连接情况和负载情况
①.RR:轮叫调度(Round Robin)
 调度器通过”轮叫”调度算法将外部请求按顺序轮流分配到集中的真实服务器上,它均等地对待每⼀台服务器,⽽不管服务器上实际的连接数和系统负载。
②.WRR:加权轮叫(Weight RR)
 调度器通过“加权轮叫”调度算法根据真实服务器的不同处理能⼒来调度访问请求。这样可以保证处理能⼒强的服务器处理更多的访问流量。调度器可以⾃动问询真实服务器的负载情况,并动态地调整其权值。
③.DH:⽬标地址散列调度(Destination Hash )
 根据请求的⽬标IP地址,作为散列键(HashKey)从静态分配的散列表出对应的服务器,若该服务器是可⽤的且未超载,将请求发送到该服务器,否则返回空。
④.SH:源地址 hash(Source Hash)
 源地址散列”调度算法根据请求的源IP地址,作为散列键(HashKey)从静态分配的散列表出对应的服务器,若该服务器是可⽤的且未超载,将请求发送到该服务器,否则返回空。
2.动态算法(6种):前端的调度器会根据后端真实服务器的实际连接情况来分配请求
①.LC:最少链接(Least Connections)
 调度器通过”最少连接”调度算法动态地将⽹络请求调度到已建⽴的链接数最少的服务器上。如果集系统的真实服务器具有相近的系统性能,采⽤”最⼩连接”调度算法可以较好地均衡负载。
②.WLC:加权最少连接(默认采⽤的就是这种)(Weighted Least Connections)
 在集系统中的服务器性能差异较⼤的情况下,调度器采⽤“加权最少链接”调度算法优化负载均衡性能,具有较⾼权值的服务器将承受较⼤⽐例的活动连接负载。
调度器可以⾃动问询真实服务器的负载情况,并动态地调整其权值。
③.SED:最短延迟调度(Shortest Expected Delay )
 在WLC基础上改进,Overhead = (ACTIVE+1)*256/加权,不再考虑⾮活动状态,把当前处于活
动状态的数⽬+1来实现,数⽬最⼩的,接受下次请求,+1的⽬的是为了考虑加权的时候,⾮活动连接过多缺陷:当权限过⼤的时候,会倒置空闲服务器⼀直处于⽆连接状态。
④.NQ永不排队/最少队列调度(Never Queue Scheduling NQ)
 ⽆需队列。如果有台 realserver的连接数=0就直接分配过去,不需要再进⾏sed运算,保证不会有⼀个主机很空间。在SED基础上⽆论+⼏,第⼆次⼀定给下⼀个,保证不会有⼀个主机不会很空闲着,不考虑⾮活动连接,才⽤NQ,SED要考虑活动状态连接,对于DNS的UDP不需要考虑⾮活动连接,⽽httpd的处于保持状态的服务就需要考虑⾮活动连接给服务器的压⼒。
⑤.LBLC:基于局部性的最少链接(locality-Based Least Connections)
 基于局部性的最少链接”调度算法是针对⽬标IP地址的负载均衡,⽬前主要⽤于Cache集系统。该算法根据请求的⽬标IP地址出该⽬标IP地址最近使⽤的服务器,若该服务器是可⽤的且没有超载,将请求发送到该服务器;若服务器不存在,或者该服务器超载且有服务器处于⼀半的⼯作负载,则⽤“最少链接”的原则选出⼀个可⽤的服务器,将请求发送到该服务器。
⑥. LBLCR:带复制的基于局部性最少连接(Locality-Based Least Connections with Replication)
 带复制的基于局部性最少链接”调度算法也是针对⽬标IP地址的负载均衡,⽬前主要⽤于Cache集
系统。它与LBLC算法的不同之处是它要维护从⼀个⽬标IP地址到⼀组服务器的映射,⽽LBLC算法维护从⼀个⽬标IP地址到⼀台服务器的映射。该算法根据请求的⽬标IP地址出该⽬标IP地址对应的服务器组,按”最⼩连接”原则从服务器组中选出⼀台服务器,若服务器没有超载,将请求发送到该服务器;若服务器超载,则按“最⼩连接”原则从这个集中选出⼀台服务器,将该服务器加⼊到服务器组中,将请求发送到该服务器。同时,当该服务器组有⼀段时间没有被修改,将最忙的服务器从服务器组中删除,以降低复制的程度。
keepalived 配置⽂件参数详解
2017年08⽉03⽇ 18:53:07  阅读数:8453 标签:更多
个⼈分类:
版权声明:本⽂为博主原创⽂章,未经博主允许不得转载。 blog.csdn/mofiu/article/details/76644012
global_defs 全局配置
vrrpd
1. vrrp_script添加⼀个周期性执⾏的脚本。脚本的退出状态码会被调⽤它的所有的VRRP Instance记录。
2. vrrp_sync_group将所有相关的VRRP实例定义在⼀起,作为⼀个VRRP Group,如果组内的任意⼀个实例出现问题,都可以实现Failover
3. garp_group
4. vrrp_instance
LVS配置
virtual_server
real_server
real_server中的健康检查
HTTP_GET or SSL_GET
TCP_CHECK
TCP_CHECK
DNS_CHECK
DNS_CHECK
全局定义模块
! 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 192.168.200.1  #指定smtp服务器地址
smtp_connect_timeout 30    指定smtp连接超时时间
router_id LVS_DEVEL  #负载均衡标识,在局域⽹内应该是唯⼀的。
vrrp_skip_check_adv_addr
vrrp_strict
vrrp_garp_interval 0
vrrp_gna_interval 0
}
说明:
notification_email:指定当keepalived出现问题时,发送邮件给哪些⽤户。
notification_emai_from:发送邮件时,邮件的来源地址。
smtp_server <DOMAIN|IP> [<PORT>]:smtp服务器的地址或域名。默认端⼝为25.如:smtp_server smtp.felix 25
smtp_helo_name <HOST_NAME>:指定在HELO消息中所使⽤的名称。默认为本地主机名。
smtp_connect_timeout:指定smtp服务器连接的超时时间。单位是秒。
router_id:指定标识该机器的route_id. 如:route_id LVS_01
vrrp_mcast_group4 224.0.0.18:指定发送VRRP组播消息使⽤的IPV4组播地址。默认是224.0.0.18
vrrp_mcast_group6 ff02::12 指定发送VRRP组播消息所使⽤的IPV6组播地址。默认是ff02::12
default_interface eth0:设置静态地址默认绑定的端⼝。默认是eth0。
lvs_sync_daemon <INTERFACE> <VRRP_INSTANCE> [id <SYNC_ID>] [maxlen <LEN>] [port <PORT>] [ttl <TTL>] [group <IP ADDR>]
设置LVS同步服务的相关内容。可以同步LVS的状态信息。
INTERFACE:指定同步服务绑定的接⼝。
VRRP_INSTANCE:指定同步服务绑定的VRRP实例。
id <SYNC_ID>:指定同步服务所使⽤的SYNCID,只有相同的SYNCID才会同步。范围是0-255.
maxlen:指定数据包的最⼤长度。范围是1-65507
port:指定同步所使⽤的UDP端⼝。
group:指定组播IP地址。
lvs_flush:在keepalived启动时,刷新所有已经存在的LVS配置。
vrrp_garp_master_delay 10:当转换为MASTER状态时,延迟多少秒发送第⼆组的免费ARP。默认为5s,0表⽰不发送第⼆组免的免费ARP。
vrrp_garp_master_repeat 1:当转换为MASTER状态时,在⼀组中⼀次发送的免费ARP数量。默认是5.
vrrp_garp_lower_prio_delay 10:当MASTER收到更低优先级的通告时,延迟多少秒发送第⼆组的免
费ARP。
vrrp_garp_lower_prio_repeat 1:当MASTER收到更低优先级的通告时,在⼀组中⼀次发送的免费ARP数量。
vrrp_garp_master_refresh 60:当keepalived成为MASTER以后,刷新免费ARP的最⼩时间间隔(会再次发送免费ARP)。默认是0,表⽰不会刷新。
vrrp_garp_master_refresh_repeat 2:当keepalived成为MASTER以后,每次刷新会发送多少个免费ARP。默认是1.
vrrp_garp_interval 0.001:在⼀个接⼝发送的两个免费ARP之间的延迟。可以精确到毫秒级。默认是0.
vrrp_lower_prio_no_advert true|false:默认是false。如果收到低优先级的通告,不发送任何通告。
vrrp_version 2|3:设置默认的VRRP版本。默认是2.
vrrp_check_unicast_src:在单播模式中,开启对VRRP数据包的源地址做检查,源地址必须是单播邻居之⼀。
vrrp_skip_check_adv_addr:默认是不跳过检查。检查收到的VRRP通告中的所有地址可能会⽐较耗时,设置此命令的意思是,如果通告与接收的上⼀个通告来⾃相同的master路由器,则不执⾏检查(跳过检查)。
vrrp_strict:严格遵守VRRP协议。下列情况将会阻⽌启动Keepalived:1. 没有VIP地址。2. 单播邻居。3. 在VRRP版本2中有IPv6地址。
vrrp_iptables:不添加任何iptables规则。默认是添加iptables规则的。
如果vrrp进程或check进程超时,可以⽤下⾯的4个选项。可以使处于BACKUP状态的VRRP实例变成MASTER状态,即使MASTER实例依然在运⾏。因为MASTER或BACKUP系统⽐较慢,不能及时处理VRRP数据包。vrrp_priority <-20 -- 19>:设置VRRP进程的优先级。
checker_priority <-20 -- 19>:设置checker进程的优先级。
vrrp_no_swap:vrrp进程不能够被交换。
checker_no_swap:checker进程不能够被交换。
script_user <username> [groupname]:设置运⾏脚本默认⽤户和组。如果没有指定,则默认⽤户为keepalived_script(需要该⽤户存在),否则为root⽤户。默认groupname同username。
enable_script_security:如果脚本路径的任⼀部分对于⾮root⽤户来说,都具有可写权限,则不会以root⾝份运⾏脚本。
nopreempt 默认是抢占模式要是⽤⾮抢占式的就加上nopreempt
注意:上述为global_defs中的指令
VRRPD配置
VRRPD的配置包括如下⼦块:
1. vrrp_script
2. vrrp_sync_group
3. garp_group
4. vrrp_instance
vrrp_script配置
作⽤:添加⼀个周期性执⾏的脚本。脚本的退出状态码会被调⽤它的所有的VRRP Instance记录。
注意:⾄少有⼀个VRRP实例调⽤它并且优先级不能为0.优先级范围是1-254.
vrrp_script <SCRIPT_NAME> {
...
}
选项说明:
scrip "/path/to/somewhere":指定要执⾏的脚本的路径。
interval <INTEGER>:指定脚本执⾏的间隔。单位是秒。默认为1s。
timeout <INTEGER>:指定在多少秒后,脚本被认为执⾏失败。
weight <-254 --- 254>:调整优先级。默认为2.
rise <INTEGER>:执⾏成功多少次才认为是成功。
fall <INTEGER>:执⾏失败多少次才认为失败。
user <USERNAME> [GROUPNAME]:运⾏脚本的⽤户和组。
init_fail:假设脚本初始状态是失败状态。
解释:
weight:
1. 如果脚本执⾏成功(退出状态码为0),weight⼤于0,则priority增加。
2. 如果脚本执⾏失败(退出状态码为⾮0),weight⼩于0,则priority减少。
3. 其他情况下,priority不变。
vrrp_sync_group
作⽤:将所有相关的VRRP实例定义在⼀起,作为⼀个VRRP Group,如果组内的任意⼀个实例出现问题,都可以实现Failover。
vrrp_sync_group VG_1 {
group {
inside_network    # vrrp instance name
outside_network    # vrrp instance name
...
}
...
}
说明:
如果username和groupname没有指定,则以默认的script_user所指定的⽤户和组。
1. notify_master /path/to_master.sh [username [groupname]]
作⽤:当成为MASTER时,以指定的⽤户和组执⾏脚本。
2. notify_backup /path/to_backup.sh [username [groupname]]
作⽤:当成为BACKUP时,以指定的⽤户和组执⾏脚本。
3. notify_fault "/path/fault.sh VG_1" [username [groupname]]
作⽤:当该同步组Fault时,以指定的⽤户和组执⾏脚本。
4. notify /path/notify.sh [username [groupname]]
作⽤:在任何状态都会以指定的⽤户和组执⾏脚本。
说明:该脚本会在notify_*脚本后执⾏。
notify可以使⽤3个参数,如下:
$1:可以是GROUP或INTANCE,表明后⾯是组还是实例。
$2:组名或实例名。
$3:转换后的⽬标状态。有:MASTER、BACKUP、FAULT。
5. smtp_alert:当状态发⽣改变时,发送邮件。
6. global_tracking:所有的VRRP实例共享相同的tracking配置。
注意:脚本⽂件要加上x权限,同时指令最好写绝对路径。
vrrp_instance
命令说明:
state MASTER|BACKUP:指定该keepalived节点的初始状态。
interface eth0:vrrp实例绑定的接⼝,⽤于发送VRRP包。
use_vmac [<VMAC_INTERFACE>]:在指定的接⼝产⽣⼀个⼦接⼝,如vrrp.51,该接⼝的MAC地址为组播地址,通过该接⼝向外发送和接收VRRP包。
vmac_xmit_base:通过基本接⼝向外发送和接收VRRP数据包,⽽不是通过VMAC接⼝。
native_ipv6:强制VRRP实例使⽤IPV6.(当同时配置了IPV4和IPV6的时候)
dont_track_primary:忽略VRRP接⼝的错误,默认是没有配置的。
track_interface {
eth0
eth1 weight <-254-254>
...
}:如果track的接⼝有任何⼀个出现故障,都会进⼊FAULT状态。
track_script {
<SCRIPT_NAME>
<SCRIPT_NAME> weight <-254-254>
}:添加⼀个track脚本(vrrp_script配置的脚本。)
mcast_src_ip <IPADDR>:指定发送组播数据包的源IP地址。默认是绑定VRRP实例的接⼝的主IP地址。
unicast_src_ip <IPADDR>:指定发送单薄数据包的源IP地址。默认是绑定VRRP实例的接⼝的主IP地址。
version 2|3:指定该实例所使⽤的VRRP版本。
unicast_peer {
<IPADDR>
...
}:采⽤单播的⽅式发送VRRP通告,指定单播邻居的IP地址。
virtual_router_id 51:指定VRRP实例ID,范围是0-255.
priority 100:指定优先级,优先级⾼的将成为MASTER。
advert_int 1:指定发送VRRP通告的间隔。单位是秒。
authentication {
auth_type PASS|AH:指定认证⽅式。PASS简单密码认证(推荐),AH:IPSEC认证(不推荐)。
auth_pass 1234:指定认证所使⽤的密码。最多8位。
}
virtual_ipaddress {
<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
}:指定VIP地址。
nopreempt:设置为不抢占。默认是抢占的,当⾼优先级的机器恢复后,会抢占低优先级的机器成为MASTER,⽽不抢占,则允许低优先级的机器继续成为MASTER,即使⾼优先级的机器已经上线。如果要使⽤这个功能,则初始化状态必须为preempt_delay:设置抢占延迟。单位是秒,范围是0---1000,默认是0.发现低优先级的MASTER后多少秒开始抢占。
通知脚本:
notify_master <STRING>|<QUOTED-STRING> [username [groupname]]
notify_backup <STRING>|<QUOTED-STRING> [username [groupname]]
notify_fault <STRING>|<QUOTED-STRING> [username [groupname]]
notify <STRING>|<QUOTED-STRING> [username [groupname]]
# 当停⽌VRRP时执⾏的脚本。
notify_stop <STRING>|<QUOTED-STRING> [username [groupname]]
smtp_alert
LVS配置
virtual_server
virtual_server IP Port | virtual_server fwmark int | virtual_server group string {
delay_loop <INT>:健康检查的时间间隔。
lb_argo rr|wrr|lc|wlc|lblc|sh|dh:LVS调度算法。
lb_kind NAT|DR|TUN:LVS模式。
persistence_timeout 360:持久化超时时间,单位是秒。默认是6分钟。
persistence_granularity:持久化连接的颗粒度。
protocol TCP|UDP|SCTP:4层协议。
ha_suspend:如果virtual server的IP地址没有设置,则不进⾏后端服务器的健康检查。
virtualhost <STRING>:为HTTP_GET和SSL_GET执⾏要检查的虚拟主机。如virtualhost www.felix
sorry_server <IPADDR> <PORT>:添加⼀个备⽤服务器。当所有的RS都故障时。
sorry_server_inhibit:将inhibit_on_failure指令应⽤于sorry_server指令。
alpha:在keepalived启动时,假设所有的RS都是down,以及健康检查是失败的。有助于防⽌启动时的误报。默认是禁⽤的。
omega:在keepalived终⽌时,会执⾏quorum_down指令所定义的脚本。
quorum <INT>:默认值1. 所有的存活的服务器的总的最⼩权重。
quorum_up <STRING>:当quorum增长到满⾜quorum所定义的值时,执⾏该脚本。
quorum_down <STRING>:当quorum减少到不满⾜quorum所定义的值时,执⾏该脚本。
}
real_server
real_server IP Port {
weight <INT>:给服务器指定权重。默认是1.
inhibit_on_failure:当服务器健康检查失败时,将其weight设置为0,⽽不是从Virtual Server中移除。
notify_up <STRING>:当服务器健康检查成功时,执⾏的脚本。
notify_down <STRING>:当服务器健康检查失败时,执⾏的脚本。
uthreshold <INT>:到这台服务器的最⼤连接数。
lthreshold <INT>:到这台服务器的最⼩连接数。
}
real_server中的健康检查
HTTP_GET | SSL_GET {
url {
path <STRING>:指定要检查的URL的路径。如path / or path /mrtg2
digest <STRING>:摘要。计算⽅式:genhash -s 172.17.100.1 -p 80 -u /index.html
status_code <INT>:状态码。
}
nb_get_retry <INT>:get尝试次数。
delay_before_retry <INT>:在尝试之前延迟多长时间。
connect_ip <IP ADDRESS>:连接的IP地址。默认是real server的ip地址。
connect_port <PORT>:连接的端⼝。默认是real server的端⼝。
bindto <IP ADDRESS>:发起连接的接⼝的地址。
bind_port <PORT>:发起连接的源端⼝。
connect_timeout <INT>:连接超时时间。默认是5s。
fwmark <INTEGER>:使⽤fwmark对所有出去的检查数据包进⾏标记。
warmup <INT>:指定⼀个随机延迟,最⼤为N秒。可防⽌⽹络阻塞。如果为0,则关闭该功能。
}
TCP_CHECK {
connect_ip <IP ADDRESS>:连接的IP地址。默认是real server的ip地址。
connect_port <PORT>:连接的端⼝。默认是real server的端⼝。
bindto <IP ADDRESS>:发起连接的接⼝的地址。
bind_port <PORT>:发起连接的源端⼝。
connect_timeout <INT>:连接超时时间。默认是5s。
fwmark <INTEGER>:使⽤fwmark对所有出去的检查数据包进⾏标记。
warmup <INT>:指定⼀个随机延迟,最⼤为N秒。可防⽌⽹络阻塞。如果为0,则关闭该功能。
retry <INIT>:重试次数。默认是1次。
delay_before_retry <INT>:默认是1秒。在重试之前延迟多少秒。
}
SMTP_CHECK {
connect_ip <IP ADDRESS>:连接的IP地址。默认是real server的ip地址。
connect_port <PORT>:连接的端⼝。默认是real server的端⼝。默认是25端⼝
bindto <IP ADDRESS>:发起连接的接⼝的地址。
bind_port <PORT>:发起连接的源端⼝。
connect_timeout <INT>:连接超时时间。默认是5s。
fwmark <INTEGER>:使⽤fwmark对所有出去的检查数据包进⾏标记。
warmup <INT>:指定⼀个随机延迟,最⼤为N秒。可防⽌⽹络阻塞。如果为0,则关闭该功能。
retry <INT>:重试次数。
delay_before_retry <INT>:在重试之前延迟多少秒。
helo_name <STRING>:⽤于SMTP HELO请求的字符串。
}
DNS_CHECK {
connect_ip <IP ADDRESS>:连接的IP地址。默认是real server的ip地址。
connect_port <PORT>:连接的端⼝。默认是real server的端⼝。默认是25端⼝
bindto <IP ADDRESS>:发起连接的接⼝的地址。
bind_port <PORT>:发起连接的源端⼝。
connect_timeout <INT>:连接超时时间。默认是5s。
fwmark <INTEGER>:使⽤fwmark对所有出去的检查数据包进⾏标记。
warmup <INT>:指定⼀个随机延迟,最⼤为N秒。可防⽌⽹络阻塞。如果为0,则关闭该功能。
retry <INT>:重试次数。默认是3次。
type <STRING>:DNS query type。A/NS/CNAME/SOA/MX/TXT/AAAA
name <STRING>:DNS查询的域名。默认是(.)
}
MISC_CHECK {
misc_path <STRING>:外部的脚本或程序路径。
misc_timeout <INT>:脚本执⾏超时时间。
user USERNAME [GROUPNAME]:指定运⾏该脚本的⽤户和组。如果没有指定GROUPNAME,则GROUPNAME同USERNAME。 misc_dynamic:根据退出状态码动态调整权重。
0,健康检查成功,权重不变。
1,健康检查失败。
2-255,健康检查成功。权重设置为退出状态码减去2.如退出状态码是250,则权重调整为248
warmup <INT>:指定⼀个随机延迟,最⼤为N秒。可防⽌⽹络阻塞。如果为0,则关闭该功能。
}
实例
global_defs {
router_id LVS_Server 指定标识该机器的route_id
}
vrrp_instance VI_1 {
state MASTER 指定该keepalived节点的初始状态
interface ens8 vrrp实例绑定的接⼝,⽤于发送VRRP包
virtual_router_id 51  指定VRRP实例ID
priority 150  指定优先级,优先级⾼的将成为MASTER
nopreempt  设置为不抢占。默认是抢占的
advert_int 1  advert_int 1
authentication {
auth_type PASS  指定认证⽅式
auth_pass password 指定认证所使⽤的密码。
}
virtual_ipaddress {
192.168.1.217 dev ens8  指定VIP地址
}
}
virtual_server 192.168.1.217 443 {
delay_loop 3  delay_loop
lvs_sched rr  LVS的调度算法
lvs_method DR  LVS 模式
protocol TCP  4层协议
real_server 192.168.1.211 443 {
weight 1
TCP_CHECK {
connect_port 443
connect_timeout 3
nb_get_retry 3  get尝试次数
delay_before_retry 10  在尝试之前延迟多长时间
}
}
real_server 192.168.1.212 443 {
weight 1
TCP_CHECK {
connect_port 443
connect_timeout 3
nb_get_retry 3
delay_before_retry 10
}

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。