> >>> Hi, >>> >>> On Fri, Feb 03, Antonio Trujillo Carmona wrote: >>>> All this go fine, but balanced A don't know state of virtual machine but >>>> state of haproxy in server, due this if we stop VM1 and we see state in >>>> balanced A we see VM is OK, that is because Balanced A see then state of >>>> haproxy in server 1 not VM1 status. >>>> >>>> So my question: >>>> In this scenarios: >>>> |S1 [VM 1]| >>>> |Hap------ | >>>> |[balA (haproxy)]| | [VM 3]| >>>> | keepalived |----- >>>> |[balB (haproxy)]| |S2 2 [VM 2]| >>>> |Hap------ >>>> | [VM 4]| >>>> How I can pass state of VM to haproxy in balanced A and B?. >>> >>> >>> If I undestand your question correctly you can use monitor-uri and >>> monitor-fail on S1/S2 haproxy. And healthcheck the monitor-uri from >>> balA/balB. >>> (http://cbonte.github.io/haproxy-dconv/1.7/configuration.html#4-monitor-uri >>> http://cbonte.github.io/haproxy-dconv/1.7/configuration.html#nbsrv) >>> >>> So in S1/S2 haproxy: >>> monitor-uri /healthcheck >>> monitor-fail if { nbsrv(your_backend_name) lt 1 } >>> >>> And in balA/balB: >>> option httpchk GET /healthcheck ... >>> http-check expect status 200 >>> >>> (http://cbonte.github.io/haproxy-dconv/1.7/configuration.html#4.2-option%20httpchk) >>> >>> -Jarno >> Ok I can understand the first part for S1/S2, but not the part for >> balA/balB. >> option httpchk GET /healthcheck http-check expect status 200 >> is possible make a http-check within tcp conection? >> We try (prior to ask) with >> option httpchk GET /testwebwls/check >> (we make a processes who return ok and work fine in tho no SSL >> structure), but it don't work, I guess it is due to certificate issue, >> certificate name is "aplicaciones", aplicaciones is pointer by DNS to >> S1/S2 haproxy, S1/S2 try to connect to "10.105.x.x:1443" and certificate >> is not valid for server named "10.105.x.x" only for server named >> "aplicaciones" >> With your proposal in the statics page we see all server down with "LT7RSP" >> >> My configuration filed are: >> >> In BalA/BalB >> # haproxy -v >> HA-Proxy version 1.5.18 2016/05/10 >> # cat /etc/haproxy/haproxy >> >> ######################################################### >> # Fichero configuracion del HAPROXY >> ######################################################### >> global >> log 127.0.0.1 local0 debug >> chroot /var/lib/haproxy >> user haproxy >> group haproxy >> daemon >> node BALANCEADOR-PRINCIPAL >> defaults >> log global >> mode http >> option dontlognull >> option httpchk >> retries 3 >> option redispatch >> maxconn 5000 >> timeout connect 5s >> timeout client 15min >> timeout server 15s >> stats show-node >> stats enable >> >> frontend Jornasist >> bind 10.107.20.9:80 >> option httplog >> mode http >> tcp-request inspect-delay 5s >> tcp-request content accept if { req_ssl_hello_type 1 } >> ##I leve this part in order to have stats >> >> #### FRONTEND DESTINADO A SSL ########## >> >> frontend Aplicaciones >> bind *:443 >> mode tcp >> >> tcp-request inspect-delay 5s >> tcp-request content accept if { req_ssl_hello_type 1 } >> >> acl aplicaciones req_ssl_sni -i aplicaciones.gra.sas.junta-andalucia.es >> acl citrixsf req_ssl_sni -i ssiiprovincial1.gra.sas.junta-andalucia.es >> use_backend CitrixSF-SSL if citrixsf >> use_backend SevidoresWeblogic-12c-Balanceador-SSL >> default_backend SevidoresWeblogic-12c-Balanceador-SSL >> >> >> #### BACKEND DE LOS SERVIDORES DE WEBLOGIC PRE PRODUCCION ##### >> ###this part work fine without SSL >> #backend SevidoresWeblogic-12c-Balanceador >> # mode http >> # option httplog >> # stats enable >> ## option forwardfor >> ## cookie JSESSIONID prefix >> # cookie ServerID insert nocache indirect >> # option httpchk GET /testwebwls/check >> # balance roundrobin >> >> # server ServerManager1-nodo1 10.105.15.112:8001 check inter >> 3000 cookie ServerManager1-nodo1 >> # server ServerManager2-nodo2 10.105.15.113:8002 check inter >> 3000 cookie ServerManager2-nodo2 >> # server ServerManager3-nodo1 10.105.15.112:8003 check inter >> 3000 cookie ServerManager3-nodo1 >> # server ServerManager4-nodo2 10.105.15.113:8004 check inter >> 3000 cookie ServerManager4-nodo2 >> >> >> #### BACKEND DE LOS SERVIDORES DE WEBLOGIC PRE PRODUCCION SSL ##### >> backend SevidoresWeblogic-12c-Balanceador-SSL >> mode tcp >> balance roundrobin >> >> # maximum SSL session ID length is 32 bytes. >> stick-table type binary len 32 size 30k expire 30m >> >> acl clienthello req_ssl_hello_type 1 >> acl serverhello rep_ssl_hello_type 2 >> >> # use tcp content accepts to detects ssl client and server hello. >> tcp-request inspect-delay 5s >> tcp-request content accept if clienthello >> >> # no timeout on response inspect delay by default. >> # tcp-response content accept if serverhello >> >> stick on payload_lv(43,1) if clienthello >> >> # Learn on response if server hello. >> # stick store-response payload_lv(43,1) if serverhello >> >> # different try that not work >> # option ssl-hello-chk >> # option httpchk GET HTTP/1.0\r\nHost:\ /testwebwls/check >> # option tcp-check >> >> ######## your proposal >> option httpchk GET /healthcheck >> http-check expect status 200 >> ######## >> server SSL-ServerManager1-nodo1 10.105.15.112:1443 check >> server SSL-ServerManager2-nodo2 10.105.15.113:2443 check >> server SSL-ServerManager3-nodo1 10.105.15.112:3443 check >> server SSL-ServerManager4-nodo2 10.105.15.113:4443 check >> >> ... >> >> >> In S1/S2 >> # haproxy -v >> HA-Proxy version 1.5.4 2014/09/02 >> # cat /etc/haproxy/haproxy >> >> global >> chroot /var/lib/haproxy >> stats timeout 30s >> user haproxy >> group haproxy >> daemon >> >> # Default SSL material locations >> ca-base /etc/ssl/certs >> crt-base /etc/ssl/privado >> >> # Default ciphers to use on SSL-enabled listening sockets. >> # For more information, see ciphers(1SSL). >> ssl-default-bind-ciphers >> kEECDH+aRSA+AES:kRSA+AES:+AES256:RC4-SHA:!kEDH:!LOW:!EXP:!MD5:!aNULL:!eNULL >> >> defaults >> mode http >> timeout connect 5000 >> timeout client 50000 >> timeout server 50000 >> >> frontend fsm1 >> bind *:1443 ssl crt aplicaciones.pem >> reqadd X-Forwarded-Proto:\ https >> >> ######## your proposal >> monitor-uri /healthcheck >> monitor fail if { nbsrv(bsm1) lt 1 } >> >> default_backend bsm1 >> >> frontend fsm3 >> bind *:3443 ssl crt aplicaciones.pem >> reqadd X-Forwarded-Proto:\ https >> #### diferent try that don't work >> # acl site_dead nbsrv(bsm3) eq 0 >> # tcp-request connection reject if site_dead >> ## acl site_dead nbsrv(bsm3) lt 1 >> >> ### this monitor uri have probe work fine >> # monitor-uri /testwebwls/check >> ### >> >> # monitor fail if site_dead >> >> ######## your proposal >> monitor-uri /healthcheck >> monitor fail if { nbsrv(bsm3) lt 1 } >> >> default_backend bsm3 >> >> >> backend bsm1 >> stats enable >> stats hide-version >> server sm1 127.0.0.1:8001 check >> >> backend bsm3 >> stats enable >> stats hide-version >> server sm3 127.0.0.1:8003 check
Ok I found a solution. bypass haproxy in server: server SSL-ServerManager1-nodo1 10.105.15.112:1443 check port 8001 server SSL-ServerManager2-nodo2 10.105.15.113:2443 check port 8002 server SSL-ServerManager3-nodo1 10.105.15.112:3443 check port 8003 server SSL-ServerManager4-nodo2 10.105.15.113:4443 check port 8004 but I need to add option httpchk GET /healthcheck http-check expect status 404 What is the meaning of status return in http-check? without SSL you can see in statistics if server is down, up, going down or starting, right now I guess it are not going to work, only up or down Thank for your help, I going home till Monday, good weekend. --- *Antonio Trujillo Carmona* *Técnico de redes y sistemas.* *Subdirección de Tecnologías de la Información y Comunicaciones* Servicio Andaluz de Salud. Consejería de Salud de la Junta de Andalucía [email protected]_

