LabHub
배우기 러닝패스 코스

Envoy 내부 구조 · 이름 뒤에 서 있는 것들 · 실습

고장 난 업스트림을 넣고 클러스터를 관찰한다

LabHub 에서 이어서 보기

목표

엔드포인트를 알아내는 방법과 성한지 판단하는 방법을 따로 세워 보고, 성한 것이 모자랄 때 Envoy 가 택하는 두 가지 길을 직접 만들어 본다.

왜 중요한가

프록시 운영에서 실제로 자주 보는 화면은 라우트 표가 아니라 클러스터 목록이다 — 어디에 서버가 몇 대이고 그중 몇 대가 성한가. 그 숫자를 읽을 줄 알면 503 신고의 절반은 그 자리에서 끝난다. 특히 패닉 모드는 한 번 눈으로 보지 않으면 운영에서 처음 만났을 때 '다 죽었는데 왜 계속 보내지' 에서 멈추게 된다. 우선순위 넘김도 마찬가지로, 설정만 읽어서는 언제 아래 단계가 트래픽을 받는지 감이 오지 않는다.

단계

1. 업스트림 넷을 띄우세요 — 8084·8086ok, 8085·8087fail 입니다. /root/envd-cluster/cluster.yamlSTATIC 클러스터 pool(엔드포인트 8084·8085·8086)과 /pool 라우트를 두고 띄우세요(관리 9941, 리스너 127.0.0.1:10041). /clusters 에서 pool:: 로 시작하는 줄만 골라 /root/envd-cluster/01-pool.txt 에 저장하세요.
2. STRICT_DNS 클러스터 bydns 를 더하세요 — 주소는 localhost, 포트는 8084 이고 dns_lookup_familyV4_ONLY 입니다. /bydns 라우트도 함께 두세요. /config_dump?resource=static_clusters 에서 클러스터마다 이름 타입 한 줄씩 뽑아 /root/envd-cluster/02-types.txt 에 저장하세요.
3. pool 에 능동 헬스 체크를 더하세요 — interval 1초, timeout 1초, 두 임계값 모두 1, http_health_check 의 경로는 /healthz 입니다. 잠시 뒤 /clusters 에서 pool 엔드포인트의 health_flags 줄만 골라 /root/envd-cluster/03-health.txt 에 저장하세요.
4. /pool 로 12번 요청해 어느 업스트림이 받았는지 세어, /root/envd-cluster/04-spread.txtp8084=·p8085=·p8086=·total= 네 줄로 적으세요(값은 받은 횟수).
5. 클러스터 panic 을 더하세요 — 엔드포인트는 8085·8087 둘 다 fail 이고 같은 능동 헬스 체크를 겁니다. /panic 라우트도 두세요. 6번 요청한 뒤 /root/envd-cluster/05-panic.txtcodes=(받은 HTTP 코드들을 공백으로), lb_healthy_panic=(같은 이름의 통계 값), membership_healthy= 세 줄을 적으세요.
6. 클러스터 tiered 를 더하세요 — priority: 08085(fail), priority: 18086(ok) 를 두고 같은 능동 헬스 체크를 겁니다. /tiered 라우트도 두고 6번 요청해 /root/envd-cluster/06-priority.txtserved_by=(응답한 포트), count=(그 포트가 받은 횟수) 두 줄을 적으세요.
7. /root/envd-cluster/07-inventory.txt 에 클러스터마다 한 줄씩 이름 타입 엔드포인트수 성한수 네 값을 공백으로 띄워 적으세요(이름 순서로 정렬). 값은 눈으로 세지 말고 /config_dump/stats 에서 뽑습니다.
8. /root/envd-cluster/08-report.mdhealthy=(pool 의 성한 엔드포인트 수), total=(pool 의 전체 엔드포인트 수), panic_requests_sent=(패닉 모드에서 요청이 나갔으면 yes), failover_port=(6단계에서 실제로 응답한 포트) 네 줄을 적고, 그 아래 배운 것을 네 줄 이상 적으세요.

참고

단계 8개

  1. 이름 하나에 주소 셋을 매단다
  2. 주소를 적는 대신 이름을 적는다
  3. 요청과 따로 주기적으로 찔러 본다
  4. 성하지 않은 곳에는 보내지 않는다
  5. 성한 곳이 하나도 없으면 어떻게 하나
  6. 위가 다 죽으면 아래로 넘어간다
  7. 네 클러스터의 목록을 만든다
  8. 클러스터 운영 메모를 남긴다