WEB #1

upstream backend {
    #sticky cookie srv_id expires=1h domain=.example.com path=/;
    #ip_hash;
    server was1_ip:port;
    server was2_ip:port  backup;
}

 

WEB #2

upstream backend {
    #sticky cookie srv_id expires=1h domain=.example.com path=/;
    #ip_hash;
    server was2_ip:port;
    server was1_ip:port  backup;}

 

동작 설명

WEB1 -> WAS1로 모든 요청을 전달하며, WAS1이 다운될 경우 WAS2로 요청을 전달 -> WAS1이 기동되면 WAS1로 요청 전달(failback)

WEB2 -> WAS2로 모든 요청을 전달하며, WAS2가 다운될 경우 WAS1로 요청을 전달 -> WAS2이 기동되면 WAS2로 요청 전달(failback)

 

 

기타 옵션

-fail_timeout : 특정 시간 동안 요청 실패가 발생할 경우 서버가 죽은 것으로 판단(기본값 10초)

 

 main server에 설정(변경이 필요할 경우에 적용)

upstream backend {
    #sticky cookie srv_id expires=1h domain=.example.com path=/;
    #ip_hash;
    server was1_ip:port fail_timeout=5s;
    server was2_ip:port  backup;
}

 

[참고]

Active WAS가 다운되어 있을 경우 헬스 체크로 인해 error.log 파일에는 아래와 같은 로그가 기록됩니다.(서비스에 영향 없음)


2023/10/19 15:24:33 [error] 2805#0: *426 connect() failed (111: Connection refused) while connecting to upstream, client: 192.168.0.111, server: localhost, request: "GET /session-test/ HTTP/1.1", upstream: "http://192.168.0.112:8300/session-test/", host: " 192.168.0.112:9000"
2023/10/19 15:24:44 [error] 2805#0: *426 connect() failed (111: Connection refused) while connecting to upstream, client: 1 192.168.0.111, server: localhost, request: "GET /session-test/ HTTP/1.1", upstream: "http:// 192.168.0.112:8300/session-test/", host: " 192.168.0.112:9000"
...

 

+ Recent posts