로드 밸런싱없는 nginx 장애 조치


13

nginx를 구성하는 데 문제가 있습니다.

나는 nignx를 리버스 프록시로 사용하고 있습니다. 모든 요청을 첫 번째 서버로 보내려고합니다. 첫 번째 서버가 다운되면 두 번째 서버로 요청을 보내려고합니다.

요컨대,로드 밸런싱없이 페일 오버 솔루션을 어떻게 가질 수 있습니까?

답변:


13

당신이 원하는 것은 액티브 + 패시브 설정입니다. 다음은 nginx conf 스 니펫 예제입니다.

upstream backend {
    server 1.2.3.4:80 fail_timeout=5s max_fails=3;
    server 4.5.6.7:80 backup;
}

server {
    listen 80;
    server_name whatevs.com;

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

따라서 '일반적으로'모든 요청은 호스트 1.2.3.4로 이동합니다. 해당 상자에 3 번 실패하면 4.5.6.7이 대신합니다.


백업이 여러 개인 경우 어떻게합니까?
베니 보 테마

0

nginx의로드 밸런싱은 업스트림 범위에서 서버 이름을 구성하기 만하면됩니다. 여기서로드 밸런싱을위한 서버 목록을 작성합니다.
nginx는 기본적으로로드 밸런싱을 위해 다른 알고리즘을 지원합니다. 로빈은 라운드 로빈이지만 ip_hash와 같은 다른 키로 구성합니다 ...

http{
 upstream servername{
    ip_hash//for sticky hash
    least_conn//FOR least connection 
    sever localhost:1001;
    sever localhost:1002;
    sever localhost:1003;
}

0

chrskly의 답변을 확장하면 3 개의 플래그 / 구성을 구성 할 수 있습니다.

  1. fail_timeout : 시도가 실패한 총 시간과 같은 시간 동안 서버를 DOWN으로 표시합니다. 5 초이면 5 초 안에 max_fail 시도가 시도되고 여전히 실패하면 5 초 동안 해당 서버를 DOWN으로 표시하십시오.
  2. max_fail : 최대 시도 횟수
  3. proxy_connect_timeout : 연결을 기다리는 시간입니다.

다음 GRPC 예에서 주 서버를 7 초 내에 연결할 수없는 경우 백업으로 전환하고 주 서버를 6000 초 동안 다운 된 것으로 표시하십시오.

upstream grpcservers {
    server 192.168.0.XX:9997 fail_timeout=6000s max_fails=1;  # After 1 fail in 6000s, Main server is marked unavailable for 6000s.
    server 192.168.0.XX:9999 backup;
        } 
location / {
            grpc_pass grpc://grpcservers;
            grpc_connect_timeout 7s;  # If conn cant be made in 7sec, switch to backup
        }

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.