A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | AA | AB | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | ||||||||||||||||||||||||||||
2 | [CB-Spider NLB: CSP별 제공 기능 및 이슈 현황] | * 색깔범례 : 현황 분석 후 최종 이슈 항목 (일단, Change 제외, VMGroup: HTTP/HTTPS 제외, HealthChecker: HTTPS 제외 했을 때) | ||||||||||||||||||||||||||
3 | ||||||||||||||||||||||||||||
4 | * 관련이슈: | https://github.com/cloud-barista/cb-spider/issues/587 | ||||||||||||||||||||||||||
5 | 2022.07. 현재 | |||||||||||||||||||||||||||
6 | CSP | NLB Type | NLB Scope | Frontend | Backend | |||||||||||||||||||||||
7 | Listener | VMGroup | HealthChecker | |||||||||||||||||||||||||
8 | Listener Protocol | Listener IP | DNS Name | Listener Port | VMGroup Protocol | VMGroup Port | VM List | HealthCheck Protocol | HealthCheck Port | Interval (sec) | Timeout (sec) | Threshold (num) | VM Group Health Info | |||||||||||||||
9 | PUBLIC | INTERNAL | REGION | GLOBAL | TCP | UDP | 자동 부여 | 자동 부여 | 1-65535 | TCP | UDP | HTTP | HTTPS | 1-65535 | vm1, vm2, … | TCP | HTTP | HTTPS | 1-65535 | 10 | 10 | 3 | Healthy and Unhealthy VM List | |||||
10 | ||||||||||||||||||||||||||||
11 | AWS | 생성 | O | O | O | X | O | O | X?(AZ별) | X?(설명참고) | O | O | O | X | X | O | O | O | O | O | O | O(10 or 30) | X | O | 제공 | |||
12 | 변경 | X | X | X | X | O | O | N/A | N/A | O | X | X | X | X | X | O | X | X | X | O | X | X | O | N/A | ||||
13 | 이슈 | * Subnet 선택 이슈: 현재는 VM이 구동되고 있는 AZ와 무관하게 VPC내 존재하는 모든 Zone별 1개의 Subnet 선택, Zone별 1개 Subnet을 랜덤 선택, Subnet 부재시 오류 리턴 VPC내 모든 Zone을 추가 하지 않으려면 NLB에 포함할 VM별로 구동 중인 AZ 정보를 파악해서 해당 Zone의 1개의 랜덤 Subnet이 선택되도록 제한은 가능 함.(다만, 이 경우 VM 추가 요청 시 AZ 정보도 함께 판단해서 NLB에 누락된 Zone의 경우 Zone도 함께 추가해줘야 함. 추가된 Zone삭제는 불 가능해서 VM 추가시에만 체크하면 됨.) * VPC-IGW 필수: 현재, SP 통해 생성한 VPC는 IGW를 포함하고 있음. * Driver: 생성/변경 시 지원하지 않는 필드 값은 0 또는 ""로 전달, 그 외 값일 경우 AWS에 적용 요청 생성/변경 시 0이상 또는 ""이 아닌 항목에 대해서는 해당 기능 설정 및 변경 요청으로 간주하고 지원하지 않는 필드에 대한 요청은 에러 리턴 | *Listener IP : 리스너를 대표하는 IP는 없으며 NLB 생성 시 AZ의 Subnet에 EIP를 이용해서 Public IP 지정은 가능 함. (EIP를 지정하면 IP가 노출되고 EIP를 지정하지 않으면 IP 정보는 노출되지 않음) * publicIP: …. AZ별 Public IP 지정은 가능 함.(AZ별 맵핑할 EIP 할당ID 정보 필요) --> AZ의 서브넷에 EIP가 할당된 경우 NLB 조회의 IP정보에 EIP 정보를 리턴하도록 구현은 해 놨지만 NLB의 IP로 봐야 할지는 모르겠음.^^ --> NLB에 자동 할당된 DNS 이름은 있기 때문에 GO의 IP 조회 기능을 활용해서 해당 DNS에 할당된 IP를 조회해서 리턴 정보의 IP 항목에 할당은 가능할 듯. * DNS Name은 자동 생성되며 NLB에서 제공하는 DNS 지정 기능은 없지만 Route53 도메인 서비스를 이용하면 NLB에 도메인 설정은 가능 함. * 리스너 프로토콜 변경은 가능하지만 연결된 타겟(VM) 그룹과 호환되는 프로토콜로만 변경 가능 | * 생성된 Group 정보 변경 불가 - VM 추가 및 삭제는 가능 함 - VMGroup은 HTTP / HTTPS 생성은 가능하지만 NLB는 TCP or UDP로 생성되기 때문에 VMGroup을 HTTP로 생성하면 NLB에 연결할 수 없기 때문에 HTTP / HTTPS는 지원하지 않는 것으로 표기함. => 일단, HTTP/HTTPS 제외, 추후 ALB 도입시 재고 | NLB는 프로토콜 변경 불가 * 헬스체크 포트는 개별 VM에 설정된 트래픽 포트로 설정되어 있지만 특정 포트로 오버라이드 가능 | - 인터벌은 10이나 30만 가능 - TCP(NLB)는 기본이 TCP라서 헬스체크 프로토콜이 HTTP로 설정되어도 인터벌 변경불가 | TCP(NLB)는 타임아웃 설정 및 변경 불가 | 헬스 상태는 "initial | healthy | unhealthy | unused | draining | unavailable"이 존재하며 다른 CSP에 맞추기 위해 명시적으로 healthy 외의 상태는 모두 Unhealthy로 처리했음. | ||||||||||||||||||||
14 | ||||||||||||||||||||||||||||
15 | Azure | 생성 | O | O | O | O | O | O | O(DRV) | X | O | O | O | X | X | O | O | O | O | O | O | O | X | O | 제공 | |||
16 | 변경 | X | X | X | X | O | O | O | X | O | O | O | X | X | O | O | O | O | O | O | O | X | O | N/A | ||||
17 | 이슈 | * (Driver) PublicIP 생성후 Frontend IP Configuration에 등록 * (Driver) IP 변경 가능 | ||||||||||||||||||||||||||
18 | ||||||||||||||||||||||||||||
19 | GCP | 생성 | O | O | O | O | O | O | O | X | O | N/A | N/A | N/A | N/A | N/A | O | X | O | X | O | O | O | O | 제공 | |||
20 | 변경 | X | X | X | X | X | X | N/A | N/A | X | X | X | X | X | X | O | X | X | X | O | O | O | O | N/A | ||||
21 | 이슈 | * 3 구성요소 동일 이름으로 관리 (ForwardingRule Name=TargetPool Name=HealthChecker Name) * targetPool 제약: project별 50개까지 : targetPool은 각 인스턴스를 연결하는 방식 vmGroup은 그룹으로 묶여서 관리 | * Listener 정보 변경 불가 - GCP_CANNOT_CHANGE_LISTENER - 추가, 삭제만 가능 | * Listener와 동일 프로토콜, Port로 자동 설정됨 * VMGroup 프로토콜, Port 변경 불가 - GCP_CANNOT_CHANGE_LISTENER 참고 : 현재 대상 풀 방식으로 instance들을 직접붙이는 방식 | * 프로토콜 변경 불가(HTTP로 고정) * Port 변경 가능 | |||||||||||||||||||||||
22 | ||||||||||||||||||||||||||||
23 | Alibaba | 생성 | O | O | O | O | O | O | O | X | O | O | O | O | X | O | O | O | X | X | O | O | O | O | 제공 | |||
24 | 변경 | X | X | X | X | X | X | N/A | N/A | X | X | X | X | X | X | O | X | X | X | O | O | O | O | N/A | ||||
25 | 이슈 | [특이사항] * LB Instance 별도 존재 및 설정 필요 * VM Spec: slb.s1.small로 설정 (slb.s1.small, slb.s2.small, slb.s2.medium, slb.s3.small, slb.s3.medium, slb.s3.large) * PayType : PayOnDemand로 설정 * InternetChargeType: paybytraffic(default), paybybandwidth | * Alibaba Listener: n개 생성 가능 * Listener 정보 변경 불가 - ALIBABA_CANNOT_CHANGE_LISTENER | * VMGroup 정보 변경 불가 - ALIBABA_CANNOT_CHANGE_VMGROUP 참고 : 현재 Default Server Group 사용으로 instance들을 직접 붙이는 방식 | * HealthChecker 별도 존재하지 않으며, Listner에서 설정 -> listener protocol 따라감. protocol 변경 불가 listener 의 protocol을 http,https로 설정하면 health check protocol도 http, https가 되나 이번 개발범위는 TCP, UDP로 설정. | |||||||||||||||||||||||
26 | ||||||||||||||||||||||||||||
27 | Tencent | 생성 | O | O | O | O | O | O | O | X | O | O | X | X | X | O | O | O | O | X | O | O | O | O | 제공 | |||
28 | 변경 | X | X | X | X | X | X | N/A | N/A | X | X | X | X | X | O | O | O | O | X | O | O | O | O | N/A | ||||
29 | 이슈 | * VMGroup 개념 없음 => VMGroup Port 설정 VM에 설정 * VMGroup TCP 설정 방법 - source 에서는 0번째 port를 vmGroup의 port로 설정 - tencent L4 LB경우 backend 전달 protocol은 TCP로 고정 참고 : 1. LB 생성시에는 nlbInfo.vmGroup 에 설정된 port 활용 가능 port수정으로 VM별 port가 달라지는 경우 이슈 발생 가능 ex) 생성 vmGroup.port = 80 -> vmA.port=80, vmB.port=80 수정 vmA.port=8080, vmB.port = 8888 일 때, VM group에 port 표현 불가 2. Backend 설정 - listener 선택 - bind realServer 항목에서 bind버튼을 각각 VM과 port 설정( vmGroup 설정 불가) | * Listener 정보 변경 불가 - TENCENT_CANNOT_CHANGE_LISTENER * Tencent 제공 프로토콜: TCP, UDP, HTTP, HTTPS, TCPSSL | * Listener TCP, UDP =>TCP로만 설정 가능 * 프로토콜 변경 불가, Port 변경 가능 * AddVMs() Port 정보 필요 - 기존작업(#587 이슈 답글 참고): Listener Port 활용 => VMGroup Port 활용으로 변경 가능할까요? -> VMGroup을 생성하지 않고 Instance와 BIND하며 VM별로 port 지정 방식, VMGroup 활용 불가 | * 프로토콜: Listener 프로토콜 의존적 - TCP(Listener) => TCP, HTTP 가능 - UDP(Listener) => CUSTOMER 가능(Port만 설정) * Port 변경 가능 | |||||||||||||||||||||||
30 | ||||||||||||||||||||||||||||
31 | IBM | 생성 | O | O | O | O | O | O | O | O(CSP) | O | O | O | X | X | O | O | O | O | X | O | O | O | O | 제공 | |||
32 | 변경 | X | X | X | X | X | X | X | X | O | X | X | X | X | O | O | O | O | X | O | O | O | O | N/A | ||||
33 | 이슈 | * Create/Update 후 긴 소요 시간 - 가변적 약 1분~5분 이상 | * 프로토콜 변경 불가 * Port 변경 가능 * IBM 제공 프로토콜: TCP, UDP * Driver: NLBInfo 에 DNSName 정보 누락 (추가 예정) | * Listener와 동일 프로토콜만 설정 가능 * VMGroup 프로토콜 변경 불가 * Port 변경 가능 | ||||||||||||||||||||||||
34 | ||||||||||||||||||||||||||||
35 | OpenStack | 생성 | O | O | O | X | O | X | O(DRV) | X | O | O | X | X | X | O | O | O | O | O | N/A(VMGroup#) | O | O | O | 제공 | |||
36 | 변경 | X | X | X | X | X | X | X | X | O(D->C) | X | X | X | X | O(D->C) | O | O | O | O | X | O | O | O | N/A | ||||
37 | 이슈 | * octavia 설치 필요 - 미설치 경우 관련 에러 반환 | * OpenStack 제공 프로토콜: TCP, HTTP * 프로토콜 변경 불가, Port는 변경 가능(Listener를 삭제 후 재생성하는 방식) * (DRV) Floating IP 부여 | * Listener와 동일 프로토콜만 설정 가능(즉, TCP) * 프로토콜 변경 불가, Port는 변경 가능(VMGroup을 삭제 후 재생성하는 방식) | * 프로토콜 변경 가능, Port 변경 불가 * Port는 VM Group Port로 고정됨 - VMGroup Port 변경시 함께 변경됨 | |||||||||||||||||||||||
38 | ||||||||||||||||||||||||||||
39 | Cloudit | 생성 | O | O | O | X | O | X | O | X | O(65535제외) | O | X | O | X | O | O | O | O | X | N/A(VMGroup#) | O | O | O | 제공 | |||
40 | 변경 | X | X | X | X | X | X | X | X | X | X | X | X | X | O | O | X | X | X | X | O | O | O | N/A | ||||
41 | 이슈 | * Listener 정보 변경 불가 * Cloudit 제공 프로토콜: TCP, HTTP, HTTPS * 65535 Port: 통계 페이지로 활용 | * Listener와 동일 프로토콜만 설정 가능 * 프로토콜 변경 불가, Port는 변경 가능 | * 프로토콜, Port 변경 불가 * Port는 VM Group Port로 고정됨 - VMGroup Port 변경시 함께 변경됨 | ||||||||||||||||||||||||
42 | ||||||||||||||||||||||||||||
43 | NCPVPC | 생성 | ||||||||||||||||||||||||||
44 | 변경 | |||||||||||||||||||||||||||
45 | 이슈 | |||||||||||||||||||||||||||
46 | ||||||||||||||||||||||||||||
47 | NCP | 생성 | ||||||||||||||||||||||||||
48 | 변경 | |||||||||||||||||||||||||||
49 | 이슈 | |||||||||||||||||||||||||||
50 | ||||||||||||||||||||||||||||
51 | NHN CLOUD | 생성 | O | O | O | X | O | X | O (Private IP) | X | O | O | X | O | O | O | O | O | O | O | O | O | O | O | 제공 | |||
52 | 변경 | X | X | X | X | X | X | X | X | X | X | X | X | X | X | O | X | X | X | X | O | O | O | X | ||||
53 | 이슈 | * Listener Protocol : TCP, HTTP, HTTPS, TERMINATED_HTTPS 지원 * Listener IP : Listener를 대표하는 IP는 없으며, NLB를 대표하는 Fixed IP(Private IP)가 자동 생성됨. Public IP는 자동 생성되지 않으며, driver에서 NLB 관련 모든 자원 생성 과정을 마친 후 LB에 Public IP로서 Floating IP 하나를 지정함. * DNS Name : 자동 생성되지 않음. (참고) TERMINATED_HTTPS 프로토콜 : HTTPS 트래픽을 수신하여 VM member에게는 HTTP 트래픽으로 전달하는 방식으로서, 최종 user와 LB 사이에서는 HTTPS로 통신함으로써 보안성을 확보하고, VM에게는 HTTP 트래픽을 넘겨줌으로써 복호화에 드는 CPU 부하를 줄일 수 있음. | (참고) VMGroup 개념의 'Pool' 생성시 protocol과 port로서 VM Member의 protocol과 port를 지정함. | (참고) HealthCheker 생성시, Health Check 대상이 되는 VM Group을 지정하고 VM Member의 port를 지정함. | (참고) * Interval : 1~5000 | (참고) * Timeout : 1~5000. Interval 보다 작아야함. | (참고) * Threshold : 1~10 | (참고) - NHN NLB 내부적으로 VM member가 Healthy인 상태 : 'ACTIVE' (Member VM 연결 완료, 정상 동작 중) - NHN NLB 내부적으로 VM member가 Unhealthy인 상태 : : 'INACTIVE' (Member VM의 헬스 체크가 수행되지 않는 상태) : 'ONLINE' (Member VM이 비활성화되어 있는 상태) : 'OFFLINE' (Member VM 연결 실패. VM 관리자에게 문의 필요) | ||||||||||||||||||||
54 | ||||||||||||||||||||||||||||
55 | KTVPC | 생성 | ||||||||||||||||||||||||||
56 | 변경 | |||||||||||||||||||||||||||
57 | 이슈 | |||||||||||||||||||||||||||
58 | ||||||||||||||||||||||||||||
59 | ||||||||||||||||||||||||||||
60 | ||||||||||||||||||||||||||||
61 | ||||||||||||||||||||||||||||
62 | ||||||||||||||||||||||||||||
63 | ||||||||||||||||||||||||||||
64 | ||||||||||||||||||||||||||||
65 | ||||||||||||||||||||||||||||
66 | ||||||||||||||||||||||||||||
67 | ||||||||||||||||||||||||||||
68 | ||||||||||||||||||||||||||||
69 | ||||||||||||||||||||||||||||
70 | ||||||||||||||||||||||||||||
71 | ||||||||||||||||||||||||||||
72 | ||||||||||||||||||||||||||||
73 | ||||||||||||||||||||||||||||
74 | ||||||||||||||||||||||||||||
75 | ||||||||||||||||||||||||||||
76 | ||||||||||||||||||||||||||||
77 | ||||||||||||||||||||||||||||
78 | ||||||||||||||||||||||||||||
79 | ||||||||||||||||||||||||||||
80 | ||||||||||||||||||||||||||||
81 | ||||||||||||||||||||||||||||
82 | ||||||||||||||||||||||||||||
83 | ||||||||||||||||||||||||||||
84 | ||||||||||||||||||||||||||||
85 | ||||||||||||||||||||||||||||
86 | ||||||||||||||||||||||||||||
87 | ||||||||||||||||||||||||||||
88 | ||||||||||||||||||||||||||||
89 | ||||||||||||||||||||||||||||
90 | ||||||||||||||||||||||||||||
91 | ||||||||||||||||||||||||||||
92 | ||||||||||||||||||||||||||||
93 | ||||||||||||||||||||||||||||
94 | ||||||||||||||||||||||||||||
95 | ||||||||||||||||||||||||||||
96 | ||||||||||||||||||||||||||||
97 | ||||||||||||||||||||||||||||
98 | ||||||||||||||||||||||||||||
99 | ||||||||||||||||||||||||||||
100 |