-
Notifications
You must be signed in to change notification settings - Fork 50
NLB Test Tool Guide
- 선행 참고 자료
-
시험 항목은 NLB 기능 시험과 NLB 검증 시험으로 구성되어 있습니다.
- 기능 시험은 NLB 생성, 정보 제공 및 삭제 등 NLB 기능에 대한 시험입니다.
- 검증 시험은 NLB에 의해 부하 분산이 제대로 동작 되는 지 확인하는 시험입니다.
-
현재 시험 항목은 TCP 중심이며, 차주(7/25-7/29) UDP 등의 시험 항목이 추가 예정입니다.
-
VM에 탑재되는 사용자 서비스를 중심으로
(1)TCP 서비스와(2)웹 서비스그리고(3)UDP 서비스로 구분하여 시험-
(1) TCP 서비스 시험: VM의 TCP 서비스를 NLB를 통해서 서비스
-
[CASE-1] 동일 프로토콜, 동일 포트
- Client 접근: ssh {NLB IP or DNSName}
- Listener 설정: TCP : 22
- VMGroup 설정: TCP : 22
- HealthChecker 설정: TCP : 22
-
[CASE-2] 동일 프로토콜, 리스너 포트 변경
- Client 접근: ssh {NLB IP or DNSName} -p 23
- Listener 설정: TCP : 23
- VMGroup 설정: TCP : 22
- HealthChecker 설정: TCP : 22
-
-
(2) 웹 서비스 시험: VM의 웹 서비스를 NLB를 통해서 서비스
-
사전 설정: SG 80번 포트 개방, VMGroup의 모든 VM에 nginx 설치(80번 포트)
-
[CASE-1] 동일 프로토콜, 동일 포트
- Client 접근: curl {NLB IP or DNSName}
- Listener 설정: TCP : 80
- VMGroup 설정: TCP : 80
- HealthChecker 설정: TCP : 80 # GCP 경우: HTTP
-
[CASE-2] 동일 프로토콜, 리스너 포트 변경
- Client 접근: curl {NLB IP or DNSName}:81
- Listener 설정: TCP : 81
- VMGroup 설정: TCP : 80
- HealthChecker 설정: TCP : 80
-
-
(3) UDP 서비스 시험: VM의 UDP 서비스를 NLB를 통해서 서비스
- TBD
-
현재 Health Checker의 Interval, Timeout, Threshold 설정 값은 다음과 같이 고정하여 시험
- Azure, GCP, Alibaba, Tencent, IBM: 다음 값으로 설정
Interval: 10 Timeout: 9 Threshold: 3 - AWS: 다음 값으로 설정
Interval: 10 Timeout: -1 Threshold: 3
- Azure, GCP, Alibaba, Tencent, IBM: 다음 값으로 설정
-
GCP 경우 다음 시험 항목만 가능
- (2)웹 서비스 시험 / [CASE-1] 시험 항목에서 HealthChecker 프로토콜을 HTTP로 설정
- 사유: VM에 Health Checking을 위한 HTTP Server 존재 필수, HealthChecker HTTP Protocol만 가능
-
-
-
https://github.com/cloud-barista/cb-spider/tree/master/test/nlb-test-curl
. |-- 0.prepare-nginx-nlb-test.sh |-- 0.prepare-nlb-test.sh |-- 1.create-nlb-TCP-22-test-AWS.sh |-- 1.create-nlb-TCP-22-test.sh |-- 1.create-nlb-TCP-23-test-AWS.sh |-- 1.create-nlb-TCP-23-test.sh |-- 1.create-nlb-TCP-80-HTTP-test-GCP.sh |-- 1.create-nlb-TCP-80-test-AWS.sh |-- 1.create-nlb-TCP-80-test.sh |-- 1.create-nlb-TCP-81-test-AWS.sh |-- 1.create-nlb-TCP-81-test.sh |-- 2.list-get-nlb-test.sh |-- 3.get-owner-vpc-nlb-test.sh (서버 전용) |-- 4.1.addvm-nlb-test.sh |-- 4.2.removevm-nlb-test.sh |-- 5.change-nlb-test.sh (변경 보류) |-- 6.gethealth-nlb-test.sh |-- 7.delete-nlb-test.sh |-- 8.teardown-nlb-test.sh |-- check-nlb-curl-call-test.sh `-- check-nlb-ssh-call-test.sh
- (1) NLB Test 준비 도구: NLB 시험에 필요한 자원 생성/삭제 및 VM nginx 설치/설정 등
- 대상 스크립트: 0.prepare-, 8.teardown-
- (2) NLB 기능 시험 도구: NLB 생성, 정보 제공, VM 추가/제거 및 삭제 등 주요 기능 시험
- 대상 스크립트: 1.create-* ~ 7.delete-*
- (3) NLB 분산 호출 검증 도구: 연속되는 LB 호출에 VM이 분산 호출(교차 선택) 되는 지 확인하는 시험
- 대상 스크립트: check-*
-
(1) 대상 CSP connection config 등록 및 image, Spec 등 시험 환경 설정
- aws 경우: ./aws/setup.env 확인
- aws2와 같이 경로 추가하여 새로운 설정 구성 가능
-
(2) 시험 단말 환경
- Spider 서버와 동일 노드에서 모든 시험 실행 필요
- ssh, curl 필요
-
(1) 시험 도구 위치로 이동
cd $CBSPIDER_ROOT/test/nlb-test-curl -
(2) 시험에 필요한 자원 및 VM 등 준비 (예시 명령은 AWS 경우임)
- VPC/Subnet/SG/Key 및 2개의 VM(vm-01, vm-02) 생성
./0.prepare-nlb-test.sh aws - 웹 서비스 시험 항목(80 by nginx)의 경우 다음을 실행하여
- 대상 VM 모두에 nginx를 설지하고,
- 대상 VM nginx default page에 VM의 Public IP 추가 필요
- AddVMs() 실행으로 VM(vm-03, vm-04) 추가했으면, 추가한 VM 이름 대상으로 실행 필요
./0.prepare-nginx-nlb-test.sh aws vm-01 ./0.prepare-nginx-nlb-test.sh aws vm-02
- VPC/Subnet/SG/Key 및 2개의 VM(vm-01, vm-02) 생성
-
(3) NLB 기능 및 검증 시험 실행
-
Create NLB 설정(프로토콜, 포트 등)에 따른 시험 항목 마다 다음 순서로 시험 스크립트를 실행합니다.
* 기능 시험: 1.Create NLB -> 2.List/Get NLB * 검증 시험: 6.GetHealth: vm-01, vm-02 Healthy 상태 확인 * 검증 시험: check: vm-01, vm-02 교차 호출 여부 확인 * 기능 시험: 4.1.AddVMs(vm-03, vm-04) to NLB (웹 서비스 시험의 경우: 위에서 설명한 nginx 설치 스크립트 실행 필요) * 검증 시험: 6.GetHealth: vm-01, vm-02, vm-03, mv-04 Healthy 상태 확인 * 검증 시험: check: vm-01, vm-02, vm-03, vm-04 교차 호출 여부 확인 * 기능 시험: 4.1.RemoveVMs(vm-03, vm-04) from NLB * 검증 시험: 6.GetHealth: vm-01, vm-02 Healthy 상태 확인 * 검증 시험: check: vm-01, vm-02 교차 호출 여부 확인 * 기능 시험: 7.Delete NLB -
시험 항목에 따라 Create NLB와 Check 실행 스크립트가 달라지며 세부 내용은 다음과 같습니다.
-
-
[TCP 서비스의 경우], 시험 항목에 맞게 다음 중 하나를 실행합니다. (AWS, GCP 제외)
./1.create-nlb-TCP-22-test.sh ./1.create-nlb-TCP-23-test.sh -
위 실행은 다음 설정으로 NLB를 생성합니다.
* Listener: TCP:22 # 또는 23 * VMGroup: TCP:22 * HealthChecer: TCP:22 - Interval: 10 - Timeout: 9 - Threshold: 3 -
[웹 서비스의 경우], 시험 항목에 맞게 다음 중 하나를 실행합니다. (AWS, GCP 제외)
- 웹 서비스의 경우 웹 서버(nginx) 설치 및 구동 필요 (위
웹 서비스 시험 항목참고)
./1.create-nlb-TCP-80-test.sh ./1.create-nlb-TCP-81-test.sh - 웹 서비스의 경우 웹 서버(nginx) 설치 및 구동 필요 (위
-
위 실행은 다음 설정으로 NLB를 생성합니다.
* Listener: TCP:80 # 또는 81 * VMGroup: TCP:80 * HealthChecer: TCP:80 - Interval: 10 - Timeout: 9 - Threshold: 3 -
[AWS의 경우], 시험 항목에 맞게 다음 중 하나를 실행합니다. (Timeout=-1)
$ ls *AWS* 1.create-nlb-TCP-22-test-AWS.sh 1.create-nlb-TCP-80-test-AWS.sh 1.create-nlb-TCP-23-test-AWS.sh 1.create-nlb-TCP-81-test-AWS.sh -
위 실행은 다음 설정으로 NLB를 생성합니다.
* Listener: TCP:22 # 또는 23 * VMGroup: TCP:22 * HealthChecer: TCP:22 - Interval: 10 - Timeout: -1 - Threshold: 3* Listener: TCP:80 # 또는 81 * VMGroup: TCP:80 * HealthChecer: TCP:80 - Interval: 10 - Timeout: -1 - Threshold: 3 -
[GCP의 경우], 시험 항목에 맞게 다음 중 하나를 실행합니다. (Listener==VMGroup, HealthCheck=HTTP)
$ ls *GCP* 1.create-nlb-TCP-80-HTTP-test-GCP.sh -
위 실행은 다음 설정으로 NLB를 생성합니다.
* Listener: TCP:80 * VMGroup: TCP:80 * HealthChecer: HTTP:80 - Interval: 10 - Timeout: 9 - Threshold: 3
-
-
-
TCP 서비스는 ssh로 호출하고, Web 서비스는 curl을 이용하여 호출하여 시험합니다.
-
[TCP 서비스 경우], 대상 NLB의 Listener 설정 포트에 따라서 다음 중 하나 실행
./check-nlb-ssh-call-test.sh aws 22 ./check-nlb-ssh-call-test.sh aws 23 -
[웹 서비스 경우], 대상 NLB의 Listener 설정 포트에 따라서 다음 중 하나 실행
./check-nlb-curl-call-test.sh aws 80 ./check-nlb-curl-call-test.sh aws 81 -
참고
- NLB 설정이 실제로 반영 되기 전까지는 check 명령을 실행하면 보통 아무것도 출력이 되지 않습니다.
- NLB 설정 반영에 시간이 좀 걸릴 수 있으며, AWS 경우 약 5분 정도 소요됩니다.
- 혹시, Check 실행 시에 에러 메시지를 확인하고 싶다면
- 다음 파일에서
>(redirection)를 포함한 뒷 부분을 제거하면 확인 가능합니다.vi common/check-nlb-ssh-test.sh
- 다음 파일에서
- NLB 설정이 실제로 반영 되기 전까지는 check 명령을 실행하면 보통 아무것도 출력이 되지 않습니다.
-
-
-
(4) NLB 검증 시험 결과 평가 방법
-
NLB 설정이 제대로 반영되면,
-
SSH 호출의 올바른 출력 예시는 다음과 같습니다. (20회 호출함)
-
2개 VM에 대한 hostname이 교차 출력 되면 성공입니다.
-
교차 되는 순서는 불규칙적입니다.
./check-nlb-ssh-call-test.sh aws 22 # 또는 23ip-10-0-10-195 ip-10-0-8-198 ip-10-0-10-195 ip-10-0-8-198 ip-10-0-10-195 ip-10-0-8-198 ip-10-0-8-198 ...
-
-
CURL 호출의 올바른 출력 예시(20회 호출함)
-
2개 VM에 대한 Public IP가 교챠 출력 되면 성공입니다.
-
교차 되는 순서는 불규칙적입니다.
./check-nlb-curl-call-test.sh aws 80 # 또는 81<title>Welcome to 18.217.189.175</title> <title>Welcome to 3.144.42.189</title> <title>Welcome to 3.144.42.189</title> <title>Welcome to 3.144.42.189</title> <title>Welcome to 3.144.42.189</title> <title>Welcome to 18.217.189.175</title> <title>Welcome to 18.217.189.175</title> ...
-
-
모든 시험 종료 시에는 자원 반납 스크립트를 실행합니다.
- VM 삭제 ~ VPC 삭제
./8.teardown-nlb-test.sh aws
- VM 삭제 ~ VPC 삭제
-
- 시험 날짜:
2022.07.21. - 적용 버전: https://github.com/cloud-barista/cb-spider/tree/308cb762ddcf8be444eb7c9fd18aa0ec67273ed1
- 시험 결과:
| CSP | 기능 시험 | 검증 시험 | 특이 사항 |
|---|---|---|---|
| AWS | OK | OK | Timeout=-1 |
| Azure | OK | OK | |
| GCP | OK | OK | VMGroup Protocol, Port=Listener's, HealthCheck:Only HTTP |
| Alibaba | OK | OK | |
| Tencent | OK | OK | |
| IBM(VPC) | OK | OK | |
| OpenStack | ? | ? | Driver단 시험: 시험 환경 이슈(HealthCheckProbe API 동작 이상) |
| CloudIt | OK | OK | Driver단 시험 |
-
Install & Start Guide
-
Features & Usage
-
- AdminWeb Tool Guide
- CLI Tool Guide
- REST API Guide
- NLI Guide
-
Design
-
Developer Guide
-
Cloud Driver Developer Guide
- Cloud Driver Developer Guide-WIP
- VM SSH Key Development Guide-WIP
- VM User Development Guide
- What is the CSP SDK API Version of drivers
- Region Zone Info and Driver API
- (StartVM TerminateVM) API Call Counts and Waiting
- StartVM and TerminateVM Main Flow of drivers
- VM Root Disk Configuration Guide
- Security Group Rules and Driver API
- Network Load Balancer and Driver API
- VM Snapshot, MyImage and Disk Overview
- Kubernetes and Driver API(PMKS, K8S)
- Tag and Cloud Driver API
- AnyCall API Extension Guide
-
Test Reports
- v0.2.8-for-espresso-release
- v0.3.0-espresso-release
- Azure:Terminating VM
- cb-user@VM: ssh login, sudo run
- v0.3.14 test for SG Source
- v0.4.0-cafemocha-release
- Test via REST API Gateway
- Test Reports of v0.4.11 (IID2 initial Version)
- Test Reports of v0.4.12 (Register & Unregister existing Resources)
- Test Reports for v0.6.0 Release
- How to ...
- How to Use AWS S3 with Credentials
- How to Use Alibaba ECS i1.* Instance Types
- How to provision GPU VMs
- How to Resolve the 'Failed to Connect to Database' Error
- How to test CB Spider with Mock Driver
- How to install CB Spider on WSL2 under 공유기/사설망
- How to install CB Spider on macOS
- How to run CB Spider Container on macOS
- How to install OpenStack on a VM for CB Spider Testing
- How to get Azure available Regions
- How to profile memory usage in Golang
- Deprecated:How to install protoc and plugins
- [For Cloud-Migrator]