Такой сервер не найден при отключении HAproxy отключить сервер из кластера

Мой haproxy.cfg

global
    log 127.0.0.1 local0
    maxconn 20000
    user haproxy
    group haproxy
    stats socket /var/run/haproxy/haproxy.sock level admin
    stats timeout 2m
    listen admin
    bind *:8080
    stats enable

defaults
    log     global
    mode    http
    option  httplog
    option  dontlognull
    retries 3
    option redispatch
#    timeout http-request 5s
    timeout connect  5000
    timeout client  60000
    timeout server  60000

frontend http-in
   bind *:80
   default_backend monkey


backend monkey
    stats enable
    stats uri /haproxy?stats
    stats realm Strictly\ Private
    stats auth admin:hello
    stats auth Another_User:hi
    mode http
    compression algo gzip
    compression type text/html text/plain text/css application/json
    balance roundrobin
    option httpclose
    option forwardfor
    default-server inter 1s fall 1
    server        cd-test-1 1.2.3.4:80 check
    server        cd-test-2 5.6.7.8:80 check

Я использовал socat, чтобы отключить узел из кластера HAproxy. ниже команда

echo "disable server monkey/cd-test-1"| socat stdio /var/run/haproxy/haproxy.sock

Выше отключает мой узел от haproxy. Но если я использую IP-адрес (1.2.3.4) вместо "cd-test-1", он не возвращает такой сервер.

Я использую ansible для автоматизации этого. Я использую {{inventory_hostname}} и делегирую команду моему серверу HAproxy. Отсюда и проблема.

- name: Disable {{ inventory_hostname }} in haproxy and letting the services drain
    shell: echo "disable server monkey/{{inventory_hostname}}"| socat stdio /var/run/haproxy/haproxy.sock
    become_user: root
    delegate_to: "{{ item }}"
    with_items: groups.haproxy_backend

Это возвращает "Нет такого сервера". и движется вперед.

Может кто-нибудь, пожалуйста, помогите мне найти проблему с использованием IP вместо имени сервера. Может быть, делать что-то очень глупо. Любая помощь приветствуется.

1 ответ

Решение

При отключении и включении HAproxy с помощью socat необходимо указать псевдоним сервера.

В противном случае мы получим No such server ошибка.

Другие вопросы по тегам