밸런싱 및로드 장애
로드 밸런싱 및 장애
1) 목표 및 용어
밸런싱은 성능 및 복원력을 위해 인스턴스/영역/영역에 트래픽을 분배합니다.
실패-통제 된 실패.
RTO/RPO-복구 시간 목표 및 허용 가능한 데이터 손실.
SLO: 목표 수준의 가용성/대기 시간; 자동 페일 오버 및 롤백을위한 "게이트" 역할을합니다.
2) 밸런싱 레이어
2. 1 L4 (할 수 없음)
장점: 성능, 단순성, TLS 통과. 단점: 경로 이해/쿠키가 없습니다.
예: NLB/GLB, HAProxy/Envoy L4, IPVS.
2. 2 L7 (HTP/gRPC)
장점: 경로 라우팅/헤더, 카나리아 무게, 끈적 끈적한. 단점: CPU/대기 시간이 더 비쌉니다.
예: NGINX/HAProxy/Envoy/Cloud ALB/API 게이트웨이.
2. 3 글로벌
DNA/GSLB: 건강 검진 + 지리/가중 응답.
Anycast/BGP: 전 세계적으로 하나의 IP, 가장 가까운 발표 지점.
CNC/Edge: 주변의 캐시/Feilover.
3) 분포 알고리즘
라운드 로빈/가중-기본.
최소 연결/대기 시간-" 무거운 "요청.
일관된 해싱-중앙 세션이없는 사용자/테넌트 끈적 끈적함.
해시 기반 지역-캐시 및 안정적인 서비스.
4) 세션 및 끈적 끈적한
쿠키 스티커: L7 LB가 쿠키를 설정하여 인스턴스로 돌아갑니다.
Src-IP sticky: L4에서는 USA/CGNAT가 더 나쁩니다.
일관된 해싱: 수평 캐시/채팅에 더 좋습니다.
목표: 가능한 경우, 무국적 서비스를 수행하십시오. 그렇지 않으면-실패를 단순화하기 위해 상태 (Redis/DB 세션) 를 꺼내십시오.
5) 신뢰성: 건강 검진 및 회전에서 제거
활성 점검: HT200/deep 비즈니스 경로 프로브 (예: 의존성이있는 '/healthz/relar ').
패시브 (이상 감지): 5xx/타임 아웃에서 백엔드 배출.
예열: 새로운 인스턴스의 원활한 포함 (느린 시작).
우수한 배수-수영장에서 제거 → 요청이 완료 될 때까지 기다립니다.
nginx upstream api {
zone api 64k;
least_conn;
server app-1:8080 max_fails=2 fail_timeout=10s;
server app-2:8080 max_fails=2 fail_timeout=10s;
keepalive 512;
}
proxy_next_upstream error timeout http_502 http_503 http_504;
proxy_next_upstream_tries 2;
특사 탐지 (조각):
yaml outlier_detection:
consecutive_5xx: 5 interval: 5s base_ejection_time: 30s max_ejection_percent: 50
6) 결함 관리: 타임 아웃/재 시도/회로 차단
타임 아웃: 클라이언트 타임 아웃보다 짧음; 경로당 지정합니다.
재 시도: 지터와 demmpotency가있는 1-2; dempotence 키가없는 POST에서의 배상 금지.
회로 차단기: 동시 요청/오류 제한; "반 개방" 복구.
예산: 자체 DDOS를 배열하지 않도록 버스트의 제한/합병.
7) 쿠 베르네 테스 패턴
ClusterIP/NodePort/LoadBalancer/Ingress-기본 프리미티브.
준비/활력: 기성품 보드에서만 트래픽이 발생합니다.
PodDisruptionBudget은 N 복제본을 동시에 떨어 뜨릴 수 없습니다.
HPA/VPA: CPU/RED 메트릭으로 스케일링하고 LB에 연결합니다.
ServiceTopology/Topology 인식 힌트: 구역 별 지역.
서비스 유형 = LoadBalancer (구역): 각 AZ에서 최소 2 개의 복제본.
yaml readinessProbe:
httpGet: { path: /healthz/dependencies, port: 8080 }
periodSeconds: 5 failureThreshold: 2
8) 크로스 존 및 크로스 존 트래픽
Multi-AZ (지역 내): 균등하게 분배 (구역 LB), 스토리지-동기 복제본.
다중 지역:- 액티브 액티브: 두 지역 모두 트래픽을 제공합니다. 보다 복잡한-데이터 복제, 일관성 및 지리적 라우팅이 필요합니다.
- 액티브 패시브: 주요 지역은 "뜨거운/따뜻한/차가운" 서비스를 제공합니다. "더 쉽고 빠른 전환이지만 더 높은 RPO.
- 지오 DNA (가장 가까운 지역).
- 가중 DNA (카나리아/재분배).
- 대기 시간 기반 (RTT 측정).
- Failover = 건강/가용성 신호에 의한 (여러 유리한 지점의 프로브).
9) 데이터와 장애
캐시/상태: 가능한 경우-지역 로컬; 액티브 액티브 - CRDT/일관된 해시 용.
DB:- 동기식 복제 = 낮은 RPO, 더 높은 대기 시간.
- 비동기 = 낮은 대기 시간이지만 RPO> 0.
- 대기열: 미러링/멀티 클러스터 토픽; 이벤트 중복 제거.
- 운영 및 재생 메커니즘의 demotency 설계.
10) 주변 측정기: DNA/Anycast/BGP/CDNName
DNA: 네트워크에서 짧은 TTL (30-60) + 체력을 확인하십시오.
모든 캐스트: IP가 하나 인 여러 POP-가장 가까운 POP는 트래픽을 수신하며 feilover는 라우팅 수준에 있습니다.
CNC/Edge: 보호를위한 캐시 및 "게이트웨이", 정적/미디어는 원점이 떨어지면 서비스됩니다. 원산지 방패 +
11) 샘플 구성
HAProxy L7:haproxy defaults timeout connect 2s timeout client 15s timeout server 15s retries 2 option redispatch
backend api balance leastconn option httpchk GET /healthz/dependencies http-check expect status 200 server app1 app-1:8080 check inter 5s fall 2 rise 2 slowstart 3000 server app2 app-2:8080 check inter 5s fall 2 rise 2 slowstart 3000
NGINX 끈적 끈적한
nginx upstream api {
hash $cookie_session_id consistent;
server app-1:8080;
server app-2:8080;
}
특사 재 시도/시간 초과 (경로):
yaml route:
timeout: 2s retry_policy:
retry_on: 5xx,connect-failure,reset num_retries: 1 per_try_timeout: 500ms
12) 자동 장애: 신호 및 게이트
Tech-SLI: 5xx 속도, p95/p99, 채도, TLS 핸드 쉐이크, 할 수 있습니다.
비즈니스 SLI: 예금/지급의 성공, PSP의 지불 오류 없음.
게이트: 임계 값을 초과하면 영역/인스턴스를 끄고 안정적인 풀의 무게를 높이고 GSLB를 전환하십시오.
런북: 단계별 롤백 명령.
13) 테스트 및 검사 (혼돈 및 게임 일)
혼돈 테스트: AZ/영역 비활성화, DB/캐시 저하, 패킷 손실 시뮬레이션.
게임 데이: 통화 팀을 갖춘 Faylover 교육.
진단: 주변에서 백엔드로 추적, 릴리스 주석 및 메트릭과 일치합니다.
14) 안전 및 준수
LB 서비스, 주변의 WAF/속도 제한 사이의 mTLS.
고장/분할 영역: 폭발 반경 격리.
정책: 단일 실패 지점 (SPOF) 금지, "최소 N 복제본/AZ" 요구 사항.
15) 반 패턴
모든 트래픽 (SPOF) 에 대한 하나의 LB/하나의 영역.
딥 체크 '/healthz '(녹색이지만 DB/큐를 사용할 수 없음) 가 없습니다.
dempotency → 이중 거래/지불없이 다시 트레이하십시오.
질량이 많은 IP 당 끈적 끈적한 → 불균형.
높은 TTL (전환 몇 시간 전) 을 사용한 DNA feilover.
고갈 될 때 우아한 배수구가 없습니다-휴식을 요청하십시
16) 구현 점검표 (0-45 일)
0-10 일
인스턴스를 AZ 소 2에 게시하고; 준비/활력, 건강 검진을 가능하게합니다.
L7 타임 아웃/재 시도 (1 시도), 특이 치 감지 설정.
우아한 배수구와 느린 시작을 사용하십시오
11-25 일
주변에 GSLB (geo/weight) 또는 Anycast를 입력하십시오.
카나리아 가중치/경로 정책; 쿠키/일관된 해시를 통해 끈적 끈적합니다.
자동 페일 오버 용 SLO 게이트 (p95/5xx + 비즈니스 SLI).
26-45 일
지역 DR: 번역 테스트를 통해 능동 또는 능동 패시브.
RTO/RPO에 따르면 AZ/지역이 꺼진 혼돈의 날.
자동 런북 '및 (일시 정지/시프트/롤백 스크립트).
17) 성숙도 지표
다중 AZ 범위는 중요 경로의 99% 이상입니다.
DNA/GSLB/Anycast는 공개 엔드 포인트를 위해 구현됩니다.
하나의 AZ가 <5 분 (p95) 떨어지면 MTTR.
임계 데이터에 대한 RPO
분기 별 게임 일과 성공적인 예정된 feilover.
18) 결론
신뢰할 수있는 밸런싱 및 장애는 로컬 L7 정책 (타임 아웃/재 시도/CB, 건강 점검), 올바른 끈적 끈적함 및 해싱, 교차 영역 안정성 및 주변의 GSLB/PS/Anycast와 같은 계층화 된 아키텍처입니다. SLO 게이트, demempotency, 우아한 드레인 및 정기적 인 혼돈 테스트를 추가하면 노드, 영역 또는 영역의 손실이 예측 가능한 RTO/RPO로 관리 가능한 이벤트가됩니다.