Keepalive配置说明
配置文件
[root@lb01 keepalived]# cat keepalived.conf ! Configuration File for keepalived global_defs { notification_email { admin@163.com #配置收件人邮箱地址 } notification_email_from keepalived@qq.com #配置发件人邮箱地址,注:不支持需要smtp验证的发件服务器 smtp_server 84.17.184.248 #smtp服务器必需是IP地址不能使用域名,如:smtp.163.com smtp_connect_timeout 30 router_id LVS_DEVEL } vrrp_script check_sta { #定义检测脚本 script "/etc/keepalived/keepalived.sh"|"pidof nginx" #当脚本或命令的返回值为0时表示检测失败,非0表示检测通过。脚本的返回值用exit命令控制 interval 5 #每5s检测一次 weight -20 #脚本返回值为0时,keepalive优先级减20 fall 3 #判定服务异常的检查次数 rise 2 #判定服务正常的检查次数 } vrrp_instance VI_39.5 { state BACKUP interface eth0 virtual_router_id 51 priority 100 advert_int 1 ##检查间隔,默认1s,VRRP心跳包的发送周期,组播信息发送间隔,两个节点设置必须一样 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 10.47.39.4 } track_script { check_sta #调用检测脚本 } smtp_alert #启用keepalive状态切换邮件通知功能 nopreempt notify_master /etc/keepalived/to_master.sh #keepalive状态切换为主时执行to_master.sh脚本 notify_backup /etc/keepalived/to_backup.sh #keepalive状态切换为备时执行to_backup.sh脚本 notify_fault /etc/keepalived/to_fault.sh #keepalive状态失败时执行to_fault.sh脚本 }
Keepalived lvs配置,virtual_server:定义虚拟IP(VIP)和端口,客户端请求集中在此。real_server:实际的后端服务机器,监控其健康状态,以决策是否将流量切换到它们
virtual_server 10.47.39.4 80 { delay_loop 6 # 健康检查时间间隔(实际并不一定完全是6秒,测试结果是小于6秒的随机值?) lb_algo rr # lvs调度算法(rr:轮询|wrr:加权轮询|lc:最少连接|wlc:加权最少连接|lblc:基于连接数和带宽的调度|sh:源地址哈希|dh:目标地址哈希) lb_kind DR # 负载均衡转发规则NAT|DR|RUN persistence_timeout 5 # 会话保持时间 protocol TCP # 使用的协议 persistence_granularity <NETMASK> # lvs会话保持粒度 virtualhost <string> # 检查的web服务器的虚拟主机(host:头) sorry_server <IPADDR> <port> # 备用机,所有realserver失效后启用 real_server 10.47.39.5 8080 { weight 1 # 默认为1,0为失效 inhibit_on_failure # 在服务器健康检查失效时,将其设为0,而不是直接从ipvs中删除 notify_up <string> | <quoted-string> # 在检测到server up后执行脚本 notify_down <string> | <quoted-string> # 在检测到server down后执行脚本 # HTTP服务状态检测 HTTP_GET或SSL_GET { url { path /index.html # 检测url,可写多个 digest 24326582a86bee478bac72d5af25089e # 检测效验码 # digest效验码获取方法:genhash -s IP -p 80 -u http://IP/index.html status_code 200 # 检测返回http状态码 } connect_port 8080 # 连接端口 connect_timeout 3 # 连接超时时间 nb_get_retry 3 # 重试次数 delay_before_retry 2 # 连接间隔时间 } # TCP端口状态检测(使用TCP端口服务基本上都可以使用) TCP_CHECK { connect_port 8080 # 健康检测端口,默认为real_server后跟的端口 connect_timeout 5 nb_get_retry 3 delay_before_retry 3 } # 邮件服务器SMTP检测 SMTP_CHECK { # 健康检测邮件服务器smtp host { connect_ip 192.168.1.100 # SMTP服务器IP connect_port 25 } bindto 192.168.1.50 # 指定本机绑定的IP地址 connect_timeout 5 retry 2 delay_before_retry 3 hello_name "mail.domain.com" # SMTP客户端问候名,通常设置为邮件域名,可选 } # 用户自定义脚本检测real_server服务状态 MISC_CHECK { misc_path /script.sh # 指定外部程序或脚本位置 misc_timeout 3 # 执行脚本超时时间 !misc_dynamic # 不动态调整服务器权重(weight),如果启用将通过退出状态码动态调整real_server权重值 } } }
参考链接:
https://www.cnblogs.com/cutemsyu/p/6019420.html
https://www.jianshu.com/p/b050d8861fc1
https://blog.csdn.net/wzyzzu/article/details/50787042 # keepalived 各配置项和术语说明
https://www.cnblogs.com/pangguoping/p/5721517.html # keepalived vip漂移基本原理及选举算法
https://www.cnblogs.com/Sinte-Beuve/p/13392747.html # LVS+Keepalived 实现高可用负载均衡
浙公网安备 33010602011771号