고가용성 설정을 위한 nginx 리버스 프록시?

고가용성 설정을 위한 nginx 리버스 프록시?

시나리오는 다음과 같습니다. 서로 백업하는 두 개의 앱 서버 앞에 nginx 역방향 프록시 서버가 있습니다. 처음에는 nginx가 모든 사용자 요청을 첫 번째 앱 서버로 전달하고, 첫 번째 앱 서버가 다운된 경우 , nginx가 그 시점부터 두 번째 앱 서버가 다운될 때까지 모든 사용자 요청을 두 번째 앱 서버로 전달하고 nginx는 모든 사용자 요청을 첫 번째 앱 서버로 전달하기 위해 다시 되돌려야 합니다. 물론 두 앱 서버가 모두 다운되면 nginx는 오류를 반환합니다.

업스트림 로드 밸런싱 및 Proxy_next_upstream 설정과 같은 설정을 살펴봤지만 실제로 여기서 원하는 것은 아닌 것 같습니다. 내 시나리오에 맞게 nginx를 구성하는 방법을 아시나요? 감사해요.

답변1

upstream이를 달성하려면 nginx 구성을 사용하고 싶을 것입니다 .

upstream mybackend {
    # first app server
    server 192.168.0.1;

    # second app server
    server 192.168.0.2 backup;
}

server {
    ...

    location / {
        proxy_pass http://mybackend;
    }
}

여기서 핵심은 기본 노드(즉, 태그가 지정되지 않은 노드 )를 사용할 수 없는 backup경우에만 해당 노드를 활용하도록 nginx에 지시하는 매개변수 입니다.backup

가득한여기 문서.

답변2

좀 더 검색한 끝에 OpenResty를 사용하기로 결정했습니다(https://openresty.org/) 내 요구 사항, 특히 LuaUpstreamNginxModulehttps://github.com/openresty/lua-upstream-nginx-module일부 사용자 정의 Lua 스크립트를 사용하면 내 시나리오에 완벽하게 작동하는 것 같습니다.

관련 정보