HAproxy mysql 장애 조치

HAproxy mysql 장애 조치

MySQL 복제용 Percona xtraDB 클러스터와 로드 밸런싱용 HAproxy를 사용하여 HA 클러스터를 설정하려고 합니다.

HAproxy는 Apache에서 정말 잘 작동합니다. Apache가 충돌하거나 응답하지 않는 경우 HAproxy를 다른 노드로 전환합니다.

내 문제는 MySQL에서 시작됩니다. 동일한 HAproxy에 MySQL도 설정했지만 MySQL이 응답하지 않을 때 HAproxy는 다른 노드로 전환하지 않습니다. 그러나 HAproxy는 HAproxy 통계를 확인할 때 MySQL 서버가 다운된 원인에 대해 MySQL이 응답하지 않는 것을 확인합니다.

제 질문은 HAproxy에 두 개의 리소스를 설정할 수 있습니까?입니다. Apache가 작동 중인지 확인하고 그렇지 않은 경우 다른 노드로 전환할 수 있습니까? 그리고 MySQL이 작동 중인지 확인하고 그렇지 않은 경우 다른 노드로 전환할 수 있습니까?

HAproxy.conf:

[...]
frontend redmine
    bind 192.168.7.149:80
    reqadd X-Forwarded-Proto:\ http
    default_backend redmine

frontend redmineS
    bind 192.168.7.149:443 ssl crt /etc/ssl/private/quipment.fr.pem
    reqadd X-Forwarded-Proto:\ https
    default_backend redmine

backend redmine 192.168.7.149:80
    redirect scheme https if !{ ssl_fc }
    mode http
    balance roundrobin
    option http-server-close
    timeout http-keep-alive 3000
    option forwardfor
    cookie PHPSESSID prefix
    cookie SRVNAME insert
    server xtra1 192.168.7.151:80 cookie x1 check
    server xtra2 192.168.7.147:80 cookie x2 check
    server xtra3 192.168.7.152:80 cookie x3 check

listen mysql-cluster 192.168.7.149:3306
    mode tcp
    balance roundrobin
    option  httpchk
    server xtra1 192.168.7.151:3306 check port 9200 inter 1000 rise 3 fall 1
    server xtra2 192.168.7.147:3306 check port 9200 inter 1000 rise 3 fall 1
    server xtra3 192.168.7.152:3306 check port 9200 inter 1000 rise 3 fall 1
[...]

답변1

HAProxy는 MySQL 섹션에서 http(라인 사용 option httpchk)에 대한 테스트를 수행하도록 지시한 것처럼 MySQL 상태를 테스트하지 않습니다.옵션 mysql-check그래서 그것은 다음과 같이 읽어야합니다

listen mysql-cluster 192.168.7.149:3306
    mode tcp
    balance roundrobin
    option  mysql-check user a_test_user
    server xtra1 192.168.7.151:3306 check inter 1000 rise 3 fall 1
    server xtra2 192.168.7.147:3306 check inter 1000 rise 3 fall 1
    server xtra3 192.168.7.152:3306 check inter 1000 rise 3 fall 1

그리고 MySQL 데이터베이스에는 HAProxy로부터의 연결을 허용하는 사용자 a_test_user가 있어야 합니다.

관련 정보