keepalived.conf
[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 #检测的时间间隔 } } } virtual_server 10.10.10.2 1358 { delay_loop 6 lb_algo rr lb_kind NAT persistence_timeout 50 protocol TCP sorry_server 192.168.200.200 1358 real_server 192.168.200.2 1358 { weight 1 HTTP_GET { url { path /testurl/test.jsp digest 640205b7b0fc66c1ea91c463fac6334d } url { path /testurl2/test.jsp digest 640205b7b0fc66c1ea91c463fac6334d } url { path /testurl3/test.jsp digest 640205b7b0fc66c1ea91c463fac6334d } connect_timeout 3 nb_get_retry 3 delay_before_retry 3 } } real_server 192.168.200.3 1358 { weight 1 HTTP_GET { url { path /testurl/test.jsp digest 640205b7b0fc66c1ea91c463fac6334c } url { path /testurl2/test.jsp digest 640205b7b0fc66c1ea91c463fac6334c } connect_timeout 3 nb_get_retry 3 delay_before_retry 3 } } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏