Такой сервер не найден при отключении 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
ошибка.