Skip to content

NLB Test Tool Guide

ByoungSeob Kim edited this page Jul 22, 2022 · 21 revisions

NLB 기능 및 검증 시험 도구

1. 시험 항목 및 가이드

2. 시험 도구 위치

  • 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
    

3. 시험 도구 구성

  • (1) NLB Test 준비 도구: NLB 시험에 필요한 자원 생성/삭제 및 VM nginx 설치/설정 등
    • 대상 스크립트: 0.prepare-, 8.teardown-
  • (2) NLB 기능 시험 도구: NLB 생성, 정보 제공, VM 추가/제거 및 삭제 등 주요 기능 시험
    • 대상 스크립트: 1.create-* ~ 7.delete-*
  • (3) NLB 분산 호출 검증 도구: 연속되는 LB 호출에 VM이 분산 호출(교차 선택) 되는 지 확인하는 시험
    • 대상 스크립트: check-*

4. 시험 방법 및 절차

  • (1) 대상 CSP connection config 준비 및 image, Spec 등 시험 환경 설정

    • aws 경우: ./aws/setup.env 확인
    • aws2와 같이 경로 추가하여 새로운 설정 구성 가능
  • (2) 시험 및 Client 환경

    • Spider 서버와 동일 노드에서 모든 시험 실행 필요
    • ssh, curl 필요
  • (3) 시험 절차

    • 시험 도구 위치로 이동

      cd $CBSPIDER_ROOT/test/nlb-test-curl
      
    • 시험 환경 준비: VPC/Subnet/SG/Key 2개의 VM 생성(예시: AWS 경우)

      ./0.prepare-nlb-test.sh aws
      
    • 웹 서비스 시험 항목의 경우 다음을 실행하여 대상 VM 모두에 nginx를 설지 및 설정한다.

      ./0.prepare-nginx-nlb-test.sh aws vm-01
      ./0.prepare-nginx-nlb-test.sh aws vm-02
      
    • NLB 기능 및 분산 호출 검증 시험 실행

      • 실행 순서: 시험 항목(프로토콜:포트 설정) 별로 다음 순서로 시험
        Create -> List/Get -> Check(Healthy상태, 2VM 교차) -> AddVMs -> Check(Healthy상태, 4VM 교차) -> RemoveVMs -> Check(Healthy상태, 2VM 교차) -> Delete
        
      • 시험 항목(프로토콜:포트 설정)에 따라 Create와 Check 실행 스크립트가 달라지며, 나머지는 동일
    • ############ Create NLB 시험 스크립트 선택 방법 ############

      • 검증된 시험 대상 CSP: AWS, Azure, GCP, Alibaba, Tencent, IBM

      • AWS와 GCP는 별도 스크립트 선택 필요

      • OpenStack, Cloudit: 환경 이슈로 미시험

      • [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
        
      • 위 실행은 다음 설정으로 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
        
      • [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
        
    • ############ 부하 분산 시험 Check 스크립트 선택 방법 ############

      • VM에 탑재된 TCP 서비스는 ssh를 이용하고, Web 서비스는 curl을 이용한 호출 시험을 진행합니다.

      • [TCP 서비스 경우], 대상 NLB의 Listener 설정 포트에 따라서 다음 중 하나 실행

        ./check-nlb-ssh-call-test.sh aws 22
        ./check-nlb-ssh-call-test.sh aws 23
        
    • NLB 설정이 실제로 반영 되기 전까지는 check 명령을 실행하면 보통 아무것도 출력이 되지 않습니다.

      • NLB 설정 반영에 시간이 좀 걸릴 수 있으며, AWS 경우 약 5분 정도 소요됩니다.
    • 혹시, Check 실행 시에 에러 메시지를 확인하고 싶다면

      • 다음 파일에서 >(redirection)를 포함한 뒷 부분을 제거하면 확인 가능합니다.
        vi common/check-nlb-ssh-test.sh
        
    • 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>        ...
        
    • AddVMs()/RemoveVMs()와 NLB 분산 호출 검증 시험

    • 모든 시험 종료시에는 자원 반납 스크립트를 실행합니다.

      • VM 삭제 ~ VPC 삭제
      ./8.teardown-nlb-test.sh aws
      
  • (4) 결과 확인 방법

    • NLB 기능 시험: 기능별 시험 스크립트의 출력 결과를 확인한다.
    • NLB 분산 호출 검증 시험: check-nlb-*시험 스크립트의 결과를 확인한다.
      • 결과 예시
        • [SSH 호출 분산 결과]

          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
          ...
          
        • [웹 호출 분산 결과]

          <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. 시험 결과 현황


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단 시험

Table of contents



Clone this wiki locally