keepalived.conf(5) Keepalived Configuration's Manual keepalived.conf(5) (NAME) keepalived.conf - keepalived : (Note:) Keepalived . Keepalived . (DESCRIPTION) keepalived.conf Keepalived . '{' '}' . '#' '!' . 'include' . include : include FILENAME FILENAME (wildcard) csh "{foo/{,cat,dog},bar}" glob() . . include include_check ( ) : includer FILENAME - include_check readable includem FILENAME - include_check match includew FILENAME - include_check wildcard_match includeb FILENAME - include_check brace_match includea FILENAME - include_check : glob() libc GLOB_ALTDIRFUNC ( Musl libc Alpine Linux ) includea includer includew . /etc/keepalived/conf.d include_/etc/keepalived/conf.d/* includer . includea . include include include . include . (PARAMETER SYNTAX) on|off|true|false|yes|no . 2.71828 3 . (SCRIPTS) . (a) (Notify) vrrp vrrp (quorum) (up) (down) . (b) vrrp (vrrp tracking scripts) (down) vrrp (weight) (priority) vrrp . (c) LVS (LVS checker misc scripts) (real server) (down) . keepalived_script ( ) root / (user/group) . root root . root root . SIGTERM . keepalived SIGTERM . (Quoted strings) " ' (whitespace) . ' : 'abcd" efg h jkl "mnop' : 'abcd efg h jkl mnop' : 'abcd "efg h jkl" mnop' : 'abcd', 'efg h jkl' and 'mnop' " ' . (escaped characters) . \a \b \E \f \n \r \t \v \nnn \xXX ( nnn XX ) \cC ( C ) . \C C C \\ \ \" " . . (') . $SG_NAME=SG1 $INST=low $USER=user notify_master "/etc/keepalived/notify_event.sh ' spaces\\x20f\x69le ' '\"s p a c e \"' ${SG_NAME}.$INST master" $USER group notify_master /etc/keepalived/notify_event.sh : user:group : ' spaces\x20file ', '"s p a c e "', 'SG1.low' and 'master' (CONFIGURATION PARSER) keepalived . . (TOP HIERARCHY) Keepalived . . : GLOBAL CONFIGURATION BFD CONFIGURATION VRRPD CONFIGURATION LVS CONFIGURATION (GLOBAL CONFIGURATION) : Global definitions Linkbeat interfaces Interface up/down transition delays Static track groups Static addresses Static routes Static rules (Global definitions) # keepalived # network namespace : # -- # network namespace . # /run/keepalived unshared # pid. # syslog NAME_ . # : namespace (reload) . net_namespace NAME # IPVS net namespace . # VIP namespace healthchecks # namespace . NAME namespace # . net_namespace_ipvs NAME # ipsets 3.13 network namespace # namespace # vrrp_ipsets ipsets . # ipsets namespace # 3.13 . namespace_with_ipsets # keepalived namespace # pid NAME # /run/keepalived . # : instance NAME # pid /run/keepalived use_pid_dir # (Poll) ETHTOOL MII ioctl # netlink . linkbeat_use_polling # . # . # (: 5) child_wait_time SECS : / keepalived SIGTERM . / SIGTERM / SIGTERM . # global_defs { # # # ( ()memfd_create /tmp/). # # tmp_config_directory # keepalived . # reload . tmp_config_directory DIRECTORY # config_save_dir keepalived # reload . # reload . # . config_save_dir DIRECTORY # keepalived : # keepalived, keepalived_vrrp, keepalived_ipvs, keepalived_bfd process_names # process_name NAME vrrp_process_name NAME checker_process_name NAME bfd_process_name NAME # keepalived (symlinks) . # symlink use_symlink_paths . use_symlink_paths [] # startup shutdown keepalived # keepalived . # keepalived IPVS # (firewall marks) # ( ) . # iptables iptables # ( vrrp_iptables ) # . # startup shutdown . # ( 10 ) # (kill) ( keepalived # ). startup_script SCRIPT_NAME [username [groupname]] startup_script_timeout SECONDS # [1,1000] shutdown_script SCRIPT_NAME [username [groupname]] shutdown_script_timeout SECONDS # [1,1000] # (:To) . # (") . notification_email { admin@example1.com "My admin " ... } # (from) ( # ). # (: keepalived@local_host_name) notification_email_from admin@example.com # SMTP . # IP . # ( : 25) smtp_server 127.0.0.1 [] # HELO. # (: ) smtp_helo_name # SMTP . smtp_connect_timeout 30 # smtp_alert smtp_alert # smtp_alert vrrp smtp_alert_vrrp # smtp_alert checker smtp_alert_checker # real server syslog # ( SMTP # real server DOWN ) checker_log_all_failures # smtp (fault) no_email_faults # ( ). # (: ) router_id # (Multicast Group) IPv4 VRRP # VRRP RFC5798 IANA 224.0.0.18 # . vrrp_mcast_group4 224.0.0.18 # IPv6 VRRP # (: ff02::12) vrrp_mcast_group6 ff02::12 # . # (: eth0) default_interface p33p1.3 # IPVS # master backup IPVS . # ipvsadm(8) . # : # inst VRRP_INSTANCE ( inst ) # syncid ( 0 255) lvs syncd VRID vrrp # vrrp 0 # maxlen ( 1 65507) ( mtu - 20 - 8 ) # port ( 1 65535) UDP 8848 # ttl ( 1 255) # group - (IPv4 IPv6) 224.0.0.81 # VRRP_INSTANCE keepalived # master backup master/backup # vrrp : vrrp master # master vrrp master # backup . # : maxlen port ttl group 4.3 . # IPVS # doc/Documentation/networking/ipvs-sysctl.txt . # *proc/net/ip_vs/ IPVS . lvs_sync_daemon [[inst] ] [id ] \ [maxlen ] [port ] [ttl ] [group ] # lvs_timeouts tcp tcp_fin udp # . # keepalived . lvs_timeouts [tcp SECS] [tcpfin SECS] [udp SECS] # (flush) LVS lvs_flush # LVS ( # RS VS ). # VS keepalived # real server ( ). lvs_flush_on_stop [VS] # ARP (gratuitous ARP) # MASTER. # (: 5) vrrp_garp_master_repeat 1 # ARP MASTER. # 0 . # (: 5) vrrp_garp_master_delay 10 # ARP # MASTER. # (: vrrp_garp_master_repeat) vrrp_garp_lower_prio_repeat 1 # ARP # MASTER. # (: vrrp_garp_master_delay) vrrp_garp_lower_prio_delay 10 # ARP MASTER. # ( ). # (: 0 ( )) vrrp_garp_master_refresh 60 # ARP MASTER # (: 1) vrrp_garp_master_refresh_repeat 2 # ARP # ( ). # (: 0) vrrp_garp_interval 0.001 # (unsolicited NA) # ( ). # (: 0) vrrp_gna_interval 0.000001 # keepalived 5 ARP/NA # MASTER 5 5 . # vrrp_min_garp # ARP/NA 5 . vrrp_min_garp [] # GARP/NA VIP/eVIP # VRRP MAC # ( ). # 300 # garp . 1 (86400 ) # VMAC all # GARP/NA VRRP . vrrp_garp_extra_if [all] 100 # down_timer_adverts vrrp. vrrp_down_timer_adverts [1:100] # . # RFC RFC9568 . # false strict_mode . vrrp_lower_prio_no_advert [] # master backup # ( master ) . master # garp_lower_priority_repeat garp . # master GARP . vrrp_higher_prio_send_advert [] # VRRP # (: 2 IPv6 3 ) vrrp_version <2 or 3> # V3_checksum_as_V2 vrrp_instance v3_checksum_as_v2 [] # keepalived (nftables iptables) : # 1) no_accept # 2) IGMP/MLD/Router-Solicit VMAC # IGMP/MLD (underlying). # vrrp_iptables vrrp_nftables keepalived nftables iptables. # iptables nftables iptables # keepalived iptables nftables . # vrrp_nftables vrrp_iptables VMAC # no_accept keepalived nftables . # nftables . # TABLENAME keepalived # network namespace . # keepalived 1- . # keepalived . # counters ( ). # ifindex IPv6 link local ifindex ifnames. # vrrp_instance dont_track_primary . # nft # v0.8.3 . nftables [TABLENAME] nftables_priority PRIORITY nftables_counters nftables_ifindex # IPVS iptables - fwmark # . keepalived fwmark # IPVS ( fwmark) # nftables fwmark // # . # nftables_ipvs_start_fwmark fwmark keepalived # ( 1000). . nftables_ipvs [TABLENAME] nftables_ipvs_priority PRIORITY nftables_ipvs_start_fwmark NUMBER # iptables . # : iptables / ip6tables # iptables . # ESTABLISHED,RELATED # IPv4 VIP . # : INPUT OUTPUT # # iptables . # keepalived # keepalived . # startup_script ( ) # . shutdown_script iptables startup_script . # 2: ipsets VIP iptables # ipsets VIP . # IGMP . # (: INPUT) vrrp_iptables keepalived # # : IPv4 VIP # . IPv6 (deprecated) . vrrp_iptables keepalived_in keepalived_out # (INPUT OUTPUT) vrrp_iptables # Keepalived ipsets iptables . # ipset . # ipsets # "if_" / "6" igmp/_mld/_nd_ . vrrp_ipsets [keepalived [keepalived6 [keepalived_if6 [keepalived_igmp [keepalived_mld [keepalived_vmac_nd]]]]]] # IGMP VMAC # igmp_link_local_mcast_reports false . # IGMP join 224.0.0.0/24 # (forward) (RFC4541 ). # 4.3 . disable_local_igmp # unicast # VRRP unicast peer . vrrp_check_unicast_src # VRRP . # master # . # (: ) vrrp_skip_check_adv_addr # VRRP. . # : # 0 VIP # unicast peer # IPv6 2 VRRP # VIP IPv6 link local # MASTER 255 # # Preempt # Accept VRRPv2 # accept/no accept 255 accept # # ARP # lower_prio_no_advert # higher_prio_send_advert # vmac_xmit_base # VIP VRRPv3 # 255 vrrp_strict # vrrp FIFO notify. vrrp_notify_priority_changes # vrrp checker bfd # (timeout) . # vrrp (backup) master master # master backup vrrp . # -- # keepalived # realtime # realtime . # realtime # RLIMIT_RTTIME # {bfd,checker,vrrp}_rlimit_rttime ( ) . # . # -- # # (0 . -1 # ). . max_auto_priority [<-1 to 99>] # 99 sched_get_priority_max(SCHED_RR) # keepalived # # ( 1000000 ( ) 10000000 ( ) ) min_auto_priority_delay # vrrp ( ) vrrp_priority <-20 to 19> # checker checker_priority <-20 to 19> # BFD bfd_priority <-20 to 19> # swap vrrp vrrp_no_swap # swap checker checker_no_swap # swap BFD bfd_no_swap # vrrp checker bfd # . # CPU # CPU . # CPU . CPU # . # INTEGER cpu_id # /proc/cpuinfo "processor:" # -- # (CPU Affinity) vrrp vrrp_cpu_affinity []...[] # (CPU Affinity) checker checker_cpu_affinity []...[] # (CPU Affinity) bfd bfd_cpu_affinity []...[] # vrrp (real-time) # vrrp_rt_priority <1..99> # checker (real-time) # checker_rt_priority <1..99> # BFD (real-time) # bfd_rt_priority <1..99> # CPU # # (: 10000) vrrp_rlimit_rttime >=2 checker_rlimit_rttime >=2 bfd_rlimit_rttime >=2 # Keepalived SNMP # . # : Keepalived checker RFC # / # -- # (master agent) SNMP # ( keepalived/vrrp/vrrp_snmp.c ) # (: unix:/var/agentx/master) snmp_socket udp:1.2.3.4:705 # SNMP vrrp KEEPALIVED MIB enable_snmp_vrrp # SNMP checker KEEPALIVED MIB enable_snmp_checker # SNMP MIB VRRP RFC2787 RFC6527 enable_snmp_rfc # SNMP MIB RFC2787 VRRP enable_snmp_rfcv2 # SNMP MIB RFC6527 VRRP enable_snmp_rfcv3 # (traps) SNMP enable_traps # SNMP checker # # ( ) . # 0.001 ( ) . snmp_vs_stats_update_interval # snmp_vs_stats_update_interval . # SNMP # . snmp_rs_stats_update_interval # Keepalived DBus # . # -- # DBus enable_dbus # DBus # keepalived DBus # (: org.keepalived.Vrrp1) dbus_service_name SERVICE_NAME # DBus VRRP # "none" ! # (: "none") dbus_no_interface_name NAME # username/groupname . # keepalived_script # uid/gid keepalived . # groupname . script_user username [groupname] # root # root . script_user # keepalived_script keepalived ( root) # . enable_script_security # notify fifo # notify # . # : FIFO # -- # FIFO notify # vrrp_notify_fifo lvs_notify_fifo # vrrp_sync_group . # doc/samples/sample_notify_fifo.sh . notify_fifo FIFO_NAME [username [groupname]] # keepalived notify # FIFO notify_fifo_script STRING|QUOTED-STRING [username [groupname]] # FIFO notify vrrp . # : INSTANCE "VI_1" MASTER 100 # . # vrrp_sync_group # doc/samples/sample_notify_fifo.sh . vrrp_notify_fifo FIFO_NAME [username [groupname]] # keepalived notify vrrp # FIFO vrrp_notify_fifo_script STRING|QUOTED-STRING [username [groupname]] # FIFO notify healthchecker # : # VS [192.168.201.15]:tcp:80 {UP|DOWN} # RS [1.2.3.4]:tcp:80 [192.168.201.15]:tcp:80 {UP|DOWN} # . lvs_notify_fifo FIFO_NAME [username [groupname]] # keepalived notify healthchecker # FIFO lvs_notify_fifo_script STRING|QUOTED-STRING [username [groupname]] # (reload) keepalived vrrp # FIFO . # keepalived FIFO() . fifo_write_vrrp_states_on_reload # . # keepalived # VMAC . # allow_if_changes # vlan macvlan macvlan eth1 eth2. # allow_if_changes VRID . dynamic_interfaces [allow_if_changes] # # keepalived # . # "Netlink: Receive buffer overrun" . # /proc/sys/net/core/rmem_max # force . # -- # netlink. # # netlink . vrrp_netlink_cmd_rcv_bufs BYTES vrrp_netlink_cmd_rcv_bufs_force vrrp_netlink_monitor_rcv_bufs BYTES vrrp_netlink_monitor_rcv_bufs_force # netlink vrrp # checker . # force SO_RCVBUFFORCE # /proc/sys/net/core/rmem_max . lvs_netlink_cmd_rcv_bufs BYTES lvs_netlink_cmd_rcv_bufs_force lvs_netlink_monitor_rcv_bufs BYTES lvs_netlink_monitor_rcv_bufs_force # process_monitor_rcv_bufs # 212992 ( ) # 500000 . process_monitor_rcv_bufs BYTES process_monitor_rcv_bufs_force # rx # /proc/sys/net/core/rmem_default . # . # keepalived # rmem_default # keepalived . # vrrp_rx_bufs_policy rx # . MTU rx # MTU * vrrp_rx_bufs_multiplier vrrp # . ADVERT # advert vrrp * multiplier . # (: ) vrrp_rx_bufs_policy [MTU|ADVERT|NUMBER] # (: 3) vrrp_rx_bufs_multiplier NUMBER # rs_init_notifies # (checker) # no_checker_emails # umask . (octal) # (decimal) . BITS I{R|W|X}{USR|GRP|OTH} IRGRP '|' . # IRWX{U|G|O} . # umask IXUSR | IRWXG | IRWXO . # . umask [NUMBER|BITS] # bond # . # keepalived # bond (adverts) # master . # vrrp keepalived . # vrrp_delay_after_boot . vrrp_startup_delay 5.5 # vrrp_startup_delay # vrrp_delay_after_boot . vrrp # . # keepalived VRRP # keepalived # . keepalived # vrrp_startup_delay vrrp_delay_after_boot . vrrp_delay_after_boot 15.23 # VRRP VRID # . log_unknown_vrids # VMAC ( "vrrp") vmac_prefix STRING # VMAC VIP VMAC # VRRP ( vmac_prefix) vmac_addr_prefix STRING # (random seed) ${_RANDOM} ( # # ). random_seed UNSIGNED_INT # # keepalived # . reload_check_config keepalived # # . reload_check_config [LOG_FILE] # include . OPTIONS : # readable - # match - ( ) # wildcard_match - ( ) # brace_match - (brace expansion) # : match wildcard_match brace_match readable . # include_check include # . include_check # include . include # include_check ( /etc/keepalived/keepalived.conf) . # : glob() libc GLOB_ALTDIRFUNC ( Musl libc # Alpine Linux ) readable wildcard_match . # '+' # '-' . : # include_check +match -wildcard_match # wildcard . # . include_check [OPTIONS] # reload_time_file keepalived . # (master) keepalived (backup) # VIP . # # . # keepalived . # / . # keepalived # . # . # . . # # . # # . # (unlink) . reload_repeat # keepalived # . # / # # (SIGHUP) keepalived . # : # HH:MM:SS # YY-MM-DD HH:MM:SS # YYYY-MM-DD HH:MM:SS # 'Z' . # (whitespace) # . # 'Z' UTC # (localtime) keepalived . # UTC . # (daylight savings) # . reload_time_file ABSOLUTE-PATHNAME-OF-FILE reload_repeat # keepalived . reload_file # # keepalived . # reload keepalived # . (truncated) . # keepalived reload . # reload_file keepalived.reload # PID . # reload reload # reload keepalived (touch) # keepalived . # keepalived reload # reload_file # reload_file . reload_file [ABSOLUTE-PATHNAME-OF-FILE] # SIGUSR1 keepalived # (dump) # . .data # . # keepalived_parent.data keepalived.data # keepalived_check.data keepalived_bfd.data . # keepalived . # data_use_instance (network namespace) # .data . # SIGUSR2 . data_use_instance [] # SIGUSR1 SIGUSR2 # keepalived . # tmpfs # # . # path / # # . data_use_instance . # checker "_checker" # BFD "_bfd" "_parent" . state_file_location path stats_file_location path json_file_location path # json_version 2 VRRP # track_process . 1 . json_version {1|2} # iproute # /etc/iproute2 /usr/share/iproute2 . # ip ( ip route ) configure # . configure keepalived # ip-route ip . # . iproute_usr_dir path iproute_etc_dir path } Linkbeat (Linkbeat interfaces) linkbeat_interfaces netlink (polling) MII Ethtool ioctl . linkbeat_use_polling . linkbeat_use_polling vrrp_instance linkbeat vrrp_instance track_interface virtual_ipaddresses virtual_iproutes linkbeat . MII ETHTOOL ioctl . MII ETHTOOL IOCTL . linkbeat_interfaces : linkbeat_interfaces { eth2 enp2s0 ETHTOOL } (Static track groups) vrrp . // track group // vrrp fault . track group : track_group GROUP1 { group { VI_1 VI_2 } } // (Static routes/addresses/rules) Keepalived . vrrpd NOT () . IP ping . ip rule add/ip route add ( ). track_group track_group vrrp vrrp backup . : (preference) vrrp master backup preference . preference keepalived . . dev default_interface ( eth0) . : broadcast '-' '+' . IPv4 IPv6 IPv4 . / IPv6 "inet6" . keepalived (prepend ) ( ( ) 'ip route prepend' ). 'add' 'ip route add' . 'append' 'ip route append' . : IPv4 IPv6 proto IPv4 / IPv6 . 'ip route add/prepend/append' . static_ipaddress { [/] [brd ] [dev ] [scope ] [label