다중 PoP SRE·빌드 엔지니어가 자주 겪는 세 가지 병목입니다.
- 일 스크립트가 매번 새 TCP를 열어 JumpHost 경유 시 핸드셰이크 p95만 튀고 Mac 성능은 정상으로 보입니다.
- 이 GeoDNS 가중치 변경 후에도
ControlPath소켓이 구 PoP를 가리켜 크로스 리전 지연이 고착됩니다. - 삼 제어 채널과 아티팩트 회송을 같은 로그에 섞어 p95 원인을 나누지 못합니다.
| 경로 | 적합 | ControlMaster | 아티팩트 |
|---|---|---|---|
| 직접 PoP | 단일 리전·낮은 RTT | 권장 | 512MB p95 안정 |
| JumpHost 체인 | 통합 감사 | bastion에 마스터 | 홉별 측정 |
| GeoDNS 최근접 | 회전 빌드 | PoP별 ControlPath | ECS 글 정렬 |
| Tailscale | MagicDNS 고정 | tailnet 내 재사용 | 가이드 |
ControlMaster·ControlPersist 파라미터
마스터 세션이 KEX·인증을 한 번만 수행합니다. 자식 세션은 Unix 소켓을 타며 CI fan-out에서 체감 크로스 리전 지연을 줄입니다.
ControlPersist는 GeoDNS TTL 창에 맞춥니다. 보통 8~15분—DNS가 바뀌어도 잘못된 PoP에 몇 시간 묶이지 않게 합니다.
# ~/.ssh/config (vpshalo 다중 리전)
Host vpshalo-*
ControlMaster auto
ControlPath ~/.ssh/cm-%r@%h:%p
ControlPersist 12m
ServerAliveInterval 30
ServerAliveCountMax 3
Compression no
IdentitiesOnly yes
Host vpshalo-seoul
HostName seoul.entry.example.com
User mac
ControlMaster auto는 첫 연결에 마스터를 엽니다. ControlPath 디렉터리는 700. 압축 아카이브에는 Compression no를 유지하세요.
JumpHost 체인·구간 타이밍
SSH CA×JumpHost와 같이 bastion은 전달·감사만 담당합니다. ControlMaster는 bastion 또는 첫 홉에만 둡니다.
Host vpshalo-bastion
HostName bastion.vpshalo.example
ControlMaster auto
ControlPath ~/.ssh/cm-bastion-%r@%h:%p
ControlPersist 10m
Host vpshalo-tokyo-mac
HostName 10.64.0.12
ProxyJump vpshalo-bastion
ControlMaster auto
ControlPath ~/.ssh/cm-tky-%r@%h:%p
ssh -G vpshalo-tokyo-mac·time ssh -O check vpshalo-bastion으로 홉별 ConnectTime을 글로벌 입구 매트릭스 기선과 대조하세요.
점착·헬스 검사
DNS 점착은 GeoDNS가 PoP를 고릅니다. SSH 점착은 ControlPersist와 PoP별 ControlPath 한 쌍입니다.
- 가중치 변경 전: 구 리전에서
ssh -O exit로 소켓을 정리합니다. - 병렬 빌드: 리전당 마스터 하나—경로를 공유하지 않습니다.
- 장시간 회송: NAT가 끊지 않게
ServerAliveInterval을 올립니다.
헬스는 ssh -O check·loopback을 {region,5min} JSON으로 병합, 연속 두 버킷 빨강만 페이징—BBR 롤아웃과 동일.
아티팩트 회송 p95 테스트
도쿄·서울·홍콩·싱가포르·미서부를 동일 5분 창에 샘플링합니다. 고정 512MB 아티팩트·리전당 30회 scp 또는 rsync -e ssh입니다.
먼저 멀티플렉스 없이 기선을 잡고, 마스터 warm 후 재측정합니다. 대양 횡단에서 재전송이 급증하면 ControlPersist를 줄이기 전에 MSS·BBR을 적용하세요.
- 1 입구 호스트명·GeoDNS 가중치 고정·
dig아카이브. - 2
ssh_config배포·ssh -MNf vpshalo-seoul로 마스터 개방. - 3 멀티플렉스 없이 30회 회송·기선 p95 기록.
- 4 ControlMaster on으로 재실행·핸드셰이크·회송 p95 비교.
- 5 가중치 전환 시뮬·점착 해제·재구축 확인.
- 6 서명 표 제출·실패 시 PoP·Jump 체인 교체.
FAQ
소켓 만료·connection refused? 만료된 ~/.ssh/cm-* 삭제·디렉터리 700·비정상 종료 후 ssh -O exit.
리전 변경 후 회송만 느림? 새 PoP에 마스터 재생성—ControlPath를 리전 간 공유하지 마세요. GeoDNS TTL·가중치를 함께 확인합니다.
Tailscale과 병행? MagicDNS 호스트에도 동일 멀티플렉스 규칙을 적용합니다. Tailscale 글을 참고하세요.