나는 MySQL 백엔드 인 몇몇 웹 서버가있다. HAProxy는 해당 웹 서버 앞에 있습니다. 모든 웹 서버는 https를 사용하고 있습니다.HAProxy http check on ssl?
http 및 https 모두에서 http 검사 옵션을 사용하여 데이터베이스 연결이 끊어지면 HAProxy가 다른 노드로 페일 오버합니다. 내 haproxy 구성 파일 :
global
log /dev/log local0
maxconn 4096
#debug
#quiet
user haproxy
group haproxy
defaults
log global
mode http
option httplog
option dontlognull
retries 3
option redispatch
maxconn 2000
timeout connect 5000ms
timeout client 50000ms
timeout server 50000ms
listen http
bind *:80
mode http
balance roundrobin
stats enable
stats auth haproxy:haproxy
cookie JSESSIONID prefix
stick on src table https
option http-server-close
option forwardfor
default-server inter 5s fall 2
option httpchk
http-check expect ! string Database\ error
server sitea 192.168.0.20 cookie sitea check port 80
server siteb 192.168.0.21 cookie siteb check port 80
listen https
bind *:443
mode tcp
balance roundrobin
stick-table type ip size 5000k expire 2h store conn_cur
stick on src
option tcplog
option ssl-hello-chk
default-server inter 5s fall 2
option httpchk
http-check expect ! string Database\ error
server sitea 192.168.0.20:443 check ssl verify none
server siteb 192.168.0.21:443 check ssl verify none
마지막 두 줄을보십시오. "ssl verify none"을 지정하면 내 HAProxy가 Apache와 MySQL 상태를 성공적으로 확인할 수 있습니다. 그러나 https를 통해 웹 페이지를 열 수 없습니다 (이 사이트는 보안 연결을 제공 할 수 없습니다.) ERR_SSL_PROTOCOL_ERROR.
해당 매개 변수를 제거하면 웹 페이지를 다시 열 수 있지만 모든 https 서버 상태는 HAProxy에서 DOWN됩니다.
P. 현재 테스트 중이므로 자체 서명 인증서를 사용하고 있습니다.
백엔드를 직접 테스트하십시오. HAProxy는'mode tcp'에 있기 때문에 문제가있는 것 같습니다. –
백엔드가 완벽하게 작동합니다. 나는 haproxy가 SSL 연결을 리다이렉트 할 수 없기 때문에 이것이라고 생각한다. – NeilWang