Thanks to visit codestin.com
Credit goes to github.com

Skip to content

An example of keepalived usage demonstrated by Docker containers

Notifications You must be signed in to change notification settings

jimlinntu/keepalived

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

keepalived

This repo demonstrates the core functionality of Keepalived using docker-compose.

Prerequisite

  • docker version:
Client:
 Version:           18.09.8
 API version:       1.39
 Go version:        go1.10.8
 Git commit:        0dd43dd87f
 Built:             Wed Jul 17 17:41:19 2019
 OS/Arch:           linux/amd64
 Experimental:      false

Server: Docker Engine - Community
 Engine:
  Version:          18.09.8
  API version:      1.39 (minimum version 1.12)
  Go version:       go1.10.8
  Git commit:       0dd43dd
  Built:            Wed Jul 17 17:07:25 2019
  OS/Arch:          linux/amd64
  Experimental:     false
  • docker-compose version
docker-compose version 1.24.0, build 0aa59064
docker-py version: 3.7.2
CPython version: 3.6.8
OpenSSL version: OpenSSL 1.1.0j  20 Nov 2018

Get Started

  • docker-compose up -d
  • docker-compose logs m1:
Attaching to keepalived_m1_1
m1_1  | Mon Jan 11 03:48:32 2021: Starting Keepalived v2.0.19 (10/19,2019)
m1_1  | Keepalived[1]: Starting Keepalived v2.0.19 (10/19,2019)
m1_1  | Mon Jan 11 03:48:32 2021: WARNING - keepalived was build for newer Linux 5.4.18, running on Linux 4.15.0-122-generic #124-Ubuntu SMP Thu Oct 15 13:03:05 UTC 2020
m1_1  | Keepalived[1]: WARNING - keepalived was build for newer Linux 5.4.18, running on Linux 4.15.0-122-generic #124-Ubuntu SMP Thu Oct 15 13:03:05 UTC 2020
m1_1  | Mon Jan 11 03:48:32 2021: Command line: 'keepalived' '-l' '-n'
m1_1  | Keepalived[1]: Command line: 'keepalived' '-l' '-n'
m1_1  | Mon Jan 11 03:48:32 2021: Opening file '/etc/keepalived/keepalived.conf'.
m1_1  | Keepalived[1]: Opening file '/etc/keepalived/keepalived.conf'.
m1_1  | Mon Jan 11 03:48:32 2021: Starting VRRP child process, pid=8
m1_1  | Keepalived[1]: Starting VRRP child process, pid=8
m1_1  | Mon Jan 11 03:48:32 2021: Registering Kernel netlink reflector
m1_1  | Keepalived_vrrp[8]: Registering Kernel netlink reflector
m1_1  | Mon Jan 11 03:48:32 2021: Registering Kernel netlink command channel
m1_1  | Keepalived_vrrp[8]: Registering Kernel netlink command channel
m1_1  | Mon Jan 11 03:48:32 2021: Opening file '/etc/keepalived/keepalived.conf'.
m1_1  | Keepalived_vrrp[8]: Opening file '/etc/keepalived/keepalived.conf'.
m1_1  | Mon Jan 11 03:48:32 2021: Registering gratuitous ARP shared channel
m1_1  | Keepalived_vrrp[8]: Registering gratuitous ARP shared channel
m1_1  | Mon Jan 11 03:48:32 2021: (VRRP1) Entering BACKUP STATE (init)
m1_1  | Keepalived_vrrp[8]: (VRRP1) Entering BACKUP STATE (init)
m1_1  | Mon Jan 11 03:48:35 2021: (VRRP1) Entering MASTER STATE
m1_1  | Keepalived_vrrp[8]: (VRRP1) Entering MASTER STATE
  • docker-compose logs m2:
Attaching to keepalived_m2_1
m2_1  | Mon Jan 11 03:48:36 2021: Starting Keepalived v2.0.19 (10/19,2019)
m2_1  | Mon Jan 11 03:48:36 2021: WARNING - keepalived was build for newer Linux 5.4.18, running on Linux 4.15.0-122-generic #124-Ubuntu SMP Thu Oct 15 13:03:05 UTC 2020
m2_1  | Mon Jan 11 03:48:36 2021: Command line: 'keepalived' '-l' '-n'
m2_1  | Mon Jan 11 03:48:36 2021: Opening file '/etc/keepalived/keepalived.conf'.
m2_1  | Mon Jan 11 03:48:36 2021: Starting VRRP child process, pid=8
m2_1  | Mon Jan 11 03:48:36 2021: Registering Kernel netlink reflector
m2_1  | Mon Jan 11 03:48:36 2021: Registering Kernel netlink command channel
m2_1  | Mon Jan 11 03:48:36 2021: Opening file '/etc/keepalived/keepalived.conf'.
m2_1  | Mon Jan 11 03:48:36 2021: Registering gratuitous ARP shared channel
m2_1  | Mon Jan 11 03:48:36 2021: (VRRP1) Entering BACKUP STATE (init)
  • docker-compose exec m1 ip address:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
651: eth0@if652: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
    link/ether 02:42:ac:1f:ee:02 brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet 172.31.238.2/24 brd 172.31.238.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet 172.31.238.100/24 scope global secondary eth0
       valid_lft forever preferred_lft forever
  • docker-compose exec m1 ls -al I_am_master:
-rw------- 1 root root 0 Jan 11 03:48 I_am_master
  • docker-compose exec m2 ip address:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
653: eth0@if654: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
    link/ether 02:42:ac:1f:ee:03 brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet 172.31.238.3/24 brd 172.31.238.255 scope global eth0
       valid_lft forever preferred_lft forever
  • docker-compose exec m2 ls -al I_am_backup
-rw------- 1 root root 0 Jan 11 03:48 I_am_backup
  • docker-compose stop m1:
Stopping keepalived_m1_1 ... done
  • docker-compose exec m2 ip address:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
653: eth0@if654: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
    link/ether 02:42:ac:1f:ee:03 brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet 172.31.238.3/24 brd 172.31.238.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet 172.31.238.100/24 scope global secondary eth0
       valid_lft forever preferred_lft forever
  • docker-compose exec m2 ls -al I_am_master
-rw------- 1 root root 0 Jan 11 03:56 I_am_master
  • docker-compose logs m2
Attaching to keepalived_m2_1
m2_1  | Mon Jan 11 03:48:36 2021: Starting Keepalived v2.0.19 (10/19,2019)
m2_1  | Mon Jan 11 03:48:36 2021: WARNING - keepalived was build for newer Linux 5.4.18, running on Linux 4.15.0-122-generic #124-Ubuntu SMP Thu Oct 15 13:03:05 UTC 2020
m2_1  | Mon Jan 11 03:48:36 2021: Command line: 'keepalived' '-l' '-n'
m2_1  | Mon Jan 11 03:48:36 2021: Opening file '/etc/keepalived/keepalived.conf'.
m2_1  | Mon Jan 11 03:48:36 2021: Starting VRRP child process, pid=8
m2_1  | Mon Jan 11 03:48:36 2021: Registering Kernel netlink reflector
m2_1  | Mon Jan 11 03:48:36 2021: Registering Kernel netlink command channel
m2_1  | Mon Jan 11 03:48:36 2021: Opening file '/etc/keepalived/keepalived.conf'.
m2_1  | Mon Jan 11 03:48:36 2021: Registering gratuitous ARP shared channel
m2_1  | Mon Jan 11 03:48:36 2021: (VRRP1) Entering BACKUP STATE (init)
m2_1  | Mon Jan 11 03:56:18 2021: (VRRP1) Backup received priority 0 advertisement
m2_1  | Mon Jan 11 03:56:19 2021: (VRRP1) Entering MASTER STATE

Troubleshooting

  • I personally found that when using ubuntu:18.04 default keepalived of version v1.3.9, sending SIGTERM to the top parent will not successfully forwards the SIGTERM signal to its children and grandchildren. After updating to v2.0.19 , it will behave as its manual specifys.
    • older version:
      keepalived --version
      Keepalived v1.3.9 (10/21,2017)
      
      Copyright(C) 2001-2017 Alexandre Cassen, <[email protected]>
      
      Build options:  PIPE2 IPV4_DEVCONF LIBNL3 RTA_ENCAP RTA_EXPIRES RTA_NEWDST RTA_PREF RTA_VIA FRA_OIFNAME FRA_SUPPRESS_PREFIXLEN FRA_SUPPRESS_IFGROUP FRA_TUN_ID RTAX_CC_ALGO RTAX_QUICKACK FRA_UID_RANGE LWTUNNEL_ENCAP_MPLS LWTUNNEL_ENCAP_ILA LIBIPTC LIBIPSET_DYNAMIC LVS LIBIPVS_NETLINK IPVS_DEST_ATTR_ADDR_FAMILY IPVS_SYNCD_ATTRIBUTES IPVS_64BIT_STATS VRRP VRRP_AUTH VRRP_VMAC SOCK_NONBLOCK SOCK_CLOEXEC GLOB_BRACE OLD_CHKSUM_COMPAT FIB_ROUTING INET6_ADDR_GEN_MODE SNMP_V3_FOR_V2 SNMP SNMP_KEEPALIVED SNMP_CHECKER SNMP_RFC SNMP_RFCV2 SNMP_RFCV3 DBUS SO_MARK
      
    • Newer version (after updating to ubuntu:20.04:
      keepalived --version
      Keepalived v2.0.19 (10/19,2019)
      
      Copyright(C) 2001-2019 Alexandre Cassen, <[email protected]>
      
      Built with kernel headers for Linux 5.4.18
      Running on Linux 4.15.0-122-generic #124-Ubuntu SMP Thu Oct 15 13:03:05 UTC 2020
      
      configure options: --build=x86_64-linux-gnu --prefix=/usr --includedir=${prefix}/include --mandir=${prefix}/share/man --infodir=${prefix}/share/info --sysconfdir=/etc --localstatedir=/var --disable-silent-rules --libdir=${prefix}/lib/x86_64-linux-gnu --runstatedir=/run --disable-maintainer-mode --disable-dependency-tracking --with-kernel-dir=debian/ --enable-snmp --enable-sha1 --enable-snmp-rfcv2 --enable-snmp-rfcv3 --enable-dbus --enable-json --enable-bfd --enable-regex build_alias=x86_64-linux-gnu CFLAGS=-g -O2 -fdebug-prefix-map=/build/keepalived-sJIe_4/keepalived-2.0.19=. -fstack-protector-strong -Wformat -Werror=format-security LDFLAGS=-Wl,-Bsymbolic-functions -Wl,-z,relro CPPFLAGS=-Wdate-time -D_FORTIFY_SOURCE=2
      
      Config options:  NFTABLES LVS REGEX VRRP VRRP_AUTH JSON BFD OLD_CHKSUM_COMPAT FIB_ROUTING SNMP_V3_FOR_V2 SNMP_VRRP SNMP_CHECKER SNMP_RFCV2 SNMP_RFCV3 DBUS
      
      System options:  PIPE2 SIGNALFD INOTIFY_INIT1 VSYSLOG EPOLL_CREATE1 IPV4_DEVCONF IPV6_ADVANCED_API LIBNL3 RTA_ENCAP RTA_EXPIRES RTA_NEWDST RTA_PREF FRA_SUPPRESS_PREFIXLEN FRA_SUPPRESS_IFGROUP FRA_TUN_ID RTAX_CC_ALGO RTAX_QUICKACK RTEXT_FILTER_SKIP_STATS FRA_L3MDEV FRA_UID_RANGE RTAX_FASTOPEN_NO_COOKIE RTA_VIA FRA_OIFNAME FRA_PROTOCOL FRA_IP_PROTO FRA_SPORT_RANGE FRA_DPORT_RANGE RTA_TTL_PROPAGATE IFA_FLAGS IP_MULTICAST_ALL LWTUNNEL_ENCAP_MPLS LWTUNNEL_ENCAP_ILA NET_LINUX_IF_H_COLLISION LIBIPVS_NETLINK IPVS_DEST_ATTR_ADDR_FAMILY IPVS_SYNCD_ATTRIBUTES IPVS_64BIT_STATS IPVS_TUN_TYPE IPVS_TUN_CSUM IPVS_TUN_GRE VRRP_VMAC VRRP_IPVLAN IFLA_LINK_NETNSID CN_PROC SOCK_NONBLOCK SOCK_CLOEXEC O_PATH GLOB_BRACE INET6_ADDR_GEN_MODE VRF SO_MARK SCHED_RT SCHED_RESET_ON_FORK
      

References

About

An example of keepalived usage demonstrated by Docker containers

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published