반응형
L7 based Load balancing
기본적으로 L4 로드밸런서 method 제공. L7에서 받을 수 있는 데이터 기반으로 많은 기능을 추가로 제공함.
- 네이버에서는 각 서비스 단위별로 운영하며, host header 기반 Route 아키텍처.
Path based Route
- L7 로드밸런서의 특징.
- 클라이언토 요청을 url path 기준으로 정의된 패턴에 부합하는 origin으로 라우팅.
- 하나의 도메인에서도 static / dynamic 콘텐츠의 origin 분리해서 활용할 수 있음.
Circuit Breaker
- 모든 origin에서 정상 응답이 불가능한 상황이 되면, 정상 연결될 때까지 다른 origin 군으로 연결해주거나 직접 응답하는 기능.
- nfront가 redirect / static error page / parking 등을 클라이언트에 수행한다.
Web Application Firewall (WAF)
- L7에서 지원하는 기능이기에 사용 가능.
- https 요청도 복호화하기 때문에 암호화된 공격도 L7 데이터 기반으로 origin 보호하는 역할
- 공격자의 url path, header, cookie에서 특정 패턴이 있을 경우 차단하는 식의 대응도 가능
- 백단의 서버리소스 사용 없이 nfront (리버스 프록시) 단계에서 리소스 써서 방어함
- Seamless한 적용이 기본. 기존 서비스에 영향을 주지 않고 제어패턴 변경이 가능함
Management / Monitoring
인증서 관리로는 세 가지 기술 사용
- Multiple Chain of trust : 신뢰 체인 (chain of trust) 이슈에 대비해서 백업용 신뢰 체인 여러 개 구축
- 신뢰 체인 : 상위 계층의 인증서 (CA 담당기관) 가 신뢰할 수 있는 상태라면, 해당 CA의 비밀 키로 암호화된 하위 인증서 또한 신뢰 가능하다고 간주하는 것.
- 상위 인증서 기관의 공개키 (CA 기관)로 하위 인증서의 해시 값을 복호화할 수 있다.
- 신뢰 체인 : 상위 계층의 인증서 (CA 담당기관) 가 신뢰할 수 있는 상태라면, 해당 CA의 비밀 키로 암호화된 하위 인증서 또한 신뢰 가능하다고 간주하는 것.
- OCSP Stapling : 클라이언트 접속 품질 향상을 위해 6시간마다 OCSP 업데이트.
- Revocation Check : Chain of trust의 컴포넌트인 intermediate CA certification 이나 End Entity Certification에 이슈가 있을 경우... https 통신 전체의 신뢰도에 문제가 생길 수 있다는 뜻임. 따라서 6시간마다 OCSP Validation으로 Chain of trust에 이상 없는지 체크한다는 듯
수백 대의 HAProxy 노드를 모니터링. 모니터링할 데이터는 크게 두 종류
- Resource Data : HA proxy에서 생성하며, 실시간으로 확인해야 할 값. RPS, Traffic, Error, CPU usage 등이 해당됨.
- 자체 개발한 OpenTSDB로 1분마다 데이터 쌓이고, Grafana로 시각화
- Deployed Data : config 파일, 인증서 등. mysql에 저장하고 웹에서 확인할 수 있도록 제공.
OpenTS와 mysql에 수집된 데이터를 분석해서, 문제 있을 경우 alert 제공.
- nfront 팀 : 플랫폼 전체의 리소스 현황, 인증서 상태, 노드 상태 등
- 네이버 개발자 : origin 다운되거나 정보 변경 시 alert, 쓰지 않는 도메인 검토하도록 체크.
- 도메인별로 RPS / Error rate 임계치를 직접 설정하고 alert받을 수 있도록 하는 기능을 개발중이라고 함
로그 관리 - 매일 테라바이트 단위로 쌓이기 때문에 효율적인 관리가 반드시 필요한 영역
- Core Component of ElasticSearch 앞단에 IO 퍼포먼스 최적화를 위해 rsyslog를 뒀음.
- Structured 가능한 데이터는 column형태로 관리 -> Semi-Structured 형태의 데이터로 변환하는 용도
- 어뷰저 패턴분석 등에 활용하고 있다고 함
- 효율적인 용량관리를 위해 일정 시간이 지나면 하드웨어 스펙 낮은 곳에 아카이브 중.
User Friendly - 유저 사용성 향상 영역
대충 지금까지 설명한 서비스들 자동화하고 As a Service 형태로 제공하고 있다는 소리 같다.
HAProxy 로그데이터 쌓는 OpenTSDB를 바라보도록 설정한 JudgeD 컴포넌트
- 실시간 리소스 현황, 사전에 정의한 Policy 기준으로 scale in / out 판단
리소스 매니저
- busy / idle 노드 확인하고, 어떤 노드를 할당하고 회수할 것인지 결정
Ansible
- 결정된 내용으로 Config Deploy 수행
여기에 적용된 Software Load balancer (SLB) : ECMP, BGP, IPVS 기반으로 자체 구현해 사용중
Encrypt 서비스
- 개발용 도메인, 테스트용 도메인은 https 통신을 바로 지원할 수 있도록.
- nfront에서 cert bot을 직접 설정, 관리 -> 서버 개발자가 인증서 관련해서 신경쓸 거 없도록 조치
TroubleShooting
애플아이디 로그인 실패 사례
- 애플 측에서 ECDSA 지원 안해서 TLS handshaking이 끊긴 사례.
- 당시에는 RSA 인증서 지원해서 해결.
intermediate CA untrusted 이슈. 정확히는 revocated됨
- 해당 인증서 확인하고 텍스트파일 열어서 암호화된 인증서로 교체해서 해결
- 인증서 갱신 주기가 짧으면 해결 가능했음
파이어폭스에서 발생한 현상.
기본적으로 http2는 Connection reuse를 유도한다.
- 인증서가 와일드카드 방식이라면, 해당 인증서를 사용하는 도메인과 커넥션이 있을 경우 -> 신규 도메인 (예시의 경우 c.example.com) 과 연결할 때에도 기존 connection을 최대한 활용하도록 유도.
- 같은 인증서를 쓴다고 해서 같은 ip를 사용할 필요는 없음. 당시 파이어폭스 버그. 꽤 예전이라고 함
- 421 Misdirected Request 응답해서 lookup을 다시 하도록 유도해서 해결.
LoadMap (future)
어뷰징 탐지 강화를 위해 머신러닝 도입
HTTP/3 지원 / 연구중
SLB의 autoscaling 과정에서의 IPVS 대신, 더 Low level (L4) 이라 더 빠른 속도를 지원하는 eBPF / XDP 도입
Cloud 상품으로 개발
반응형
'학습일지 > 네트워크' 카테고리의 다른 글
KubeCon 2019 - The story of Why we migrate to gRPC and How we go about it (Spoti (0) | 2022.10.12 |
---|---|
KubeCon 2018 - Using gRPC for long-lived and Streaming RPCs (0) | 2022.09.12 |
Deview 2021 - NAVER 암호화 트래픽을 책임지는 HTTPS 플랫폼 기술 - 1. 기술 (0) | 2022.06.11 |
gRPC (4) - Client Streaming 개념 및 예제코드 (0) | 2021.08.16 |
gRPC (3) - Server Streaming 개념 및 예제코드 (0) | 2021.08.15 |