Public | Automated Build

Last pushed: a year ago
Short Description
Keepalived manage virtual ip between servers.
Full Description

DOCKER KEEPALIVED

Keepalived manage virtual ip between servers.
Containers health can be checked to keep the virtual ip on the node.

Pre-requisites

Kernel module : ip_vs on the nodes - modprob ip_vs

Available Versions

  • 1.2 (docker tags: 1.2, latest) : works only on docker host debian jessie and ubuntu trusty
  • 1.2-dockerinside (docker tags: 1.2-dockerinside-1.10, 1.2-dockerinside-1.11)

Environment variables

  • VIRTUAL_IP: VIP, by default 192.168.254.254/32
  • VIRTUAL_ROUTER_ID: must be the same in all nodes
  • INTERFACE: interface to set virtual IP
  • PRIORITY: 101 on master, 100 on backups
  • PASSWORD: Need the same on all nodes
  • CONTAINERS_TO_CHECK: containers name list to check health, separated by single space
  • CHECK_FALL: require X failures for KO
  • CHECK_RISE: require X successes for OK
  • CHECK_CREATION: if true, please define the $SWARM_ADDR, $SWARM_CERTS and $CHECK_HEALTH_IMAGE
  • CHECK_HEALTH_IMAGE: if $CHECK_CREATION, image to use to create a container every $CHECK_INTERVAL
  • SWARM_ADDR: default to 127.0.0.1:4000
  • SWARM_CERTS: The path to Swarm certificats (ca.pem, cert.pem, key.pem), by default /root/.docker/
  • CHECK_INTERVAL: Check health of $CONTAINERS_TO_CHECK,$CHECK_CREATION) every $CHECK_INTERVAL seconds, by default 5s
  • ENABLE_LB: Enable Load balancer config, if true, please define $REAL_IP, $REAL_PORTS, $LB_ALGO and $LB_KIND
  • VIRTUAL_IP_LB: IP for LB; This IP will be shared by all the nodes, by default 192.168.254.253/32
  • REAL_IP: Real address of the Backend Nodes separated by single space
  • REAL_PORTS: Real ports exposed on hosts separated by single space to LoadBalancing
  • LB_ALGO: LoadBalancing Algotythm
  • LB_KIND: LoadBalancing Method

Usage

Without docker inside

docker run -d --name keepalived --restart=always --net=host --cap-add=NET_ADMIN \
    -e VIRTUAL_IP='1.1.1.1' \
    -e VIRTUAL_ROUTER_ID='51' \
    -e INTERFACE='eth0' \
    -e PRIORITY='100' \
    -e PASSWORD=topsecret \
    -e CONTAINERS_TO_CHECK="container_name_1 container_name_2" \
    -e CHECK_FALL='1' \
    -e CHECK_RISE='1' \
    -e CHECK_CREATION='true' \
    -e CHECK_HEALTH_IMAGE='alpine' \
    -e SWARM_ADDR='127.0.0.1:4000' \
    -e SWARM_CERTS='/root/.docker/' \
    -e CHECK_INTERVAL='7' \
    -e ENABLE_LB='true' \
    -e VIRTUAL_IP_LB='1.1.1.2' \
    -e REAL_IP="1.1.1.30 1.1.1.31 1.1.1.32" \
    -e REAL_PORTS='80 443' \
    -e LB_ALGO='lblcr' \
    -e LB_KIND='DR' \
    -v /var/run/docker.sock:/var/run/docker.sock \
    -v /usr/bin/docker:/usr/bin/docker \
    -v /usr/lib/x86_64-linux-gnu/:/usr/lib/x86_64-linux-gnu/:ro \
    -v /lib/x86_64-linux-gnu:/lib/x86_64-linux-gnu \
    -v /root/.docker:/root/.docker \
    alterway/keepalived:1.2

With docker inside

docker run -d --name keepalived --restart=always --net=host --cap-add=NET_ADMIN \
    -e VIRTUAL_IP='1.1.1.1' \
    -e VIRTUAL_ROUTER_ID='51' \
    -e INTERFACE='eth0' \
    -e PRIORITY='100' \
    -e PASSWORD=topsecret \
    -e CONTAINERS_TO_CHECK="container_name_1 container_name_2" \
    -e CHECK_FALL='1' \
    -e CHECK_RISE='1' \
    -e CHECK_CREATION='true' \
    -e CHECK_HEALTH_IMAGE='alpine' \
    -e SWARM_ADDR='127.0.0.1:4000' \
    -e SWARM_CERTS='/root/.docker/' \
    -e CHECK_INTERVAL='7' \
    -e ENABLE_LB='true' \
    -e VIRTUAL_IP_LB='1.1.1.2' \
    -e REAL_IP="1.1.1.30 1.1.1.31 1.1.1.32" \
    -e REAL_PORTS='80 443' \
    -e LB_ALGO='lblcr' \
    -e LB_KIND='DR' \
    -v /var/run/docker.sock:/var/run/docker.sock \
    -v /root/.docker:/root/.docker \
    alterway/keepalived:1.2

Contributors

License

View LICENSE for the software contained in this image.

Docker Pull Command
Owner
alterway
Source Repository

Comments (1)
xiaoheispring38
2 months ago

run the docker image ,I give some error:

ipvs: Permission denied (you must be root)
Healthcheck child process(18973) died: Respawning
Keepalived[15]: Healthcheck child process(18973) died: Respawning
Starting Healthcheck child process, pid=18975
Keepalived[15]: Starting Healthcheck child process, pid=18975
Initializing ipvs 2.6
Keepalived_healthcheckers[18975]: Initializing ipvs 2.6
IPVS: Can't initialize ipvs: Permission denied (you must be root)
Keepalived_healthcheckers[18975]: IPVS: Can't initialize ipvs: Permission denied (you must be root)
Healthcheck child process(18975) died: Respawning
Keepalived[15]: Healthcheck child process(18975) died: Respawning
Starting Healthcheck child process, pid=18977
Keepalived[15]: Starting Healthcheck child process, pid=18977
Initializing ipvs 2.6
Keepalived_healthcheckers[18977]: Initializing ipvs 2.6
IPVS: Can't initialize ipvs: Permission denied (you must be root)
Keepalived_healthcheckers[18977]: IPVS: Can't initialize ipvs: Permission denied (you must be root)
Healthcheck child process(18977) died: Respawning
Keepalived[15]: Healthcheck child process(18977) died: Respawning
Starting Healthcheck child process, pid=18979
Keepalived[15]: Starting Healthcheck child process, pid=18979
Initializing ipvs 2.6
Keepalived_healthcheckers[18979]: Initializing ipvs 2.6
IPVS: Can't initialize ipvs: Permission denied (you must be root)
Keepalived_healthcheckers[18979]: IPVS: Can't initialize ipvs: Permission denied (you must be root)
Healthcheck child process(18979) died: Respawning
Keepalived[15]: Healthcheck child process(18979) died: Respawning
Starting Healthcheck child process, pid=18981
Keepalived[15]: Starting Healthcheck child process, pid=18981
Initializing ipvs 2.6
Keepalived_healthcheckers[18981]: Initializing ipvs 2.6
IPVS: Can't initialize ipvs: Permission denied (you must be root)
Keepalived_healthcheckers[18981]: IPVS: Can't initialize ipvs: Permission denied (you must be root)
Healthcheck child process(18981) died: Respawning
Keepalived[15]: Healthcheck child process(18981) died: Respawning
Starting Healthcheck child process, pid=18983
Keepalived[15]: Starting Healthcheck child process, pid=18983
Initializing ipvs 2.6
Keepalived_healthcheckers[18983]: Initializing ipvs 2.6
IPVS: Can't initialize ipvs: Permission denied (you must be root)
Keepalived_healthcheckers[18983]: IPVS: Can't initialize ipvs: Permission denied (you must be root)
Healthcheck child process(18983) died: Respawning
Keepalived[15]: Healthcheck child process(18983) died: Respawning
Starting Healthcheck child process, pid=18985
Keepalived[15]: Starting Healthcheck child process, pid=18985
Initializing ipvs 2.6
Keepalived_healthcheckers[18985]: Initializing ipvs 2.6
IPVS: Can't initialize ipvs: Permission denied (you must be root)
Keepalived_healthcheckers[18985]: IPVS: Can't initialize ipvs: Permission denied (you must be root)
Healthcheck child process(18985) died: Respawning
Keepalived[15]: Healthcheck child process(18985) died: Respawning
Starting Healthcheck child process, pid=18987
Keepalived[15]: Starting Healthcheck child process, pid=18987
Initializing ipvs 2.6
Keepalived_healthcheckers[18987]: Initializing ipvs 2.6
IPVS: Can't initialize ipvs: Permission denied (you must be root)
2017-07-15T23:31:24.663548

how resolve