Skip to content

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

License

Notifications You must be signed in to change notification settings

alterway/docker-keepalived

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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.

About

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

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages