답변:
당신이 원하는 것은 액티브 + 패시브 설정입니다. 다음은 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이 대신합니다.
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;
}
chrskly의 답변을 확장하면 3 개의 플래그 / 구성을 구성 할 수 있습니다.
다음 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
}