본문으로 건너뛰기

대상 그룹 생성 및 관리

대상 그룹을 생성하고, 목록 조회, 정보 변경, 리스너(Listener) 연결 설정 등 대상 그룹을 관리하는 방법은 다음과 같습니다.

대상 그룹 생성

  1. 카카오클라우드 콘솔 > Beyond Networking Service > Load Balancing > 대상 그룹 메뉴로 이동합니다.

  2. 우측 상단의 [대상 그룹 생성] 버튼을 클릭합니다.

  3. 1단계: 대상 그룹 구성 화면에서 설정값을 입력 후 [다음] 버튼을 클릭합니다.

    이미지 대상 그룹 생성 1단계

    구분항목설명
    로드 밸런서가용 영역프로젝트에서 이용 가능한 가용 영역 중에서 선택
    로드 밸런서선택한 가용 영역의 모든 로드 밸런서 목록 제공
    리스너선택한 로드 밸런서의 모든 리스너 목록 및 ‘리스너를 선택하지 않음’ 항목 제공
    기본 정보대상 그룹 이름대상 그룹의 이름
    프로토콜리스너 프로토콜에 따른 선택 가능한 대상 그룹 프로토콜
    - TCP 리스너: HTTP, TCP
    - UDP 리스너: UDP
    알고리즘라운드 로빈(Round Robin), 최소 연결(Least Connections), 소스 IP(Source IP Hash) 중 선택
    - 라운드 로빈: 대상 그룹 내의 대상에 순차적으로 트래픽을 분산
    - 최소 연결: 연결 수가 적은 대상에 우선적으로 트래픽을 분산
    - 소스 IP: 동일한 IP 헤더를 사용하는 클라이언트는 반드시 동일한 대상에게 트래픽을 전송
    고정 세션(Sticky Session)리스너 x 대상 그룹 조합이 다음 경우일 때만 사용/미사용 설정 가능(TLS 리스너는 지원되지 않음)
    - TCP x TCP, UDP x UDP
    - 그 외: '미사용' 고정(비활성)
    고정 세션 유형리스너 x 대상 그룹 조합이 다음 경우일 때 선택 가능한 유형
    - TCP x TCP: 소스 IP
    - UDP x UDP: 소스 IP
    고정 기간(Stickiness duration)고정 세션(HTTP 쿠키, App 쿠키) 사용 시에만 활성화
    - 1~604800 사이 정수(기본값: HTTP 쿠키인 경우 3,600 초, 그 외 360초)
    쿠키 이름고정 세션(App 쿠키) 사용 시에만 활성화
    - App 쿠키는 사용자의 애플리케이션에서 사용하는 쿠키 이름이 입력되어야 함
    - 사용 가능 문자: 영문 대소문자/숫자/일부 특수문자(! # $ % ^ & _ * + ~ - )
    - 사용 가능 글자수: 1-255자
    상태 확인상태 확인사용 여부 설정
    유형대상 그룹의 프로토콜에 따라 선택 가능한 유형
    - HTTP 대상 그룹: HTTP, PING
    - TCP 대상 그룹: PING, TCP
    - UDP 대상 그룹: TCP, HTTP
    HTTP 메서드- 상태 확인 유형으로 HTTP 선택 시에만 설정
    - CONNECT, DELETE, GET, HEAD, OPTIONS, PATCH, POST, PUT, TRACE 중 선택
    HTTP 버전- 상태 확인 유형으로 HTTP 선택 시에만 설정
    - 1 또는 1.1 중 선택
    HTTP 상태 코드- 상태 확인 유형으로 HTTP 선택 시에만 설정
    - 단일 코드, 쉼표로 구분된 복수 코드, 하이픈(-)으로 지정한 코드 범위 입력
    체크 경로URL 형식으로 입력
    체크 주기1 이상 3600 이하 정수(기본값: 30초). 타임아웃보다 큰 값으로만 설정 가능
    타임아웃1 이상 900 이하 정수(기본값: 5초). 체크 주기보다 작은 값으로만 설정 가능
    상태 전환 기준(성공)1~10 정수(기본값: 5회)
    상태 전환 기준(실패)1~10 정수(기본값: 2회)
    정보

    알고리즘이 소스 IP일 경우 한 소스로부터 전송된 트래픽을 특정한 대상으로만 전달합니다. 따라서 별도의 고정 세션 설정을 필요로 하지 않아 해당 기능이 비활성화됩니다. 고정 세션 설정은 유지 시간을 지정하게 되므로, 고정 세션을 계속 유지하길 원하실 경우 소스 IP 사용을 권장합니다.

  4. 2단계: 대상 추가 화면에서는 1단계에서 선택한 로드 밸런서와 동일한 가용 영역와 Virtual Private Cloud(VPC)에 있는 리소스를 대상으로 추가할 수 있습니다.

  5. 대상으로 추가할 인스턴스를 선택하고 포트 번호를 입력합니다.

  6. [대상 추가] 버튼을 클릭합니다.

    • 추가한 대상 > 대상 필터: IP, 포트, 인스턴스 이름, 인스턴스 ID, 상태
주의

DSRNLB는 연결된 리스너의 프로토콜 및 대상 그룹의 대상의 포트 번호가 동일해야 하며, 이미 다른 리스너에 연결된 대상 그룹은 다른 리스너에 연결될 수 없습니다. 또한, 하나의 대상 그룹에 속한 대상 인스턴스는 모두 동일한 포트 번호가 설정되어 있어야 합니다.

  1. 대상 추가가 완료되면 [다음] 버튼을 클릭합니다.

  2. 3단계: 검토 화면에서 설정한 정보를 확인하고 [생성] 버튼을 클릭합니다.

안내

대상 그룹 생성 후 대상의 보안 그룹 설정이 필요합니다.
대상 그룹 상세 > 대상 탭에서 상태 확인 IP 주소를 확인하고, 해당 IP 주소를 대상의 보안 그룹 인바운드 규칙에 추가하시기 바랍니다.

대상 그룹 관리

대상 그룹 상세 화면에서 기존 대상 그룹을 수정 또는 삭제하거나 신규 대상을 추가할 수 있습니다.

대상 그룹 목록 조회

  1. 카카오클라우드 콘솔 > Beyond Networking Service > Load Balancing > 대상 그룹 메뉴로 이동합니다.

  2. 대상 그룹 목록을 확인합니다. 필요시, 필터를 통해 원하는 대상 그룹을 쉽게 검색할 수 있습니다.

    구분설명
    대상 그룹 이름생성할 때 입력한 이름과 생성 시 부여된 ID 표시
    프로비저닝 상태대상 그룹이 정상적으로 생성되었는지 또는 수정이나 삭제가 진행중인지에 대한 정보
    운영 상태생성된 대상 그룹이 사용 가능한 상태인지에 대한 정보
    프로토콜대상으로 트래픽을 라우팅하는데 사용되는 프로토콜
    로드 밸런서대상 그룹이 연결된 로드 밸런서 이름 및 ID
    VPC로드 밸런서가 포함된 VPC 이름 및 ID
    더 보기 아이콘이름 변경, 리스너 연결 설정, 알고리즘 설정, 대상 설정, 트래픽 가중치 설정, 상태 확인 설정, 고정 세션 설정, 삭제 기능 제공

대상 그룹 상세 조회

  1. 카카오클라우드 콘솔 > Beyond Networking Service > Load Balancing > 대상 그룹 메뉴로 이동합니다.

  2. 상세 정보를 조회하려는 대상 그룹을 선택합니다.

  3. 상세 화면의 각 탭에서 세부 정보, 대상, 상태 확인, 속성 정보를 확인할 수 있습니다.

    이미지 대상 그룹 상세

    구분설명
    세부 정보대상 그룹의 세부 정보 조회
    대상추가한 대상의 목록을 확인하고 대상의 상세 정보 조회
    상태 확인상태 확인 설정 정보 조회
    속성대상 그룹의 속성 조회

대상 그룹 이름 변경

  1. 카카오클라우드 콘솔 > Beyond Networking Service > Load Balancing > 대상 그룹 메뉴로 이동합니다.

  2. 이름을 변경할 대상 그룹의 [더 보기] 아이콘을 선택합니다.

  3. 더 보기에서 대상 그룹 이름 변경을 선택합니다.

  4. 대상 그룹 이름 변경 팝업창에서 이름을 변경하고, [변경] 버튼을 클릭합니다.

대상 그룹 삭제

  1. 카카오클라우드 콘솔 > Beyond Networking Service > Load Balancing > 대상 그룹 메뉴로 이동합니다.

  2. 삭제할 대상 그룹의 [더 보기] 아이콘을 선택합니다.

  3. 더 보기에서 대상 그룹 삭제를 선택합니다.

  4. 대상 그룹 삭제 팝업창에서 삭제 확인 문구를 입력 후, [삭제] 버튼을 클릭합니다.

리스너 연결 설정

  1. 카카오클라우드 콘솔 > Beyond Networking Service > Load Balancing > 대상 그룹 메뉴로 이동합니다.

  2. 연결 설정을 변경할 대상 그룹의 [더 보기] 아이콘을 선택합니다.

  3. 더 보기에서 리스너 연결 설정을 선택합니다.

  4. 리스너 연결 설정 팝업창에서 리스너 연결 설정을 변경 후, [적용] 버튼을 클릭합니다.

    • 리스너 연결 설정 시: 아직 연결되지 않았을 경우, 연결할 목록에서 하나의 리스너를 선택하여 연결할 수 있습니다.
    • 리스너를 연결하지 않음 설정 시: 리스너와의 연결을 해제합니다.

    이미지 대상 그룹 - 리스너 연결 설정

주의

DSRNLB의 대상 그룹은 하나의 DSRNLB에 생성된 단일 리스너에 연결할 수 있습니다.

알고리즘 설정

  1. 카카오클라우드 콘솔 > Beyond Networking Service > Load Balancing > 대상 그룹 메뉴로 이동합니다.

  2. 연결 설정을 변경할 대상 그룹의 [더 보기] 아이콘을 선택합니다.

  3. 더 보기 메뉴에서 [알고리즘 설정]을 선택합니다.

  4. 알고리즘 설정 팝업창에서 알고리즘을 변경 후, [적용] 버튼을 클릭합니다.

대상 설정

  1. 카카오클라우드 콘솔 > Beyond Networking Service > Load Balancing > 대상 그룹 메뉴로 이동합니다.

  2. 대상 설정을 변경하려는 대상 그룹을 클릭합니다.

  3. 상세 화면에서 대상 탭을 클릭 후, [대상 설정] 버튼을 클릭합니다.

  4. 대상 설정 팝업창에서 등록된 대상을 확인하고, 대상을 삭제하거나 추가 후 [적용] 버튼을 클릭합니다.

    • 대상 수정 중 초기 상태로 되돌리려면 추가한 대상 목록 상단의 [되돌리기] 버튼을 클릭합니다.
    주의
    • 하나의 대상 그룹에 설정된 대상은 모두 동일한 포트 번호로 설정되어야 합니다.
    • DSRNLB 사용 시 로드 밸런서와 대상 인스턴스는 동일한 서브넷에 존재해야 합니다.

트래픽 가중치 설정

  1. 카카오클라우드 콘솔 > Beyond Networking Service > Load Balancing > 대상 그룹 메뉴로 이동합니다.

  2. 트래픽 가중치 설정을 변경하려는 대상 그룹을 선택합니다.

  3. 상세 화면에서 대상 탭을 클릭 후, [트래픽 가중치 설정] 버튼을 클릭합니다.

  4. 트래픽 가중치 설정 팝업창에서 가중치를 변경 후, [설정] 버튼을 클릭합니다.

    • 트래픽 가중치는 0 이상 256 이하의 정수 형태로 입력할 수 있습니다.
    • 가중치는 아래와 같은 수식으로 계산되어 가중치 환산값으로 변환됩니다.
      • 가중치 환산 : (가중치/256)*100 (소수점 첫째 자리 올림)
      • 비율 : 가중치 환산 / 가중치 환산의 총합

상태 확인 설정

안내

DSRNLB의 경우 상태 확인을 정상적으로 수행하기 위해서는 대상 인스턴스 설정이 필요합니다.

  1. 카카오클라우드 콘솔 > Beyond Networking Service > Load Balancing > 대상 그룹 메뉴로 이동합니다.

  2. 상태 확인 설정을 변경하려는 대상 그룹을 선택합니다.

  3. 상세 화면에서 상태 확인 탭을 클릭 후, [상태 확인 설정] 버튼을 클릭합니다.

  4. 상태 확인 설정 팝업창에서 상태 확인 사용 여부를 변경하거나 설정값을 변경합니다.

    이미지 대상 그룹 상태 확인 설정

    구분설명
    대상 그룹현재 대상 그룹 이름
    프로토콜대상 그룹의 프로토콜에 따라 선택 가능한 유형
    - HTTP 대상 그룹: HTTP, PING
    - TCP 대상 그룹: PING, TCP
    - UDP 대상 그룹: TCP, HTTP
    상태 확인 사용 여부유형: 상태 확인 유형
    - PING: 대상에 패킷을 전송하고 대상이 보낸 응답을 확인(ICMP Ping)
    - HTTP: 설정한 경로로 패킷을 전송하고 응답을 확인
    - HTTPS: 인증서를 사용하는 대상을 대상으로 HTTP와 동일한 방식으로 응답을 확인
    - TCP: TCP 프로토콜 포트를 이용하여 대상의 상태를 확인
    체크 주기: 대상의 상태 확인 주기(단위: 초)
    - 1~3600초
    타임 아웃: 응답이 지연되는 대상을 기다리는 최대 시간 설정(단위: 초)
    - 지정된 시간을 초과하는 경우, 대상과의 통신이 실패한 것으로 간주
    - 체크 주기보다 작은 값으로 설정
    - 1~900초
    상태 전환 기준(성공): 입력 횟수만큼 상태 확인이 연속적으로 성공한 경우 정상 대상으로 판단
    상태 전환 기준(실패): 입력 횟수만큼 상태 확인이 연속적으로 실패한 경우 비정상 대상으로 판단하여 트래픽 분산 대상에서 제외
  5. 상태 확인 유형이 HTTP, HTTPS인 경우, 추가 속성을 설정할 수 있습니다.

    구분설명
    HTTP 메서드GET, HEAD, OPTIONS, POST, PUT, TRACE, PATCH, DELETE, CONNECT 중 선택
    HTTP 버전1.0 , 1.1 중 선택
    HTTP 상태 코드대상이 로드 밸런서로 응답할 것으로 예상되는 상태 코드 설정
    - 사용자가 설정한 HTTP 상태 코드대로 대상이 응답한 경우 상태 확인에 성공한 것으로 처리
    - 단일 상태 코드 입력 예시 : 200, 201
    - 다수의 상태 코드 입력 예시 : 201, 202, 401, 402
    - 범위 지정 예시 : 200-500
    체크 경로상태 확인을 수행할 경로를 URL Path를 기준으로 입력
  6. [적용] 버튼을 클릭합니다.

주의

대상 그룹의 대상이 최신 CentOS 배포판에서 제공하는 SELinux 옵션을 사용할 경우, SELinux에서 shell_exec_t 호출을 거부합니다. 따라서, PING 유형의 상태 확인는 작동하지 않습니다.

고정 세션 설정

고정 세션은 리스너와 대상 그룹 프로토콜에 따라, 일부 대상 그룹에만 설정할 수 있습니다.

리스너와 대상 그룹 프로토콜별 고정 세션 옵션
대상 그룹\리스너HTTPHTTPSTCPUDP
HTTP         HTTP 쿠키, App 쿠키XXX
HTTPSXXXX
TCPXX소스 IPX
UDPXXX소스 IP
PROXYXXXX
  1. 카카오클라우드 콘솔 > Beyond Networking Service > Load Balancing > 대상 그룹 메뉴로 이동합니다.

  2. 고정 세션 설정을 변경하려는 대상 그룹을 클릭합니다.

  3. 상세 화면에서 속성 탭을 클릭 후, [고정 세션 설정] 버튼을 클릭합니다.

  4. 고정 세션 설정 팝업창에서 사용 여부를 변경하거나 설정값을 변경 후, [적용] 버튼을 클릭합니다.

대상 인스턴스 설정

DSRNLB를 정상적으로 사용하기 위해서는 대상 그룹에 설정된 대상 인스턴스에 운영체제에 따라 추가적인 설정을 해야 합니다. 사전에 대상으로 지정될 인스턴스를 생성 후 아래의 작업들을 진행하십시오. 이 작업을 수행하지 않을 경우 상태 확인이 정상적으로 수행되지 않습니다.

출발지/목적지 확인 중지 설정

  1. 카카오클라우드 콘솔 > Virtual Machine > 인스턴스 메뉴로 이동합니다.

  2. 대상으로 설정할 인스턴스의 [더 보기] 아이콘을 선택합니다.

  3. 더 보기에서 출발지/목적지 확인 변경를 선택합니다.

  4. 출발지/목적지 확인 변경 설정 팝업창에서 출발지/목적지 확인 중지를 선택 후 [완료] 버튼을 클릭합니다.

    주의
    • 출발지/목적지 확인 중지로 설정된 인스턴스는 자신을 목적지(Destination)로 하지 않은 모든 패킷을 수신하게 됩니다. 보안상 위험을 최소화하기 위해 보안 그룹의 규칙을 상세히 설정하시기 바랍니다.
    • DSRNLB를 사용하기 위해서는 대상 인스턴스의 보안 그룹에서 DSRNLB의 프라이빗 IP 및 리스너 포트 번호에 대한 인바운드 트래픽을 허용해야 합니다.

대상 인스턴스 내 네트워크 설정

DSRNLB를 사용하기 위해서는 대상 인스턴스의 운영체제에 따른 추가적인 설정이 필요합니다. 주소 결정 프로토콜(Address Resolution Protocol, ARP) 관련 설정 및 Loopback 주소 관련 설정이 이에 포함됩니다.

  1. 대상이 될 인스턴스에 SSH를 통해 접속합니다.

  2. 아래의 명령어를 입력합니다. <private_ip_of_dsrnlb>는 이 대상 인스턴스가 설정될 대상 그룹과 연결된 DSRNLB의 프라이빗 IP 주소(예: 10.0.3.49)입니다.

    주의

    아래 명령어는 root Privilege로 수행해야 합니다. sudo -i 명령어로 전환 후 입력하세요.

    네트워크 설정
    sysctl -w net.ipv4.conf.all.arp_ignore=1
    sysctl -w net.ipv4.conf.all.arp_announce=2
    ip a del 127.0.0.1 dev lo
    ip a add <private_ip_of_dsrnlb>/32 dev lo
    ip link set dev lo up
    재부팅 시에도 설정을 유지하는 방법

    위 설정의 경우, 인스턴스를 재부팅할 때마다 다시 설정이 필요합니다. 인스턴스 재부팅 후에도 설정이 유지되도록 하기 위해서는 별도의 작업이 필요합니다. 자세한 설명은 crontab 설정으로 부팅 시 스크립트 자동 실행을 참고하시기 바랍니다.


crontab 설정으로 부팅 시 스크립트 자동 실행

Linux 운영체제의 경우, 인스턴스가 재부팅될 때 앞서 설정한 작업이 초기화되어 다시 설정이 필요합니다. 인스턴스가 재부팅되어도 설정이 적용되도록 하기 위해 앞서 작업한 설정 작업을 스크립트 파일로 저장 후, crontab 명령어로 재부팅 시 이 스크립트 파일을 실행하도록 설정할 수 있습니다.

  1. 아래의 명령어로 crontab 파일을 엽니다.

    crontab 파일 열기
    crontab -e
  2. 해당 파일에 @reboot Expression을 사용하여 재부팅 시 자동 실행될 코드를 추가합니다.

    재부팅 시 자동 실행될 코드 추가
    @reboot sh /<file_directory>/<file_name>
    파라미터설명
    <file_directory>실행될 파일이 위치된 경로
    <file_name>재부팅 시 실행될 Shell 스크립트 파일의 파일명
    - 예시: @reboot sh /home/setup_dsr.sh
  3. 실행될 Shell 스크립트를 작성합니다. 이 예제는 대상 인스턴스 내 네트워크 설정의 작업 내용 및 대상 인스턴스에서 실행되는 Process를 DSRNLB의 프라이빗 IP로 바인딩의 작업 내용을 실행하는 Shell 스크립트입니다.

    setup_dsr.sh
    #!/bin/sh
    sysctl -w net.ipv4.conf.all.arp_ignore=1
    sysctl -w net.ipv4.conf.all.arp_announce=2

    ip a del 127.0.0.1 dev lo

    #이 대상 인스턴스가 설정될 대상 그룹과 연결된 DSRNLB의 프라이빗 IP 주소
    ip a add 172.30.4.237/32 dev lo

    ip link set dev lo up

    #UDP 리스너를 사용 시 대상 인스턴스에서 실행되는 Process를 DSRNLB의 프라이빗 IP로 바인딩(UDP Server 실행)
    python3 /home/sample_python_udp_server.py
  4. 이 스크립트 파일 및 Python 스크립트 파일이 실행될 수 있도록 권한 설정을 조정합니다. 각 파일의 경로를 입력하거나 파일이 있는 경로까지 이동하여 실행하십시오.

    실행 권한 부여
    chmod +x setup_dsr.sh
    chmod +x sample_python_udp_server.py
  5. 재부팅 후 설정이 유지되고 있는지 확인합니다.

    각 항목 설정 확인
    #ARP 설정 확인
    sysctl -a | grep net.ipv4.conf.all.arp_ignore
    sysctl -a | grep net.ipv4.conf.all.arp_announce

    #Loopback IP 주소 확인
    ip a

    #UDP Server가 정상적으로 실행되고 있는지 확인(Python 스크립트에서 지정한 포트 번호를 확인)
    netstat -tuln | grep 12345

UDP 리스너 사용 시 대상 인스턴스 추가 설정

DSRNLB의 UDP 리스너를 사용할 경우, 대상 인스턴스의 운영체제는 Linux 계열만 지원됩니다. 또한, 아래의 3가지 추가 설정 중 하나를 적용해야 이용할 수 있으며, 설정을 정상적으로 완료한 경우에도 UDP 통신의 특성상 패킷 유실이 발생하여 간헐적으로 정상 작동되지 않을 수 있습니다.

대상 인스턴스에서 실행되는 Process를 DSRNLB의 프라이빗 IP로 바인딩
  1. 대상 인스턴스에서 다음의 예제 코드를 작성합니다. 본 예제에서는 Python 코드로 작성되었으나, 사용자의 편의에 따라 적절한 프로그래밍 언어로 대체할 수 있습니다.

    sample_python_udp_server.py
    import socket

    localIP = "172.30.4.237" # DSRNLB의 프라이빗 IP
    localPort = 12345 # 이 소스 코드로 실행 및 생성될 UDP Server가 사용할 포트 번호
    bufferSize = 1024

    msgFromServer = "Hello UDP Client, this is Simple UDP Server."
    bytesToSend = str.encode(msgFromServer)

    # Create a datagram socket
    UDPServerSocket = socket.socket(family=socket.AF_INET, type=socket.SOCK_DGRAM)

    # Bind to address and ip
    UDPServerSocket.bind((localIP, localPort))

    print("UDP server up and listening")
    # Listen for incoming datagrams
    while(True):
    bytesAddressPair = UDPServerSocket.recvfrom(bufferSize)
    message = bytesAddressPair[0]
    address = bytesAddressPair[1]
    clientMsg = "Message from Client:{}".format(message)
    clientIP = "Client IP Address:{}".format(address)
    print(clientMsg)
    print(clientIP)

    # Sending a reply to client
    UDPServerSocket.sendto(bytesToSend, address)
  2. 예제 코드를 실행합니다.

Linux Kernel에서 제공하는 iptables를 사용하여 NAT 설정(Stateful)
주의

NAT 수행을 위해 추가 CPU가 사용되며, DNAT가 'Stateful'이기 때문에 메모리 소비도 높을 수 있습니다.

  1. 대상 인스턴스에서 다음의 예제 코드를 작성합니다. 본 예제에서는 Python 코드로 작성되었으나, 사용자의 편의에 따라 적절한 프로그래밍 언어로 대체할 수 있습니다.

    • 이 예제 코드는 위와 동일하나, localIP 주소를 0.0.0.0으로 수정한 것입니다.
    sample_python_udp_server.py
     import socket

    localIP = "0.0.0.0"
    localPort = 12345 # 이 소스 코드로 실행 및 생성될 UDP Server가 사용할 포트 번호
    bufferSize = 1024

    msgFromServer = "Hello UDP Client, this is Simple UDP Server."
    bytesToSend = str.encode(msgFromServer)

    # Create a datagram socket
    UDPServerSocket = socket.socket(family=socket.AF_INET, type=socket.SOCK_DGRAM)

    # Bind to address and ip
    UDPServerSocket.bind((localIP, localPort))

    print("UDP server up and listening")
    # Listen for incoming datagrams
    while(True):
    bytesAddressPair = UDPServerSocket.recvfrom(bufferSize)
    message = bytesAddressPair[0]
    address = bytesAddressPair[1]
    clientMsg = "Message from Client:{}".format(message)
    clientIP = "Client IP Address:{}".format(address)
    print(clientMsg)
    print(clientIP)

    # Sending a reply to client
    UDPServerSocket.sendto(bytesToSend, address)
  2. 예제 코드를 실행합니다.

  3. iptables DNAT 규칙을 추가하기 위해 아래의 명령어를 입력합니다.

    DNAT 규칙 추가
    iptables -p udp -t nat -A POSTROUTING -j RETURN -d <private_ip_of_target> --dport <udp_server_port>
    iptables -p udp -t nat -A PREROUTING -j DNAT --dport <udp_server_port> --to-destination <private_ip_of_target> -d <private_ip_of_dsrnlb>
    항목설명
    <private_ip_of_target>대상 인스턴스 자신의 프라이빗 IP 주소
    <udp_server_port>위 예제 코드에서 설정된 포트 번호(localPort 값)
    <private_ip_of_dsrnlb>대상 인스턴스가 설정될 대상 그룹과 연결된 DSRNLB의 프라이빗 IP 주소
Linux Kernel에서 제공하는 nftable을 사용하여 NAT 설정(Stateless)
안내

nftables을 사용하려면 Linux 커널 버전이 4.10 이상이어야 합니다.

  1. 대상 인스턴스에서 Linux Kernel에서 제공하는 iptables를 사용하여 NAT 설정(Stateful)의 1번 예제 코드를 작성합니다.

  2. 예제 코드를 실행합니다.

  3. 다음 명령어를 입력합니다.

    송신 패킷의 IP 헤더에서 Source 주소 수정
    nft add table raw
    nft add chain raw postrouting {type filter hook postrouting priority 300 \; }
    nft add rule raw postrouting ip saddr <private_ip_of_target> udp sport <udp_server_port> ip saddr set <private_ip_of_dsrnlb>
    구분설명
    <private_ip_of_target>대상 인스턴스 자신의 프라이빗 IP 주소
    <udp_server_port>위 예제 코드에서 설정된 포트 번호(localPort 값)
    <private_ip_of_dsrnlb>대상 인스턴스가 설정될 대상 그룹과 연결된 DSRNLB의 프라이빗 IP 주소

대상 관리

대상 그룹에 추가된 대상을 조회하고 수정, 삭제할 수 있습니다.

주의

상태 확인 IP는 대상이 있는 서브넷별로 2개씩 생성됩니다. 상태 확인을 위해서는 해당 IP를 통한 통신을 허용해야 합니다.
상태 확인 IP 조회상태 확인 IP 통신 허용 문서를 참고하여 보안 그룹에 인바운드 규칙을 추가하시기 바랍니다.

상태 확인 IP 조회

  1. 카카오클라우드 콘솔 > Beyond Networking Service > Load Balancing > 대상 그룹 메뉴로 이동합니다.

  2. 상태 확인 IP를 조회하려는 대상 그룹을 선택합니다.

  3. 상세 화면에서 대상 탭을 선택합니다.

  4. 탭 상세 화면 상단의 서브넷별 상태 확인 IP를 클릭하면, 상태 확인 IP 목록을 조회할 수 있습니다.

상태 확인 IP 통신 허용

상태 확인 IP 통신 허용을 위한 보안 그룹 설정 방법은 두 가지가 있습니다.
사용자의 편의에 따라 아래 두 가지 방법 중 한 가지를 선택하여 통신을 허용하시기 바랍니다.

첫 번째, 대상 인스턴스의 기존 보안 그룹에 해당 IP를 허용하는 인바운드 규칙 등록
  1. 카카오클라우드 콘솔 > Beyond Networking Service > Load Balancing > 대상 그룹 메뉴로 이동합니다.

  2. 상태 확인 IP를 조회하고 통신을 허용할 대상 그룹을 선택합니다.

  3. 상세 화면에서 대상 탭을 선택합니다.

  4. 탭 상세 화면 상단의 서브넷별 상태 확인 IP를 클릭하여, 상태 확인 IP 목록을 확인합니다. 상태 확인 IP 조회 화면을 유지하거나, 해당 목록을 복사해둡니다.

  5. 탭 상세 화면 하단의 대상 목록에서 상태 확인 IP의 통신을 허용할 인스턴스를 확인하고, 해당 인스턴스의 보안 그룹 이름을 클릭합니다.

    • 연결된 보안 그룹이 여러 개인 경우, 한 개만 임의로 선택하여 등록합니다.
    • 연결된 보안 그룹 중 하나 이상에 이미 동일한 규칙이 추가된 경우, 통신이 허용된 상태입니다.
  6. 보안 그룹 상세 화면인바운드 규칙 탭에서 [인바운드 규칙 관리] 버튼을 클릭합니다.

  7. 보안 그룹 규칙 관리 팝업창에서 인바운드 규칙 탭 하단의 [추가하기] 버튼을 클릭해 새 규칙 입력칸을 추가합니다.

    이미지 보안 그룹 규칙 관리

  8. 과정 5대상 그룹 > 대상 탭 상세 정보를 바탕으로 규칙 정보를 입력하고 우측의 [적용] 버튼을 클릭합니다.

    구분설명
    프로토콜통신을 위한 프로토콜(TCP, UDP, ICMP, ALL)로 대상 그룹의 상태 확인 유형에 따라 선택
    - 상태 확인 유형이 PING인 경우: ICMP
    - 상태 확인 유형이 HTTP, HTTPS, TCP인 경우: TCP
    패킷 출발지(Source)접속을 허용할 출발지 IP
    - 대상 상세에서 확인한 상태 확인 IP 입력
    - 대상이 포함된 서브넷에서 생성된 상태 확인 IP 2개에 대하여 각각 등록
    포트통신할 포트
    - 대상의 모니터 포트 입력
    규칙 설명 (선택)규칙에 대한 설명
  9. 보안 그룹 규칙 관리 팝업창 하단의 [닫기] 버튼을 클릭해 규칙 등록을 완료합니다.

두 번째, 상태 확인을 위한 신규 보안 그룹을 생성해 대상 인스턴스에 연결
  1. 카카오클라우드 콘솔 > Beyond Networking Service > Load Balancing > 대상 그룹 메뉴로 이동합니다.

  2. 상태 확인 IP를 조회하고 통신을 허용할 대상 그룹을 선택합니다.

  3. 상세 화면에서 대상 탭을 선택합니다.

  4. 탭 상세 화면 상단의 서브넷별 상태 확인 IP를 클릭하여, 상태 확인 IP 목록을 확인합니다.
    상태 확인 IP 조회 화면을 유지하거나, 해당 목록을 복사해 둡니다.

  5. 보안 그룹 생성을 참고하여 새 보안 그룹 생성 화면에 진입합니다.

  6. 보안 그룹 생성 팝업창에서 보안 그룹 이름과 설명을 입력하고, 인바운드 규칙을 추가합니다.

    이미지 보안 그룹 생성

  7. 과정 3대상 그룹 > 대상 탭 상세 정보를 바탕으로 규칙 정보를 모두 입력합니다.

    • 하나의 보안 그룹에 상태 확인 IP를 모두 등록하고, 해당 보안 그룹에 대상 인스턴스 전체를 연결합니다.
      또는 서브넷별로 보안 그룹을 생성하여, 해당 서브넷에서 생성된 상태 확인 IP만 등록 후 동일 서브넷의 대상 인스턴스만 연결할 수도 있습니다.
    구분설명
    프로토콜통신을 위한 프로토콜(TCP, UDP, ICMP, ALL)로 대상 그룹의 상태 확인 유형에 따라 선택
    - 상태 확인 유형이 PING인 경우: ICMP
    - 상태 확인 유형이 HTTP, HTTPS, TCP인 경우: TCP
    패킷 출발지(Source)접속을 허용할 출발지 IP
    - 대상 상세에서 확인한 상태 확인 IP 입력
    - 대상이 포함된 서브넷에서 생성된 상태 확인 IP 2개에 대하여 각각 등록
    - 하나의 보안 그룹으로 관리할 경우, 전체 상태 확인 IP에 대하여 각각 등록
    포트통신할 포트
    - 대상의 모니터 포트 입력
    - 단일 포트 또는 범위로 입력 가능
    규칙 설명 (선택)규칙에 대한 설명
  8. [생성] 버튼을 클릭해 보안 그룹 생성을 완료합니다.

  9. 보안 그룹 목록에서 생성한 보안 그룹 우측의 [연결 자원 관리] 버튼을 클릭하여 대상 인스턴스를 연결하여 설정을 완료합니다.

    • 연결 자원 관리에 대한 자세한 내용은 연결 자원 관리를 참고하시기 바랍니다.

모니터 포트 설정

  1. 카카오클라우드 콘솔 > Beyond Networking Service > Load Balancing > 대상 그룹 메뉴로 이동합니다.

  2. 대상을 수정하려는 대상 그룹을 선택합니다.

  3. 상세 화면에서 대상 탭을 선택합니다.

  4. 대상 그룹에 추가된 대상 목록을 확인합니다.

  5. 모니터 포트 설정을 변경할 대상의 [더 보기] 아이콘을 선택합니다.

  6. 더 보기에서 [모니터 포트 설정]을 선택합니다.

  7. 모니터 포트 설정 팝업창에서 정보를 변경합니다.

    • 대상 포트와 동일한 포트로 설정: 트래픽 포트와 모니터 포트가 동일
    • 대상 포트와 다른 포트로 설정: 트래픽 포트와 모니터 포트가 다르므로 모니터 포트 입력
  8. [적용] 버튼을 클릭합니다.

대상 조회

  1. 카카오클라우드 콘솔 > Beyond Networking Service > Load Balancing > 대상 그룹 메뉴로 이동합니다.

  2. 대상을 조회하려는 대상 그룹을 클릭합니다.

  3. 상세 화면에서 대상 탭을 선택합니다.

  4. 대상 그룹에 추가된 대상 목록을 확인합니다. 필요시, 필터를 통해 원하는 대상을 쉽게 검색할 수 있습니다.

    구분설명
    IP대상 IP
    포트대상 포트
    인스턴스대상 인스턴스의 이름 및 ID
    서브넷대상이 포함된 서브넷 이름
    보안 그룹대상 인스턴스에 연결된 보안 그룹
    모니터 포트상태 확인이 이루어지는 포트
    가중치 비율입력한 가중치를 계산식에 의하여 환산한 가중치 비율
    프로비저닝 상태대상이 정상적으로 추가되었는지 또는 수정이나 삭제가 진행중인지에 대한 정보
    운영 상태추가한 대상이 사용 가능한 상태인지에 대한 정보
    더 보기 아이콘모니터 포트 설정, 대상 연결 해제 기능 제공

대상 수정

안내

추가한 대상의 포트는 수정할 수 없습니다. 포트 변경을 원하는 경우 대상 삭제 후, 대상 설정을 이용하여 다시 추가해야 합니다.

대상 연결 해제

  1. 카카오클라우드 콘솔 > Beyond Networking Service > Load Balancing > 대상 그룹 메뉴로 이동합니다.

  2. 대상 연결을 해제할 대상 그룹을 클릭합니다.

  3. 상세 화면에서 대상 탭을 선택합니다.

  4. 대상 그룹에 추가된 대상 목록을 확인합니다.

  5. 연결을 해제할 대상의 [더 보기] 아이콘을 클릭합니다.

  6. 더 보기에서 [대상 연결 해제]를 선택합니다.

  7. 대상 연결 해제 팝업창에서 연결 해제 확인 문구를 입력 후, [연결 해제] 버튼을 클릭합니다.

안내

대상의 연결을 해제해도 인스턴스는 삭제되지 않습니다. 다시 연결하려면 대상 설정에서 추가하시기 바랍니다.