Keepalived基础知识详细完整总结(4)

script “/usr/local/bin/check_running”
interval 10    #脚本执行间隔
weight 10      #脚本结果导致的优先级变更:10表示优先级+10;-10则表示优先级-10
}

然后在实例(vrrp_instance)里面引用,有点类似脚本里面的函数引用一样:先定义,后引用函数名

track_script {
check_running weight 20
}

注意:VRRP脚本(vrrp_script)和VRRP实例(vrrp_instance)属于同一个级别

3)LVS配置
如果你没有配置LVS+keepalived,那么无需配置这段区域,如果你用的是nginx来代替LVS,这无需配置这款,这里的LVS配置是专门为keepalived+LVS集成准备的。
注意了,这里LVS配置并不是指真的安装LVS然后用ipvsadm来配置它,而是用keepalived的配置文件来代替ipvsadm来配置LVS,这样会方便很多,一个配置文件搞定这些,维护方便,配置方便是也!
这里LVS配置也有两个配置
一个是虚拟主机组配置
一个是虚拟主机配置

1--虚拟主机组配置文件详解
这个配置是可选的,根据需求来配置吧,这里配置主要是为了让一台realserver上的某个服务可以属于多个Virtual Server,并且只做一次健康检查:
virtual_server_group <STRING> { # VIP port <IPADDR> <PORT> <IPADDR> <PORT> fwmark <INT> }

2--虚拟主机配置
virtual server可以以下面三种的任意一种来配置:
a)virtual server IP port
b)virtual server fwmark int
c)virtual server group string

下面以第一种比较常用的方式来配详细解说一下:

virtual_server 192.168.1.2 80 {                    #设置一个virtual server: VIP:Vport
delay_loop 3                                                  # service polling的delay时间,即服务轮询的时间间隔
 
lb_algo rr|wrr|lc|wlc|lblc|sh|dh                        #LVS调度算法
lb_kind NAT|DR|TUN                                      #LVS集群模式                     
persistence_timeout 120                                #会话保持时间(秒为单位),即以用户在120秒内被分配到同一个后端realserver
persistence_granularity <NETMASK>              #LVS会话保持粒度,ipvsadm中的-M参数,默认是0xffffffff,即每个客户端都做会话保持
protocol TCP                                                  #健康检查用的是TCP还是UDP
ha_suspend                                                  #suspendhealthchecker’s activity
virtualhost <string>                                      #HTTP_GET做健康检查时,检查的web服务器的虚拟主机(即host:头)
 
sorry_server <IPADDR> <PORT>                #备用机,就是当所有后端realserver节点都不可用时,就用这里设置的,也就是临时把所有的请求都发送到这里啦
 
real_server <IPADDR> <PORT>                    #后端真实节点主机的权重等设置,主要,后端有几台这里就要设置几个
{
weight 1                                                        #给每台的权重,0表示失效(不知给他转发请求知道他恢复正常),默认是1
inhibit_on_failure                                            #表示在节点失败后,把他权重设置成0,而不是冲IPVS中删除
 
notify_up <STRING> | <QUOTED-STRING>  #检查服务器正常(UP)后,要执行的脚本
notify_down <STRING> | <QUOTED-STRING> #检查服务器失败(down)后,要执行的脚本
HTTP_GET                                                    #健康检查方式
{
url {                                                                #要坚持的URL,可以有多个
path /                                                            #具体路径
digest <STRING>                                           
status_code 200                                            #返回状态码
}
connect_port 80                                            #监控检查的端口
 
bindto <IPADD>                                            #健康检查的IP地址
connect_timeout  3                                      #连接超时时间
nb_get_retry 3                                              #重连次数
delay_before_retry 2                                      #重连间隔
} # END OF HTTP_GET|SSL_GET
 
#下面是常用的健康检查方式,健康检查方式一共有HTTP_GET|SSL_GET|TCP_CHECK|SMTP_CHECK|MISC_CHECK这些
#TCP方式
TCP_CHECK {
connect_port 80
bindto 192.168.1.1
connect_timeout 4
} # TCP_CHECK
 
# SMTP方式,这个可以用来给邮件服务器做集群
SMTP_CHECK
host {
connect_ip <IP ADDRESS>
connect_port <PORT>                                    #默认检查25端口
14 KEEPALIVED
bindto <IP ADDRESS>
}
connect_timeout <INTEGER>
retry <INTEGER>
delay_before_retry <INTEGER>
# “smtp HELO”ž|·-ë꧌à”
helo_name <STRING>|<QUOTED-STRING>
} #SMTP_CHECK
 
#MISC方式,这个可以用来检查很多服务器只需要自己会些脚本即可
MISC_CHECK
{
misc_path <STRING>|<QUOTED-STRING> #外部程序或脚本
misc_timeout <INT>                                    #脚本或程序执行超时时间
 
misc_dynamic                                              #这个就很好用了,可以非常精确的来调整权重,是后端每天服务器的压力都能均衡调配,这个主要是通过执行的程序或脚本返回的状态代码来动态调整weight值,使权重根据真实的后端压力来适当调整,不过这需要有过硬的脚本功夫才行哦
#返回0:健康检查没问题,不修改权重
#返回1:健康检查失败,权重设置为0
#返回2-255:健康检查没问题,但是权重却要根据返回代码修改为返回码-2,例如如果程序或脚本执行后返回的代码为200,#那么权重这回被修改为 200-2
}
} # Realserver
} # Virtual Server

================================小案例 分享=============================

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/1fd103c63a934da4ffd273a8a8abede7.html