Проверка работоспособности HAproxy - PullRequest
0 голосов
/ 01 мая 2018

Я использую реверпрокси NGINX на 3 серверах для защиты приложения паролем. nginx содержит порт 80 на сервере, а приложение работает на локальном порту x. nginx fwds запрашивает порт x от клиента, который обращается к vip: vipport.

У меня есть vip на сервере 1, который хранится на keepalived, а haproxy выполняет проверку LB и работоспособности по порту 80 на всех 3 серверах. Я смотрю на интерфейс, и удаление приложения не приводит к тому, что строка сервера становится красной, так как порт nginx все еще работает ... Есть ли способ для ha точно представить отключение порта приложения?

#---------------------------------------------------------------------
# Example configuration for a possible web application.  See the
# full configuration options online.
#
#   http://haproxy.1wt.eu/download/1.4/doc/configuration.txt
#
#---------------------------------------------------------------------

#---------------------------------------------------------------------
# Global settings
#---------------------------------------------------------------------
global


    log         127.0.0.1 local0 notice         # only send important events

    chroot      /var/lib/haproxy.app
    pidfile     /var/run/haproxy.app.pid
    user        haproxy
    group       users
    daemon

    # turn on stats unix socket
    stats socket /var/lib/haproxy.elasticsearch/stats level admin

#---------------------------------------------------------------------
# common defaults that all the 'listen' and 'backend' sections will
# use if not designated in their block
#---------------------------------------------------------------------
defaults
    mode                    tcp
    log                     global
    option                  tcplog
    option                  dontlognull

    timeout connect         4s
    timeout server          30s
    timeout client          30s

    timeout http-request    10s
    timeout queue           30s
    timeout http-keep-alive 5s
    timeout check           5s
    maxconn                 10000

frontend front
        mode tcp
        bind ipin:vipport
        default_backend back


backend back
        balance leastconn
        source ipin
        #balance roundrobin
        #option ssl-hello-chk
        stick-table type ip size 200k expire 60m
        stick on src

        server server3 ip:80 check
        server server2 ip:80 check
        server server1 ip:80 check

listen stats
        bind *:99
        mode http
        stats enable
        stats uri /

1 Ответ

0 голосов
/ 24 мая 2018

Я полагаю, у вас есть отдельный маршрут проверки работоспособности на сервере приложений, и вы периодически нажимаете этот маршрут, а не просто проверяете, работает ли порт. Это поможет вам контролировать реальный порт приложения вместо NGINX.

В HAProxy этого можно достичь, внедрив простой скрипт Lua, который достигает конечной точки, проверяет состояние и на его основе помечает, если сервер работает.

Вы сможете найти несколько примеров сценариев Lua для HAProxy здесь .

...