Haproxy для galera cluster

Автор Hemul, 03 мая 2020, 10:59:08

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

Hemul

Доброго дня!
Имеется рабочий галера кластер из 2х нод. Соединяется внутри себя через ssl.
Захотелось к нему добавить haproxy для распределения нагрузки. В документации всё легко и просто. И казалось бы проблем быть не должно. Но, почему-то при старте haproxy постоянно пишет ошибки в лог.
Цитировать
May  3 10:30:59 SUnHaMaria haproxy-systemd-wrapper[618]: haproxy-systemd-wrapper: SIGTERM -> 620.
May  3 10:30:59 SUnHaMaria haproxy-systemd-wrapper[618]: haproxy-systemd-wrapper: exit, haproxy RC=0
May  3 10:30:59 SUnHaMaria haproxy-systemd-wrapper[928]: haproxy-systemd-wrapper: executing /usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid -Ds
May  3 10:30:59 SUnHaMaria haproxy-systemd-wrapper[928]: [WARNING] 123/103059 (929) : parsing [/etc/haproxy/haproxy.cfg:27]: 'option httplog' overrides previous 'log-format' in 'defaults' section.

May  3 10:30:59 SUnHaMaria haproxy[929]: Proxy galera_cluster_frontend started.
May  3 10:30:59 SUnHaMaria haproxy[929]: Proxy galera_cluster_frontend started.
May  3 10:30:59 SUnHaMaria haproxy[929]: Proxy galera_cluster_backend started.
May  3 10:30:59 SUnHaMaria haproxy[929]: Proxy galera_cluster_backend started.
May  3 10:30:59 SUnHaMaria haproxy[930]: Server galera_cluster_backend/SUnMariaP is DOWN, reason: Layer7 invalid response, info: "k", check duration: 0ms. 1 active and 0 backup servers left. 0 sessions active, 0 requeued, 0 remaining in queue.
May  3 10:30:59 SUnHaMaria haproxy[930]: Server galera_cluster_backend/SUnMariaP is DOWN, reason: Layer7 invalid response, info: "k", check duration: 0ms. 1 active and 0 backup servers left. 0 sessions active, 0 requeued, 0 remaining in queue.
May  3 10:31:00 SUnHaMaria haproxy[930]: Server galera_cluster_backend/SUnMariaS is DOWN, reason: Layer4 connection problem, info: "Connection refused", check duration: 0ms. 0 active and 0 backup servers left. 0 sessions active, 0 requeued, 0 remaining in queue.
May  3 10:31:00 SUnHaMaria haproxy[930]: Server galera_cluster_backend/SUnMariaS is DOWN, reason: Layer4 connection problem, info: "Connection refused", check duration: 0ms. 0 active and 0 backup servers left. 0 sessions active, 0 requeued, 0 remaining in queue.
May  3 10:31:00 SUnHaMaria haproxy[930]: backend galera_cluster_backend has no server available!
May  3 10:31:00 SUnHaMaria haproxy[930]: backend galera_cluster_backend has no server available!
Конфиг наипростейший. Взят дефолтный и добавлено пара строк:

global
        log /dev/log    local0
        log /dev/log    local1 notice
        chroot /var/lib/haproxy
        stats socket /run/haproxy/admin.sock mode 660 level admin
        stats timeout 30s
        user haproxy
        group haproxy
        daemon

        # Default SSL material locations
        ca-base /etc/haproxy/ssl
        crt-base /etc/haproxy/ssl

        # Default ciphers to use on SSL-enabled listening sockets.
        # For more information, see ciphers(1SSL). This list is from:
        #  https://hynek.me/articles/hardening-your-web-servers-ssl-ciphers/
        # An alternative list with additional directives can be obtained from
        #  https://mozilla.github.io/server-side-tls/ssl-config-generator/?server=haproxy
        ssl-default-bind-ciphers ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:RSA+AESGCM:RSA+AES:!aNULL:!MD5:!DSS
        ssl-default-bind-options no-sslv3

defaults
        log     global
        log-format "%ci - - [%trg] \"%r\" %ST %B \"-\" \"-\""
        mode    http
        option  httplog
        option  dontlognull
        timeout connect 5000
        timeout client  50000
        timeout server  50000
        errorfile 400 /etc/haproxy/errors/400.http
        errorfile 403 /etc/haproxy/errors/403.http
        errorfile 408 /etc/haproxy/errors/408.http
        errorfile 500 /etc/haproxy/errors/500.http
        errorfile 502 /etc/haproxy/errors/502.http
        errorfile 503 /etc/haproxy/errors/503.http
        errorfile 504 /etc/haproxy/errors/504.http

# Galera Cluster Frontend configuration
frontend galera_cluster_frontend
    bind *:3306
    mode tcp
    option tcplog
    default_backend galera_cluster_backend

# Galera Cluster Backend configuration
backend galera_cluster_backend
    mode tcp
    option tcpka
    option mysql-check user haproxy
    balance leastconn
    option httpchk
    option allbackups

    server SUnMariaP 10.126.162.7:3306  check port 3306 weight 1
    server SUnMariaS 10.126.162.8:3306  check weight 1

При этом: с ноды haproxy пинг на обе ноды проходит нормально, можно подключиться mysql клиентом к базе данных на любой из нод пользователем haproxy. Telnet к любой ноде на порт 3306 подключается, ошибок не выдаёт.
Сервер mariadb в логах прописывает, что пользователь заходил. Ошибок никаких не выдаёт.
Из конфига всё вроде видно. Разве ещё стоит отметить, что в hosts всё прописано. Ip для haproxy 10.126.162.15
Возможно, проблемы в том, что и ноды (кластера) и сервер haproxy являются контейнерами под управлением proxmox 6.1.8.
Перерыл всё, что мог и варианты закончились. Если у кого-то есть хотя бы мысли в каком направлении рыть - буду признателен за советы.


Hemul

Жаль, что никто так и не пожелал помочь.
Проблема была в опции "check" после каждого сервера. Убираем её и всё взлетает.
Далее пока выкинул ssl и привёл всё к минимальной рабочей конфигурации. Вот оно:

global
        log 127.0.0.1 local0
        log 127.0.0.1 local0 notice
        maxconn 4096
        user haproxy
        group haproxy
        daemon

defaults
        log global
        option  tcplog
        option  dontlognull
        retries 3
        option  redispatch
        timeout queue 1m
        timeout client 1m
        timeout connect 10s
        timeout server 1m
        timeout check 5s

# MySQL Load Balance Pool
listen mysql-cluster
        bind *:3306
        mode tcp
        option mysql-check user haproxy
        balance leastconn
        server server1 10.126.162.7:3306
        server server2 10.126.162.8:3306