From 8ede380f1d4d702bf29ea31e6f66dafd8518c759 Mon Sep 17 00:00:00 2001 From: Sam Yaple Date: Wed, 5 Aug 2015 11:10:53 +0000 Subject: [PATCH] Add check_script for haproxy in keepalived This patch checks that haproxy is alive and running. It does this by using socat to talk to the haproxy socket. That socket will only respond successfully when haproxy is active and functional. Change-Id: I528588d5742071103c28109a69842a6f935232c2 Closes-Bug: #1478570 --- ansible/roles/haproxy/tasks/start.yml | 2 ++ ansible/roles/haproxy/templates/haproxy.cfg.j2 | 2 +- ansible/roles/haproxy/templates/keepalived.conf.j2 | 3 ++- docker/common/keepalived/check_alive.sh | 7 +++---- 4 files changed, 8 insertions(+), 6 deletions(-) diff --git a/ansible/roles/haproxy/tasks/start.yml b/ansible/roles/haproxy/tasks/start.yml index cda6c0cf3c..ca71509155 100755 --- a/ansible/roles/haproxy/tasks/start.yml +++ b/ansible/roles/haproxy/tasks/start.yml @@ -6,6 +6,7 @@ container_privileged: "True" container_volumes: - "{{ node_config_directory }}/keepalived/:/opt/kolla/keepalived/:ro" + - "/run:/run" container_environment: KOLLA_CONFIG_STRATEGY: "{{ config_strategy }}" @@ -15,6 +16,7 @@ container_name: "haproxy" container_volumes: - "{{ node_config_directory }}/haproxy/:/opt/kolla/haproxy/:ro" + - "/run:/run" container_environment: KOLLA_CONFIG_STRATEGY: "{{ config_strategy }}" diff --git a/ansible/roles/haproxy/templates/haproxy.cfg.j2 b/ansible/roles/haproxy/templates/haproxy.cfg.j2 index 8fc65de148..11a3340990 100755 --- a/ansible/roles/haproxy/templates/haproxy.cfg.j2 +++ b/ansible/roles/haproxy/templates/haproxy.cfg.j2 @@ -1,10 +1,10 @@ global daemon maxconn 4000 + stats socket /run/haproxy.sock defaults mode http - maxconn 4000 option redispatch retries 3 timeout http-request 10s diff --git a/ansible/roles/haproxy/templates/keepalived.conf.j2 b/ansible/roles/haproxy/templates/keepalived.conf.j2 index e2c37dab5d..baba1fda69 100644 --- a/ansible/roles/haproxy/templates/keepalived.conf.j2 +++ b/ansible/roles/haproxy/templates/keepalived.conf.j2 @@ -1,7 +1,8 @@ vrrp_script check_alive { script "/check_alive.sh" interval 2 - weight -10 + fall 2 + rise 10 } vrrp_instance Floating { diff --git a/docker/common/keepalived/check_alive.sh b/docker/common/keepalived/check_alive.sh index ee0c5a85b6..8c2684f10b 100755 --- a/docker/common/keepalived/check_alive.sh +++ b/docker/common/keepalived/check_alive.sh @@ -1,7 +1,6 @@ #!/bin/bash -# This is noop check script. Change it to something meaningful. -# TODO (inc0): When HAProxy is implemented, this should be changed to HAProxy check -# https://github.com/stackforge/kolla/blob/master/specs/high-availability.rst +# This will return 0 when it successfully talks to the haproxy daemon via the socket +# Failures return 1 -exit 0 +echo "show info" | socat unix-connect:/run/haproxy.sock stdio