-
Notifications
You must be signed in to change notification settings - Fork 46
NLB Test Tool Guide
- NLB Test Tool Guide v0.2
- 선행 참고 자료
- 시험 항목 및 결과 요약 자료
- NLB 시험 항목 및 시험 결과(엑셀)
- 이하 내용은 엑셀을 함께 보시는 것이 이해에 도움이 됩니다.
- 이하 내용과 엑셀 내용이 다를 경우 엑셀이 최신 내용입니다.
-
시험 항목은 NLB 기능 시험과 NLB 검증 시험으로 구성되어 있습니다.
- 기능 시험은 NLB 생성, 정보 제공 및 삭제 등 NLB 기능에 대한 시험입니다.
- 검증 시험은 NLB에 의해 부하 분산이 제대로 동작 되는 지 확인하는 시험입니다.
-
현재 검증 시험 항목은 사용자의 TCP, HTTP 및 UDP 서비스에 대한 NLB 제공 시나리오 중심의 시험입니다.
-
VM에 탑재되는 사용자 서비스를 중심으로
(1)TCP 서비스
와(2)웹 서비스
그리고(3)UDP 서비스
로 구분하여 시험-
(1) TCP 서비스 시험: VM의 TCP 서비스를 NLB를 통해서 서비스
-
사전 설정: SG TCP 23번 포트 개방
-
[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 TCP 80번 포트 개방, VMGroup의 모든 VM에 nginx 설치(80번 포트)
-
[CASE-1] 동일 프로토콜, 동일 포트
- Client 접근: curl {NLB IP or DNSName}
- Listener 설정: TCP : 80
- VMGroup 설정: TCP : 80
- HealthChecker 설정: TCP : 80 # GCP 제외(TCP 지원 안함)
-
[CASE-2] HTTP 헬스체크 (GCP 고려)
- Client 접근: curl {NLB IP or DNSName}:81
- Listener 설정: TCP : 81
- VMGroup 설정: TCP : 80
- HealthChecker 설정: HTTP : 80
-
-
(3) UDP 서비스 시험: VM의 UDP 서비스를 NLB를 통해서 서비스
-
사전 설정: SG TCP 80번, UDP 100번 포트 개방, VMGroup의 모든 VM에 nginx 설치(80번 포트) 및 UDP 데몬(100번 포트) 가동
-
[CASE-1] TCP 헬스체크
- Client 접근: ncat {NLB IP or DNSName} {PORT}
- Listener 설정: UDP : 80
- VMGroup 설정: UDP : 100
- HealthChecker 설정: TCP : 80
-
[CASE-2] 리스너 포트 변경, HTTP 헬스체크
- Client 접근: ncat {NLB IP or DNSName} {PORT}
- Listener 설정: UDP : 100
- VMGroup 설정: UDP : 100
- HealthChecker 설정: HTTP : 80
-
-
현재 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-2], (3)UDP 서비스 시험 항목에서 HealthChecker 프로토콜 HTTP 항목
- 사유: VM에 Health Checking을 위한 HTTP Server 존재 필수, HealthChecker HTTP Protocol만 가능
-
-
-
https://github.com/cloud-barista/cb-spider/tree/master/test/nlb-test-curl
-
주요 시험 스크립트가 다음과 같고, 시험 항목별 활용해야 할 스크립트는 NLB 시험 항목 및 시험 결과(엑셀)에서 시험 항목별
Test Script
참고. |-- 0.prepare-kill-udp-daemon-nlb-test.sh |-- 0.prepare-nginx-nlb-test.sh |-- 0.prepare-nlb-test.sh |-- 0.prepare-udp-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-AWS.sh |-- 1.create-nlb-TCP-80-HTTP-test.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 |-- 1.create-nlb-UDP-100-HTTP-test-AWS.sh |-- 1.create-nlb-UDP-100-HTTP-test.sh |-- 1.create-nlb-UDP-80-test-AWS.sh |-- 1.create-nlb-UDP-80-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 |-- check-nlb-udp-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, nmap, ncat 등 필요
-
(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)의 경우 다음을 실행하여
- 아래와 같이 script를 실행 시켜서 대상 VM 모두에 nginx를 설치
- 아래의 script 실행시, "Load key "XXX-keypair-01.pem": invalid format" 이라는 error가 발생하면, 생성되어 저장된 keypair 파일을 열어서 제대로 생성되었는지 확인 필요
- 대상 VM nginx default page에 VM의 Public IP 추가 필요
- AddVMs() 실행으로 VM(vm-03, vm-04) 추가했으면, 추가한 VM 이름 대상으로 실행 필요
- 아래의 script 실행으로 nginx 설치/구동이 완료되면 health check시 healthy VM으로 포함됨.
./0.prepare-nginx-nlb-test.sh aws vm-01 ./0.prepare-nginx-nlb-test.sh aws vm-02
- 아래와 같이 script를 실행 시켜서 대상 VM 모두에 nginx를 설치
- 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 azure ./1.create-nlb-TCP-23-test.sh azure ...
-
위 실행은 다음 설정으로 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 azure ./1.create-nlb-TCP-81-test.sh azure ...
- 웹 서비스의 경우 웹 서버(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
-
-
- 아래와 같이 NLB VMGroup의 health check를 실행한다.
./6.gethealth-nlb-test.sh aws
- 아래와 같이 NLB VMGroup의 health check를 실행한다.
-
-
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분 정도 소요됩니다.
- 위의 웹 서비스 테스트시 각 VM으로부터 제대로된 응답이 없으면, nginx가 제대로 구동되어있는지 확인 필요
- 혹시, 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 # 또는 23
ip-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> ...
-
-
-
(5) NLB 기능 및 동작 검증 완료 후 자원 삭제 방법
- 각 시험 중에 NLB 삭제를 위해서는 아래의 스크립트를 실행하여 NLB를 반납한다.
- NLB에 포함된 모든 자원 반납
./7.delete-nlb-test.sh aws
- NLB에 포함된 모든 자원 반납
- 모든 시험 종료 후에는 prepare 했던 자원을 아래의 스크립트를 실행하여 반납합니다.
- VM 삭제 ~ VPC 삭제
./8.teardown-nlb-test.sh aws
- VM 삭제 ~ VPC 삭제
- 각 시험 중에 NLB 삭제를 위해서는 아래의 스크립트를 실행하여 NLB를 반납한다.
- 다음 링크 참고
- V0.1 => V0.2
- UDP 서비스 시험 항목 및 시험 결과 추가
-
Install & Start Guide
-
Features & Usage
-
- AdminWeb Tool Guide
- CLI Tool Guide
- REST API 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
- Price 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 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]