NCP 취득을 위한 아래 링크의 Edwith 강의 내용 요약
Mooc 강의로 무료제공되는 강의입니다.
https://www.edwith.org/professioanl-vpc
1. Load balancer
- Target Group
- 요청을 처리할 대상에 대한 집합
- 동일 VPC내에 있는 서버들에 대해 타겟 그룹 생성 가능
- 타겟 그룹 안에 있는 서버를 다른 타겟 그룹에 속하게 할 수 있지만 타겟 그룹을 다수의 로드밸런서에 연결할 수 는 없다.
- 서비스를 수행하는 대상의 프로토콜에 따라 L4와 L7으로 구분
- 헬스체크 주기 (5~300초) 및 임계값 설정
- 기본은 Round Robin 설정
- 알고리즘 및 Sticky, ProxyProtocol 설정 변경은 생성 이후에 진행
- 프로토콜
- TCP : Network Load Balancer
- Proxy_TCP : Network Proxy Load Balancer
- HTTP(s) : Application Load Balancer
- 로드밸런서
- 부하처리 성능에 따라 Small / Medium / Large 중 선택할 수 있으며 각각 초당 연결수 (CPS) 기준 최소 30,000 / 60,000 / 90,000 개의 분산처리를 보장
- 로드밸런싱 알고리즘
- Round Robin : 클라이언트에서 요청이 오면 서버에 1개씩 분배하는 방식
- Least Connection : 클라이언트 연결이 제일 적은 서버에게 새로운 커넥션을 분배하는 방식
- Source IP Hash : 클라이언트 IP에 대한 해시테이블을 가지고 클라이언트 IP 에 매핑되는 서버에 새로운 커넥션을 분배하는 방식
- Weighted 방식은 클라우드서비스에서 불필요하여 제공하지 않음
2. 로드밸런서 종류
- 애플리케이션 로드밸런서(Application Load Balancer)
- HTTP, HTTPS 를 사용하는 웹 애플리케이션에 보다 유연한 구성이 가능
- 고정 IP 제공
- URL 기반 분기 가능
- 알고리즘은 3가지 제공
- 네트워크 로드밸런서(Network Load Balancer) - TCP
- 고성능의 분산처리 가능
- Client IP 가 그대로 로깅
- 알고리즘은 Hash , RR(Round Robin)만 제공
- 네트워크 프록시 로드밸런서(Network Proxy Load Balancer) - Proxy_TCP
3. 필요에 따른 로드밸런서 활용
- TCP 레벨 고성능 분산처리 - 네트워크 로드밸런서
- 초당 연결 수 기준 최소 100,000개에서 최대 400,000개까지 성능을 보장하는 단계별 상품을 제공
- 고객 서비스 규모에 최적화된 분산처리 성능을 제공
- 트래픽 분배만 수행하고 고객 서버에서 직접 응답하는 기능(DSR)울 구현하여 보다 빠르고 효율적
- TCP 세션 관리 - 네트워크 프록시 로드밸런서
- 프록시 방식의 통신을 제공하여 세션 유지가 필요한 TCP 기반 애플리케이션에 이용 가능
- 애플리케이션 로드밸런서와 동일한 부하 분산 알고리즘을 적용할 수 있음
- SSL 인증 및 암호화 설정 - 애플리케이션 로드밸런서, 네트워크 프록시 로드밸런서
- 웹 기반의 콘솔에서 SSL 인정서를 추가할 수 있음
- TLSv1, TLSv1.1, TLSv1.2등 SSL 프로토콜 중 가능한 버전을 선택하여 사용 가능
- 적용된 SSL Cipher 설정 가능
- SSL 인증서는 Certificate Manager와 연동하여 편리하게 관리
- 다양한 서버 부하 분산 방식 - 애플리케이션 로드밸런서, 네트워크 프록시 로드밸런서
- Round Robin, Least Connection, Source IP Hash 방식
- L7 (Application Layer) 기능 제공 - 애플리케이션 로드밸런서
- HTTP/HTTPS 트래픽에 대해서 패킷 헤더를 확인하여 Application 레벨에서의 분기처리를 제공
- 로드밸런서의 리스너에 Host Header 기반 분기처리, URL Path Pattern 기반 분기처리, 가중치 기반 분기처리, Redirection응답처리와 같은 규칙이 지원되어 보다 상세한 고급 서비스 구성 가능
- Load Balancer 모니터링
- 로드밸런서에 대해서는 기본 모니터링 정보를 제공
- 서버 모니터링과 마찬가지로 기간 선택에 따라 모니터링 정보 수집 주기를 1분, 5분, 2시간, 1일 단위로 제공
- 네트워크 로드밸런서 모니터링은 Concurrent Connection, 초당 Connection, Traffic In, (Un)Available Hosts등 5가지 항목의 정보를 제공하며, 애플리케이션 로드밸런서는 Tracffic Out를 포함하여 6항목을 제공
- Load Balancer 포트 설정
- 여러 개의 로드밸런서 규칙을 동시에 설정할 수 있음
- 로드밸런서 규칙을 설정할 때는 로드밸런서 포트를 다른 로드밸런서 규칙의 포트와 다르게 설정해야 함
- 서버 포트는 다른 로드밸런서 규칙의 서버 포트와 동일하게 설정하여도 무방
- 타입별 기능 비교
4. LB의 구성 방식
- LB의 구성 방식
- NAT
- DR(Direct Routing)
- Proxy
- 스케줄링 방식 - Weighted 방식은 제공하지 않음
- Round Robin Scheduling
- Least-Connection
- Source Hash Scheduling
- Weighted Round Robin Scheduling
- Weighted Least-Connections
- Locality-Based Least-Connection Scheduling
- Locality-Based Least-Connection Scheduling with Replication Scheduling
- Destination Hash Scheduling
5. 로드밸런서 관련 기능
- 네이버 클라우드 플랫폼 로드밸런서 헬스 체크
- 6초 마다 헬스 체크
- 3회연속으로 OK 혹은 error가 뜨면 바인딩 혹은 언바인딩
- 접속 정보로 도메인 정보를 제공
- 따라서 DNS에는 CNAME으로 등록하여야 함
- 하지만 Zone apex에 대해서는 RFC1033과 같이 등록 불가
- VPC에서는 이러한 불편함을 해소하기위해 IP주소를 제공
- 기본적으로 로드밸런서 하나를 생성하면 HAProxy 2개가 생성됨
- HAProxy 1개의 안정적인 동접 성능은 대략 3000동접 수준, 만약 동접이 수만 동접인 경우 HAProxy 를 여러개 생성해야 함
- 제약사항
- 한 서버가 여러 개의 LB에 바인딩 될 수 있지만 포트별 멀티 바인딩은 지원하지 않음
- 18080 ~ 18095, 65130, 65131, 64000, 3389, 22포트는 관리용 포트이기 때문에 사용 불가
- 최대 50개 서버 바인딩
6. Keep Alive & Connection Idel Time
- On이 필요한 경우
- 메모리가 충분하고, 컨텐츠 서비스 형태여서, 사용자가 지속적으로 서버에 요청하는 경우
- Off가 필요한 경우
- 메모리가 충분하지 못하고, 사용자가 서버에 지속적으로 머물지 않는 경우
7. LB - 서버 Redirect
- SSL 이용시 Redirect
- SSL을 이용할 경우 LB는 TCP 443 포트로 받고, 80포트 서버로 전달
- 서버 입장에서는 HTTP로 접근하는지 HTTPS로 접근하는지 확인 필요
- 서버에 추가로 포트 개방하고 LB 80포트를 해당 포트에 연결하여 Redirect
- 서버에서 8080포트도 웹서버에서 Listen 하도록 설정
- LB에서는 80포트로 오는 패킷을 8080으로 전달
- 서버에서 8080포트로 오는 접근은 443으로 Redirect
- X-Forwarded 헤더를 이용
- X-ForwardProto 헤더를 이용하여 연결에 사용한 프로토콜을 식별
- HTTP로 온 경우 HTTPS로 Redirect
8. DNS (Deprecated)
- 도메인에 대해 IP로 변환하는 서비스
- 네이버 클라우드 플랫폼 DNS
- A, NS, PTR, AAAA, MX, CNAME, SPF등 다양한 레코드 타입 지원
- 외부 도메인 등록 기관에 네임서버를 네이버 클라우드 플랫폼의 네임서버로 지정한 경우에 사용 가능
- 도메인 등록시 네이버 클라우드 플랫폼 DNS에 등록하는데 최대 15분 소요
- 입력 가능 항목
- 현재 Global DNS 서비스로 통합
9. Global DNS
- DNS 서비스
- 다양한 레코드 타입 지원(A, NS, PTR, AAAA, MX, CNAME, SPF, TXT, SRV, CAA)
- Alias 기능 제공 및 설정 반영 단계 추가
- 등록 도메인으로 인입되는 트래픽을 분기(Round Robin)
- 모니터링 기능 제공