2017-09-18 27 views
0

나는 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. 현재 테스트 중이므로 자체 서명 인증서를 사용하고 있습니다.

+0

백엔드를 직접 테스트하십시오. HAProxy는'mode tcp'에 있기 때문에 문제가있는 것 같습니다. –

+0

백엔드가 완벽하게 작동합니다. 나는 haproxy가 SSL 연결을 리다이렉트 할 수 없기 때문에 이것이라고 생각한다. – NeilWang

답변

0

해결책을 찾았습니다. 아파치 노드에서 https를 사용하고 있기 때문에 SSL 인증서 콘텐츠를 haproxy에 복사해야합니다. 이를 위해 개인 키와 CA가 발급 한 인증서 내용을 하나의 파일로 복사하고 병합합니다 (필자는 /etc/haproxy/haproxy.pem에 넣습니다). 443

으로 바인드 * : 443 SSL 브라운관 /etc/haproxy/haproxy.pem

바인드 *에게의 haproxy 구성을 수정 변경