LabHub
배우기 러닝패스 코스

Envoy 내부 구조 · 설정 한 장이 프로세스가 되기까지 · 실습

배포 전에 거르고, 두 번째 프록시를 띄운다

LabHub 에서 이어서 보기

목표

부트스트랩을 손으로 쓰고, 배포 전에 설정만 검사하고, 한 기계에 두 번째 Envoy 를 띄운다.

왜 중요한가

설정이 잘못된 프록시는 재시작하는 순간 드러난다. 그때는 이미 옛 프로세스가 내려간 뒤라 되돌릴 시간이 없다. --mode validate 는 포트를 잡지 않고 설정만 읽어 이 사고를 배포 전으로 옮겨 준다. 부트스트랩의 층 구조를 짚을 줄 알면 남이 쓴 설정도 몇 초 만에 읽히고, --base-id 와 관리 포트의 위험은 한 번 겪어 두지 않으면 반드시 운영에서 처음 만난다.

단계

1. /root/envd-boot/boot.yaml 에 부트스트랩을 쓰세요 — 관리 포트 9911, 리스너 이름 edge127.0.0.1:10011, stat_prefixedge, 클러스터 이름 origin127.0.0.1:8081 입니다. envoy --mode validate -c /root/envd-boot/boot.yaml 을 돌려 그 출력과 종료 코드를 /root/envd-boot/01-validate.txt 에 저장하세요. 마지막 줄은 rc=0 이어야 합니다.
2. /root/envd-boot/boot.yaml/root/envd-boot/boot-typo.yaml 로 복사한 뒤 HttpConnectionManagerHttpConnectionManger 로 한 글자 지우세요. envoy --mode validate 로 검사해 출력과 종료 코드를 /root/envd-boot/02-typo.txt 에 저장하세요 (마지막 줄은 rc=1).
3. /root/envd-boot/boot.yamlnode 를 더하세요 — idedge-1, clusterenvd-edge 입니다. 업스트림을 8081 에 띄우고 Envoy 를 띄운 뒤, 관리 포트의 /config_dump 에서 부트스트랩 절의 node 만 뽑아 /root/envd-boot/03-node.json 에 저장하세요.
4. /root/envd-boot/boot.yamlyq 로 읽어 다섯 값을 /root/envd-boot/04-layers.txt열쇠=값 다섯 줄로 적으세요 — listener=(리스너 이름), filter=(네트워크 필터 이름), stat_prefix=, route_cluster=(라우트가 가리키는 클러스터), cluster_endpoint=(그 클러스터의 엔드포인트, 주소:포트 형식).
5. /root/envd-boot/boot.yaml 의 포트만 바꾼 사본 /root/envd-boot/boot-second.yaml 을 만드세요(관리 9912, 리스너 10012). 먼저 옵션 없이 띄워 실패를 확인하고, 그다음 --base-id 7 을 붙여 성공시키세요. /root/envd-boot/05-baseid.txtwithout_base_id_rc=(0 이 아닌 값), 실패 이유가 담긴 줄, with_base_id_ready=(두 번째 Envoy 의 /ready 응답) 을 적으세요.
6. Envoy 를 --concurrency 1 --log-level info 로 다시 띄우고, 관리 포트의 /server_info 에서 command_line_options 만 뽑아 /root/envd-boot/06-cli.json 에 저장하세요. concurrency 가 1, log_levelinfo 여야 합니다.
7. 관리 포트에 /quitquitquit 를 POST 해 Envoy 를 끝내고, /root/envd-boot/07-quit.txtafter_quit=(그 뒤 /ready 의 HTTP 코드) 를 적으세요. 그다음 다시 띄우고 after_restart=(/ready 의 응답 문자열) 을 덧붙이세요. 마지막에는 Envoy 가 9911 에서 살아 있어야 합니다.
8. /root/envd-boot/08-report.mdvalidate_rc=, typo_rc=, second_envoy=, admin_bind= 네 줄을 적고(각각 1단계·2단계의 종료 코드, 두 번째 Envoy 에 필요했던 옵션 이름, 관리 포트를 묶어야 하는 주소), 그 아래 배운 것을 네 줄 이상으로 적으세요.

참고

단계 8개

  1. 배포하기 전에 설정만 먼저 검사한다
  2. 이름 한 글자를 틀리면 프로세스가 아예 뜨지 않는다
  3. 이 프록시가 누구인지 설정에 적는다
  4. 다섯 층을 경로로 짚어 본다
  5. 두 번째 Envoy 가 뜨지 않는다
  6. 명령줄 옵션이 어디에 남는지 확인한다
  7. 관리 포트는 죽이는 단추까지 들고 있다
  8. 배포 전 점검표로 정리한다