애플리케이션 로드 밸런서 작성

IBM Cloud® Application Load Balancer for VPC(ALB)를 작성하여 인바운드 트래픽을 여러 인스턴스에 분배할 수 있습니다. 가상 서버 인스턴스, 베어메탈 서버 인스턴스 및 로드밸런서에 액세스할 수 있는 IP 주소가 있는 기타 장치(예: IBM Cloud Direct Link 을 통해 연결된 Power Systems™ Virtual Server 인스턴스)와 함께 ALB를 사용할 수 있습니다.

콘솔에서 애플리케이션 로드 밸런서 생성하기

ALB를 작성하려면 다음을 수행하십시오.

  1. 브라우저에서 IBM Cloud 콘솔을 열고 계정에 로그인하세요.

  2. 탐색 메뉴 메뉴 아이콘을 선택한 다음 인프라 VPC 아이콘 > 네트워크 > 로드 밸런서를 클릭합니다.

  3. 'VPC용 로드 밸런서' 페이지에서 [ 생성]을 클릭합니다.

  4. 로드 밸런서 유형에서는 ‘애플리케이션 로드 밸런서(ALB) ’ 타일을 선택하십시오.

  5. '위치' 섹션에서 필요한 경우 다음 필드를 수정하십시오.

    • 지역: 로드 밸런서를 작성하려는 지역을 의미합니다.
  6. 세부 정보 섹션에서 다음 정보를 입력하십시오.

    • 이름: 로드 밸런서의 이름을 입력하십시오(예: my-load-balancer).

    • 리소스 그룹: 로드 밸런서의 리소스 그룹을 선택하십시오.

    • 태그: (선택 사항) 자료를 정리하고 쉽게 찾을 수 있도록 태그를 추가하세요. 나중에 태그를 추가할 수 있습니다. 자세한 정보는 태그에 대한 작업을 참조하십시오.

    • 액세스 관리 태그: (선택사항) 액세스 제어 관계를 구성하는 데 도움이 되도록 자원에 액세스 관리 태그를 추가하십시오. 액세스 관리 태그의 유일한 지원 형식은 key:value입니다. 자세한 정보는 태그를 사용하여 리소스에 대한 액세스 제어를 참조하십시오.

    • 가상 프라이빗 클라우드: VPC를 선택하십시오.

    • 서브넷: 로드 밸런서를 작성할 서브넷을 선택하십시오. 애플리케이션의 가용성을 최대화하려면 여러 구역의 서브넷을 선택하십시오.

      ALB당 15개를 초과하는 서브넷을 할당할 수 없습니다.

    • 유형: 로드 밸런서 유형을 선택하십시오.

      • 퍼블릭 로드 밸런서는 공용 IP 주소를 가지고 있으므로, 인터넷을 통해 클라이언트의 요청을 라우팅할 수 있습니다.
      • 프라이빗 로드 밸런서는 프라이빗 IP 주소를 가지고 있으므로, 동일한 리전 및 VPC 내부의 클라이언트만 이 로드 밸런서에 접근할 수 있습니다.
    • DNS 유형: ‘공용’ 또는 ‘사설’ 중 하나를 선택하십시오. 비공개 DNS 영역은 IBM Cloud 에서만 확인 가능하며, 해당 계정 내에서 명시적으로 허용된 네트워크 또는 계정 간 액세스 권한이 있는 경우에만 확인할 수 있습니다.

      비공개 유형에 한해 바인딩을 클릭하여 DNS 인스턴스 및 영역 정보를 입력한 다음 바인딩을 클릭합니다.

  7. '백엔드 풀' 섹션에서 [ 생성 ]을 클릭하고 다음 정보를 입력하여 백엔드 풀을 생성합니다. 풀은 하나 이상 작성할 수 있습니다.

    • 이름: 풀의 이름을 입력하십시오(예: my-pool).
    • 풀 프로토콜: 이 풀에 속한 인스턴스에 적용할 프로토콜을 선택하십시오. 풀 프로토콜은 리스너 프로토콜과 호환되어야 합니다. HTTP 또는 HTTPS 리스너의 경우 풀 프로토콜로 HTTP 을 사용합니다. TCP 리스너의 경우 풀 프로토콜로 TCP 을 사용합니다.
    • 세션 일관성: 특정 사용자의 세션 중에 모든 요청이 동일한 인스턴스에 전송되는지 선택하십시오.
    • 프록시 프로토콜: ‘사용 안 함’ (기본값), ‘버전 1’ 또는 ‘버전 2’ (프록시 프로토콜 헤더의 버전) 중에서 선택합니다. 프록시 프로토콜은 백엔드 풀로 전송되는 TCP, HTTP 및 HTTPS 패킷에 프록시 프로토콜 헤더를 추가합니다. 이 설정을 사용하면 백엔드 서버가 로드 밸런서가 프록시 프로토콜 헤더에 설정한 클라이언트 IP 및 포트 정보를 가져올 수 있습니다.
    • 방법: 로드 밸런서가 풀의 인스턴스 간에 트래픽을 분배하는 방법을 선택하십시오.
      • 최소 연결: 현재 연결 수가 가장 적은 인스턴스에 요청을 전달합니다.
      • 라운드 로빈: 요청을 차례대로 각 인스턴스에 전달합니다. 모든 인스턴스가 대략 동일한 수의 클라이언트 연결을 수신합니다.
      • 가중치 라운드 로빈: 요청을 해당 가중치에 비례하여 각각의 인스턴스로 전달합니다. 예를 들면, 인스턴스 A, B, C가 있고 이들의 가중치는 60, 6030(으)로 설정됩니다. 인스턴스 A 및 B는 동일한 수의 연결을 수신하고 인스턴스 C는 그 절반의 연결을 수신합니다.
    • 상태 검사: 로드 밸런서가 인스턴스 상태를 확인하는 방식을 구성합니다.
      • 상태 검사 경로: 상태 검사 경로는 HTTP가 상태 검사 프로토콜로 선택된 경우에만 적용 가능합니다. 상태 검사 경로는 풀의 인스턴스에 HTTP 상태 검사 요청을 보내기 위해 로드 밸런서가 사용하는 URL을 지정합니다. 기본적으로 상태 확인은 루트 경로(/)로 전송됩니다.
      • 상태 프로토콜: 로드 밸런서가 풀의 인스턴스에 상태 확인 메시지를 전송하는 데 사용되는 프로토콜입니다.
      • 상태 확인 포트(선택 사항): 상태 확인 요청을 전송할 포트입니다. 기본적으로 상태 확인은 트래픽이 인스턴스로 전송되는 동일한 포트에서 전송됩니다.
      • 간격(초): 연속된 두 번의 상태 확인 시도 사이의 간격(초 단위). 기본적으로 상태 확인은 5초마다 전송됩니다.
      • 타임아웃(초): 시스템이 상태 확인 요청에 대한 응답을 기다리는 최대 시간입니다. 기본적으로 로드 밸런서는 2초 동안 응답을 기다립니다.
      • 최대 재시도 수: 인스턴스가 비정상 상태임을 선언하기 전에 로드 밸런서가 시도하는 상태 확인 시도의 최대 수입니다. 기본적으로 두 번의 상태 확인이 실패하고 나면 인스턴스가 비정상 상태로 간주됩니다.
  8. (선택 사항) ‘요청 설정’을 선택하여 상태 확인 요청 값을 사용자 지정할 수 있습니다. 값을 지정하지 않으면 기본 설정이 적용됩니다.

    • 요청 메서드: GET 또는 POST 중 하나를 선택하십시오. 두 메서드 모두에 대해 요청 헤더를 사용자 정의할 수 있습니다. POST 메서드를 사용할 때, 선택적으로 요청 본문을 사용자 정의할 수 있습니다.
    • 요청 본문: 상태 확인에 사용할 HTTP 요청 본문을 포함하십시오. 명시되지 않은 경우, 상태 확인 요청에는 요청 본문이 포함되지 않습니다.
    • 호스트 헤더: 요청이 HTTP/1.1 프로토콜을 사용하도록 보장하기 위해 호스트 헤더를 포함합니다. 그렇지 않은 경우, 시스템은 기본적으로 HTTP/1.0 을 사용합니다.
    • 다른 요청 헤더 추가: 하나 이상의 요청 헤더를 추가합니다.
    • 헤더 이름 : GET 요청 메서드의 경우, content-type, ` `accept, authorization, ` `cookie, origin, ` `referrer 또는 user-agent`` 중 하나를 선택하십시오. POST 요청 메서드의 경우, content-type, content-length, application-json 또는 accept-encoding 중 하나를 선택하십시오.
    • : 지정된 헤더 이름에 해당하는 값을 입력하십시오.

    프라이빗 경로 네트워크 부하 분산 장치(PPNLB)의 경우, GET API 응답에 상태 모니터링 요청 및 응답 필드가 반환되지 않는 알려진 문제가 있습니다.

  9. (선택 사항) ‘응답 설정’을 선택하여 상태 확인 응답 값을 사용자 지정할 수 있습니다. 값을 지정하지 않으면 기본 설정이 적용됩니다.

    • 응답 본문: 응답 본문 내용을 입력하세요.

    • 응답 코드: 100~599 범위 내에서 쉼표로 구분된 여러 값을 지정할 수 있습니다. 범위를 지정하려면 XX를 사용하십시오. 예를 들어, 2XX 에서 200-299를 확인할 수 있습니다.

      HTTP 데이터를 평문으로 전송하므로 중간에서 가로채일 수 있어 안전하지 않은 것으로 간주됩니다. 프로토콜로는 http 대신 https 을 사용하는 것이 권장됩니다. 자세한 내용은 “ HTTP 가 안전하지 않은 이유는 무엇인가요? ”를 참조하세요.

      로드 밸런서는 비정상 인스턴스로 연결을 전송하는 작업을 중지하지만 이러한 인스턴스의 상태는 계속 모니터하며 두 번의 연속적인 상태 검사 시도를 패스하여 해당 인스턴스가 정상이 되면 사용을 재개합니다.

      풀의 인스턴스가 비정상이며 애플리케이션이 정상적으로 실행되고 있다고 판단되는 경우 상태 프로토콜 및 상태 경로 값을 다시 확인하십시오. 또한 인스턴스가 연결된 보안 그룹을 검사하여 해당 규칙에서 로드 밸런서와 인스턴스 간의 트래픽을 허용하는지 확인하십시오.

  10. 작성을 클릭하여 백엔드 풀을 작성하십시오.

    백엔드 풀을 작성한 후 서버 인스턴스를 연결할 수 있습니다.

  11. 새 풀에 서버 인스턴스를 추가하려면 테이블의 서버 인스턴스 열에서 서버 연결을 클릭하십시오.

    • 가상 서버 인스턴스 및 베어메탈 서버와 같은 VPC 장치를 풀에 추가하려면 VPC 디바이스 탭을 선택하십시오. 각 인스턴스에 대해 다음 정보를 지정하십시오.

      • 인스턴스를 선택할 서브넷을 하나 이상 선택하십시오.

      • 인스턴스를 선택하십시오. 인스턴스에 복수의 인터페이스가 포함되어 있는 경우 올바른 IP 주소를 선택했는지 확인하십시오.

      • 인스턴스에 트래픽을 전송하는 데 사용되는 포트를 지정하십시오.

      • 풀이 가중치 적용된 라운드 로빈 방법을 사용하는 경우에는 각 인스턴스의 가중치를 지정하십시오.

        0 가중치를 인스턴스에 지정하면 새 연결이 해당 인스턴스로 전달되지 않지만 현재 연결이 활성 상태인 동안에는 기존 트래픽이 계속해서 이동한다는 것을 의미합니다. 0의 가중치를 적용하면 인스턴스를 단계적으로 종료하고 서비스 회전에서 제거하는 데 도움이 될 수 있습니다.

      • 포트 및 가중치 구성을 클릭한 다음 트래픽이 인스턴스로 전달되는 데 사용된 포트를 지정하십시오.

    • IBM Power Systems Virtual Server 안에 포함된 서버 등 백엔드 풀에 다른 서버 인스턴스를 연결하려면 기타 탭을 선택한 다음 추가를 클릭하십시오. 각 인스턴스에 대해 다음 정보를 지정하십시오.

      • 디바이스의 사설 IP 주소를 지정하십시오.

      • 인스턴스에 트래픽을 전송하는 데 사용되는 포트를 지정하십시오.

      • 풀이 가중치 적용된 라운드 로빈 방법을 사용하는 경우에는 각 인스턴스의 가중치를 지정하십시오.

        0 가중치를 인스턴스에 지정하면 새 연결이 해당 인스턴스로 전달되지 않지만 현재 연결이 활성 상태인 동안에는 기존 트래픽이 계속해서 이동한다는 것을 의미합니다. 0의 가중치를 적용하면 인스턴스를 단계적으로 종료하고 서비스 회전에서 제거하는 데 도움이 될 수 있습니다.

    • 연결을 클릭하여 서버 인스턴스를 백엔드 풀에 연결하십시오.

  12. 프런트엔드 리스너 섹션에서 리스너 작성을 클릭하고 다음 정보를 지정하여 리스너를 작성하십시오. 리스너는 하나 이상 작성할 수 있습니다.

    • 프로토콜: 수신 요청을 수신하는 데 사용할 프로토콜입니다.
    • 프록시 프로토콜: 프록시 프로토콜 트래픽을 승인하기 위해 프론트 엔드 리스너를 허용할지 여부를 선택하십시오.
    • 포트: 요청이 수신되는 청취 포트입니다.
    • 백엔드 풀: 이 리스너에서 트래픽을 전달할 기본 백엔드 풀입니다.
    • 최대 연결 수(선택사항): 리스너가 허용하는 최대 동시 연결 수입니다.
    • IAM 인증: 이 리스너에 대해 선택된 프로토콜이 IAM( HTTPS )인 경우, 인스턴스 또는 CRN을 통해 IAM 인증을 지정해야 합니다.
    • Secrets ManagerHTTPS 가 이 리스너에 대해 선택된 프로토콜인 경우, 시크릿 매니저를 선택하거나 생성해야 합니다.
    • SSL 인증서: 이 리스너에 대해 선택된 프로토콜이 HTTPS인 경우에는 SSL 인증서를 선택해야 합니다. 로드 밸런서에 SSL 인증서에 액세스할 권한이 부여되었는지 확인하십시오.
    • 제한시간 (초) (선택사항): 유휴 제한시간 기간이 경과할 때까지 데이터를 보내거나 받지 않은 경우 로드 밸런서가 연결을 닫는 최대 제한시간입니다. 최소 및 최대 시간 제한 값은 50초와 2시간입니다. 이 값은 클라이언트와 서버 모두에 적용됩니다. 시간 제한을 2시간 이상으로 늘리려면 필요한 시간 제한 값에 대한 비즈니스 요구 사항을 제공하는 지원 케이스를 만드세요.
  13. 작성을 클릭하여 프런트엔드 리스너를 작성하십시오.

  14. 보안 그룹 섹션에서 로드 밸런서에 연결하려는 보안 그룹을 선택하거나 작성을 클릭하여 ALB에 연결할 새 보안 그룹을 작성하십시오.

    보안 그룹이 로드 밸런싱 트래픽(리스너, 백엔드, 상태 검사 포트)을 허용하는지 확인하십시오. 보안 그룹을 지정하지 않으면 VPC의 기본 보안 그룹이 대신 연결됩니다.

  15. 풀 및 리스너 작성을 완료한 후 로드 밸런서 작성을 클릭하십시오.

  16. 기존 로드 밸런서의 세부사항을 보려면 로드 밸런서 페이지에서 로드 밸런서의 이름을 클릭하십시오.

  17. 선택 사항으로, 기존의 모든 풀에 대한 백업을 생성할 수 있습니다. 이렇게 하면 구성원이 실패할 경우 백업 풀이 트래픽을 관리할 수 있습니다. 이렇게 하려면 장애 조치 정책을 만들어야 합니다:

    • 애플리케이션 로드 밸런서만 둘 이상의 풀을 단일 리스너에 연결할 수 있습니다.

    • 로드 밸런서에 이미 존재하는 풀이 하나 이상 있는지 확인합니다.

      리스너는 로드 밸런서의 상위 리소스입니다. 풀을 직접( default_pool)으로 설정하여 리스너와 연결하거나, 다른 풀의 failsafe_policy.target)을 통해 참조하여 간접적으로 연결할 수 있습니다. 간접 참조된 풀은 이미 리스너에 연결되어 있어야 합니다.

    • 로드 밸런서의 상태가 활성으로 변경된 후, 백엔드 풀 탭을 선택합니다.

    • 풀 목록 페이지에서 [편집 ]을 클릭한 다음, 다음 정보를 입력하십시오:

      • 동작: 앞으로를 선택하여 장애 조치 정책을 구성합니다. 이렇게 하면 구성원이 실패할 때 트래픽이 백업 풀로 전달되고 Target 섹션이 활성화됩니다.
      • Target: 대상: 호환되는 풀 목록에서 백업 풀로 사용할 풀을 선택합니다.
  18. HTTP 리스너에서 HTTPS 리스너로 트래픽을 경로 재지정할 경우 HTTPS 경로 재지정 설정으로 HTTP 리스너를 작성할 수 있습니다.

    7계층 로드 밸런싱 정책은 여기에서 정의된 설정을 덮어씁니다. 또한, HTTPS 리디렉션이 적용된 새로운 HTTP 리스너를 생성하기 전에 기존 HTTPS 리스너가 반드시 존재해야 한다는 점을 유의하시기 바랍니다.

    이를 위해 다음 작업을 수행하십시오.

    • 로드 밸런서의 상태가 활성으로 변경된 후 프론트 엔드 리스너 탭을 클릭하십시오.
    • 리스너 목록 페이지에서 작성을 클릭한 후 다음 정보를 지정하십시오.
      • 프로토콜: 프로토콜: 프로토콜로 HTTP 를 프로토콜로 선택합니다.
      • 포트: 요청이 수신되는 청취 포트를 선택합니다.
      • 최대 연결 수(선택 사항): 리스너가 허용하는 최대 동시 연결 수를 정의합니다.
      • HTTPS 경로 재지정: HTTPS 경로 재지정 구성을 사용으로 설정하기 위해 전환 단추를 클릭한 후 다음 HTTPS 경로 재지정 설정을 지정합니다.
        • HTTPS 리스너: 현재 HTTP 리스너에서 들어오는 트래픽이 리디렉션되는 대상 HTTPS 리스너입니다. 단, accept_proxy_protocol 값이 HTTP 리스너와 동일한 HTTPS 리스너 목록만 표시된다는 점에 유의하십시오.
        • 경로 재지정 URI(선택사항): 요청이 경로 재지정되는 URL입니다.
        • 상태 코드: 로드 밸런서가 리턴된 응답의 상태 코드입니다.
  19. 특정 기준에 따라 HTTP 또는 HTTPS 프론트 엔드 리스너의 특정 수신 트래픽을 경로 재지정, 전달 또는 거부하려면 7계층 정책을 구성하십시오.

    • 로드 밸런서의 상태가 활성으로 변경되고 나면 탐색에서 프론트 엔드 리스너를 클릭하고 작성한 리스너의 정책 열에 있는 값을 클릭하십시오.
    • 정책 페이지에서 정책 추가를 클릭하고 다음 정보를 지정하여 정책을 작성하십시오. 여러 개의 정책을 작성할 수 있습니다.
      • 이름: 정책의 이름을 입력하십시오(예: my-policy). 이름은 리스너에서 고유해야 합니다.
      • 조치: 정책의 모든 규칙이 일치하면 수행할 조치입니다. 403 응답이 있는 요청을 거부하거나, 요청을 구성된 URL 및 응답 코드로 경로 재지정하거나, HTTP 리스너에서 HTTPS 리스너로 트래픽을 경로 재지정하거나, 요청을 특정 백엔드 풀로 전달할 수 있습니다. 수신 요청이 정책의 규칙과 일치하지 않으면, 요청은 리스너의 기본 백엔드 풀로 전달됩니다.
      • 우선순위: 각 조치 유형에서 정책은 우선순위의 오름차순으로 평가됩니다. 트래픽을 거부하는 정책은 우선순위에 관계없이 항상 먼저 평가합니다. 다음으로 트래픽의 경로를 재지정하는 정책을 평가한 다음, 트래픽을 전달하는 정책을 평가합니다.
      • 경로 재지정: 조치가 경로 재지정으로 설정된 경우 요청의 경로를 재지정할 URL입니다. URL 를 전부 제공하거나 URI의 매개 변수를 제공해야 합니다. URL 를 사용하는 경우 모든 수신 트래픽은 이 URL 로 리디렉션됩니다. URI 매개변수를 사용하는 경우 매개변수의 수신 값을 사용하여 수신 트래픽 요청의 값을 유지할 수 있습니다. 여기에는 프로토콜, 포트, 호스트, 경로 및 쿼리가 포함됩니다. URI 매개 변수의 기본값은 원래 수신 값과 동일합니다. 들어오는 값을 유지하려면 다음과 같이 제공하십시오.{protocol},{port},{host},{path}, 그리고 {query}. 예를 들어 들어 들어오는 요청의 호스트가 ibm.com 인 경우 기본값은 들어오는 ibm.com 값과 동일한 {host} 입니다.
      • 상태 코드: 조치가 경로 재지정으로 설정된 경우 로드 밸런서가 리턴한 응답의 상태 코드입니다.
      • 전달: 조치가 풀에 전달로 설정된 경우 요청이 전달될 가상 서버 인스턴스의 백엔드 풀입니다.
    • 정책 페이지에서 다음 구성을 사용하여 HTTPS 경로 재지정 정책을 작성할 수도 있습니다.
      • 이름: 정책의 이름을 입력하십시오(예: my-policy). 이름은 리스너에서 고유해야 합니다.
      • 작업: HTTPS로 리디렉션 옵션을 선택하십시오.
      • HTTPS 리스너: 현재 HTTP 리스너의 트래픽이 리디렉션되는 대상 HTTPS 리스너입니다. 단, accept_proxy_proxy 값이 HTTP 리스너와 동일한 HTTPS 리스너 목록만 표시된다는 점에 유의하십시오.
      • 경로 재지정 URI(선택사항): 요청이 경로 재지정되는 URL입니다.
      • 상태 코드: 로드 밸런서가 리턴된 응답의 상태 코드입니다.
    • 정책 페이지에서 정책의**규칙 추가 **를 클릭하십시오. 정책의 규칙이 있으면 규칙 열의 값을 클릭하여 규칙을 추가하십시오.
    • 규칙 창에서 규칙 추가를 클릭하고 다음 정보를 지정하여 규칙을 작성하십시오. 정책의 규칙을 여러 개 작성하는 경우 모든 규칙이 일치할 때만 정책이 적용됩니다.
      • 조건: 규칙을 평가하는 데 사용할 조건을 지정합니다.
      • Type: 규칙으로 평가할 정보 유형: 요청이 시작된 호스트 이름, HTTP 헤더 필드 또는 URL의 경로입니다.
      • : 일치시킬 값입니다.
      • : 규칙 유형이 헤더이면 평가할 HTTP 헤더 필드의 이름입니다. 예를 들어 HTTP 헤더에서 쿠키를 일치시키려면 키에 쿠키를 입력하십시오.

CLI를 사용하여 애플리케이션 로드 밸런서 생성하기

다음 예제는 CLI를 사용하여 애플리케이션 로드 밸런서( Application Load Balancer for VPC, ALB)를 생성하는 방법을 보여줍니다. 이 예는 포트 9090을 청취하는 TCP 서버를 실행하는 하나의 VPC 가상 서버 인스턴스(0716_6acdd058-4607-4463-af08-d4999d983945 ID) 앞에 있습니다. 로드 밸런서에는 TCP 서버에 대한 보안 액세스를 허용하는 프론트 엔드 리스너가 있습니다.

CLI를 사용하여 애플리케이션 로드 밸런서를 생성하려면 다음 단계를 따르십시오

  1. CLI 환경을 설정하십시오.

  2. CLI를 통해 터미널을 사용하여 계정에 로그인하십시오. 비밀번호를 입력하면 시스템이 사용할 계정 및 지역에 대한 프롬프트를 표시합니다.

    ibmcloud login --sso
    
  3. 로드 밸런서를 작성하십시오.

    ibmcloud is load-balancer-create alb-test public --subnet 0896-b1f24514-89dc-4afd-b0e2-5489a43cf45c --family application
    

    샘플 출력:

    ibmcloud is load-balancer-create my-lb public --subnet my-subnet
    Creating load balancer my-lb under account vpcdemo as user test@ibm.com..
    
    ID                                 r026-ec6717fa-aa6c-46c4-94ff-4ccd193ee423   
    Name                               my-lb   
    CRN                                crn:v1:bluemix:public:is:au-syd:a/7f75c7b025e54bc5635f754b2f888665::load-balancer:r026-ec6717fa-aa6c-46c4-94ff-4ccd193ee423   
    Family                             application   
    Host name                          ec6717fa-au-syd.lb.appdomain.cloud   
    Subnets                            ID                                          Name      
                                    02h7-16f74a61-b586-4143-92df-dbc4a047bd5c   my-subnet      
    
    Public IPs                            
    Private IPs                           
    Provision status                   create_pending   
    Operating status                   offline   
    Is public                          true   
    Is private path                    false   
    Listeners                             
    Pools                              ID   Name      
    
    Resource group                     ID                                 Name      
                                    bdd96715c2a44f2bb60df4ff14a543f5   -      
    
    Created                            2026-05-26T14:47:06+05:30   
    Availability                       subnet   
    Instance Group Supported           true   
    SourceIP Session Supported         true   
    Security groups supported          true   
    UDP Supported                      false   
    Failsafe policy actions            fail,drop,forward   
    Access mode                        public   
    Advanced Health Checks Supported   true   
    FQDN Pool Members Supported        true     
    
  4. 풀을 작성하십시오.

    ibmcloud is load-balancer-pool-create alb-pool r134-1b3d2967-d395-4023-8705-829454081e23  weighted_round_robin tcp 10  --failsafe-policy-action forward --failsafe-policy-target pool2
    

    샘플 출력:

    Creating pool alb-pool of load balancer r006-99b5ab45-6357-42db-8b32-5d2c8aa62776  under account IBM Cloud Network Services as user test@ibm.com...
    
    ID                         r006-3b66d605-6aa5-4166-9f66-b16054da3cb0
    Name                       alb-pool
    Protocol                   tcp
    Algorithm                  weighted_round_robin
    Instance group             ID   Name
                               -    -
    
    Health monitor             Type   Port   Health monitor URL   Delay   Retries   Timeout
                               http   8080   /                    10      2         5
    
    Failsafe policy            Action    Target ID                                   Target name   Healthy Member Threshold Count
                               forward   r006-815e16e7-8729-4d9e-9203-936a6b615ee1   pool2         0
    
    Session persistence type   source_ip
    Members
    Provision status           active
    Created                    2020-08-27T14:45:42.038-05:00
    
  5. 구성원을 작성하십시오.

    ibmcloud is load-balancer-pool-member-create r006-99b5ab45-6357-42db-8b32-5d2c8aa62776 r006-3b66d605-6aa5-4166-9f66-b16054da3cb0 9090 0716_6acdd058-4607-4463-af08-d4999d983945 --weight 70
    

    샘플 출력:

    Creating member of pool r006-3b66d605-6aa5-4166-9f66-b16054da3cb0 under account IBM Cloud Network Services as user test@ibm.com...
    
    ID                 r006-61f8b000-a90d-4abe-909e-c507dffec565
    Port               9090
    Target             0716_6acdd058-4607-4463-af08-d4999d983945
    Weight             70
    Health             unknown
    Created            2020-08-27T14:59:55.446-05:00
    Provision status   create_pending
    
  6. 리스너를 작성하십시오.

    $ibmcloud is load-balancer-listener-create r006-99b5ab45-6357-42db-8b32-5d2c8aa62776 7070 tcp --default-pool r006-3b66d605-6aa5-4166-9f66-b16054da3cb0 -idle-connection-timeout 30
    

    샘플 출력:

    $ibmcloud is load-balancer-listener-create r006-99b5ab45-6357-42db-8b32-5d2c8aa62776 7070 tcp --default-pool r006-3b66d605-6aa5-4166-9f66-b16054da3cb0 -idle-connection-timeout 30
    
    Sample output:
    Creating listener of load balancer r006-99b5ab45-6357-42db-8b32-5d2c8aa62776 under account IBM Cloud Network Services as user test@ibm.com...
    ID                      r006-2847a948-f9b6-4fc1-91c6-f1c49dac3eba
    Certificate instance    -
    Connection limit        -
    Idle connection timeout 30
    Port                    7070
    Protocol                tcp
    Default pool            r006-3b66d605-6aa5-4166-9f66-b16054da3cb0
    Provision status        create_pending
    Created                 2020-08-27T15:16:08.643-05:00
    

    자세한 옵션은 로드밸런서에 대한 VPC CLI 참조를 참조하세요.

  7. 정책을 만듭니다.

    ibmcloud is load-balancer-listener-policy-create 72251a2e-d6c5-42b4-97b0-b5f8e8d1f479 72b27b5c-f4b0-48bb-b954-5becc7c1dcb3 --action redirect --priority 2 --target-http-status-code 301 --target-url "https://{host}:443/{path}"
    

    샘플 출력:

    Creating policy of load balancer listener 72b27b5c-f4b0-48bb-b954-5becc7c1dcb3 under account IBM Cloud Network Services as user test@ibm.com...
    
    ID                      r006-4847a949-f9b6-4fc1-71c6-d1c49dac3ebc
    Action                  redirect
    Priority                2
    Http status code        301
    Target Url              https://{host}:443/{path}
    Provision status        create_pending
    Created                 2024-04-23T15:16:08.643-05:00
    
  8. 로드 밸런서에 대한 세부사항을 가져오십시오.

    ibmcloud is load-balancer r006-99b5ab45-6357-42db-8b32-5d2c8aa62776
    

    샘플 출력:

    Getting load balancer r006-99b5ab45-6357-42db-8b32-5d2c8aa62776 under account IBM Cloud Network Services as user test@ibm.com...
    
    ID                 r006-99b5ab45-6357-42db-8b32-5d2c8aa62776
    Name               alb-test
    CRN                crn:v1:public:is:us-south-1:a/123456::load-balancer:r006-99b5ab45-6357-42db-8b32-5d2c8aa62776
    Family             Application
    Host name          99b5ab45-us-south.lb.test.appdomain.cloud
    Subnets            ID                                          Name
                       0896-b1f24514-89dc-4afd-b0e2-5489a43cf45c   alb-subnet
    
    Public IPs         150.238.50.78, 150.238.54.95
    Private IPs        10.240.0.58, 10.240.0.59
    Provision status   active
    Operating status   online
    Is public          true
    Listeners          r006-2847a948-f9b6-4fc1-91c6-f1c49dac3eba
    Pools              ID                                          Name
                       r006-3b66d605-6aa5-4166-9f66-b16054da3cb0   alb-pool
    
    Resource group     ID                                 Name
                       3021f90279574ce287dd5fba82c08899   Default
    
    Created            2020-08-27T14:34:34.732-05:00
    

API를 사용하여 애플리케이션 로드 밸런서 생성하기

다음 예는 API를 사용하여 80 포트에서 청취하는 웹 애플리케이션을 실행하는 두 개의 VPC 가상 서버 인스턴스(192.168.100.5192.168.100.6) 앞의 애플리케이션 로드 밸런서를 작성하는 방법을 보여줍니다. 로드 밸런서에는 HTTPS를 사용하여 웹 애플리케이션에 대한 보안 액세스를 허용하는 프론트 엔드 리스너가 있습니다.

다음 예제에서는 API를 사용하여 VPC, 서브넷 및 인스턴스를 프로비저닝하는 전제조건 단계를 건너뜁니다.

API를 사용하여 애플리케이션 로드 밸런서를 생성하려면 다음 단계를 따르십시오:

  1. API 환경을 설정하십시오.

  2. API 명령에 사용할 변수에 다음 값을 저장하십시오.

    • ResourceGroupId - 먼저 리소스 그룹을 가져온 후 변수를 채우십시오.
    export ResourceGroupId=<your_resourcegroup_id>
    

    IBM Cloud 콘솔을 사용하여 리소스 그룹 ID를 찾을 수도 있습니다. 브라우저에서 IBM Cloud 콘솔을 열고 계정에 로그인하세요. 관리 > 계정 > 리소스 그룹을 선택합니다.

  3. 다음 샘플 코드를 사용하여 리스너, 풀, 연결된 서버 인스턴스(풀 멤버)가 있는 로드 밸런서를 생성합니다:

    curl -H "Authorization: Bearer $iam_token" -X POST
    "$vpc_api_endpoint/v1/load_balancers?version=$api_version&generation=2" \
      -d @alb_create_payload.json
      Where alb_create_payload.json has the following content:
      '{
          "name": "example-balancer",
          "is_public": true,
          "listeners": [
              {
                  "certificate_instance": {
                      "crn": "crn:v1:bluemix:public:cloudcerts:us-south:a/123456:b8877ea4-b8eg-467e-912a-da1eb7f031cg:certificate:43219c4c97d013fb2a95b21dddde1234"
                  },
                  "port": 443,
                  "protocol": "https",
                  "idle_connection_timeout" : 80,
                  "default_pool": {
                      "name": "example-pool"
                  }
              }
          ],
          "pools": [
              {
                  "algorithm": "round_robin",
                  "health_monitor": {
                      "delay": 5,
                      "max_retries": 2,
                      "timeout": 2,
                      "type": "tcp",
                      "url_path": "/"
                  },
                  "name": "example-pool",
                  "protocol": "tcp",
                  "session_persistence": {
                      "cookie_name": "string",
                      "type": "source_ip"
                  },
                  "members": [
                      {
                          "port": 80,
                          "target": {
                              "address": "192.168.100.5"
                          },
                          "weight": 50
                      },
                      {
                          "port": 80,
                          "target": {
                              "address": "192.168.100.6"
                          },
                          "weight": 50
                      }
                  ]
              }
          ],
          "subnets": [
              {
                  "id": "7ec87131-1c7e-4990-b4f0-a26f2e61f98e"
              }
          ]
          }'
    

    자세한 옵션은 로드밸런서용 VPC API 참조를 참조하세요.

    샘플 출력:

    {
        "created_at": "2018-07-12T23:17:07.5985381Z",
        "crn": "crn:v1:bluemix:public:is:us-south:a/123456::load-balancer:dd754295-e9e0-4c9d-bf6c-58fbc59e5727",
        "hostname": "ac34687d.lb.appdomain.cloud",
        "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/dd754295-e9e0-4c9d-bf6c-58fbc59e5727",
        "id": "0738-dd754295-e9e0-4c9d-bf6c-58fbc59e5727",
        "is_public": true,
        "profile": {
            "name": "network-fixed"
        },
        "listeners": [
            {
                "id": "0738-70294e14-4e61-11e8-bcf4-0242ac110004",
                "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/dd754295-e9e0-4c9d-bf6c-58fbc59e5727/listeners/70294e14-4e61-11e8-bcf4-0242ac110004"
            }
        ],
        "name": "example-balancer",
        "operating_status": "offline",
        "pools": [
            {
                "id": "0738-70294e14-4e61-11e8-bcf4-0242ac110004",
                "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/dd754295-e9e0-4c9d-bf6c-58fbc59e5727/pools/70294e14-4e61-11e8-bcf4-0242ac110004",
                "name": "example-pool"
            }
        ],
        "provisioning_status": "create_pending",
        "resource_group": {
            "id": "56969d60-43e9-465c-883c-b9f7363e78e8"
        },
        "subnets": [
            {
                "id": "0738-7ec86020-1c6e-4889-b3f0-a15f2e50f87e",
                "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/7ec86020-1c6e-4889-b3f0-a15f2e50f87e",
                "name": "example-subnet"
            }
        ]
    }
    

    다음 단계에서 사용할 로드 밸런서의 ID를 저장하십시오. 예를 들어 해당 ID를 lbid 변수에 저장하십시오.

    lbid=0738-dd754295-e9e0-4c9d-bf6c-58fbc59e5727
    
  4. 로드 밸런서에 대한 세부사항 가져오기

    curl -H "Authorization: Bearer $iam_token" -X GET "$vpc_api_endpoint/v1/load_balancers/$lbid?version=$api_version&generation=2"
    

    프로비저닝될 때까지 잠시 대기하십시오. 로드 밸런서가 준비되면 다음 샘플 출력에 표시된 것처럼 onlineactive 상태로 설정됩니다.

    {
      "id": "0738-dd754295-e9e0-4c9d-bf6c-58fbc59e5727",
      "crn": "crn:v1:bluemix:public:is:us-south:a/123456::load-balancer:dd754295-e9e0-4c9d-bf6c-58fbc59e5727",
      "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/dd754295-e9e0-4c9d-bf6c-58fbc59e5727",
      "name": "example-balancer",
      "created_at": "2018-07-13T22:22:24.489Z",
      "hostname": "dd754295-e9e0-4c9d-bf6c-58fbc59e5727.lb.appdomain.cloud",
      "is_public": true,
      "profile": {
            "name": "network-fixed"
      },
      "listeners": [
        {
          "id": "0738-70294e14-4e61-11e8-bcf4-0242ac110004",
           "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/dd754295-e9e0-4c9d-bf6c-58fbc59e5727/listeners/70294e14-4e61-11e8-bcf4-0242ac110004"
        }
      ],
      "operating_status": "online",
      "pools": [
        {
          "id": "0738-70294e14-4e61-11e8-bcf4-0242ac110004",
          "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/dd754295-e9e0-4c9d-bf6c-58fbc59e5727/pools/70294e14-4e61-11e8-bcf4-0242ac110004",
          "name": "example-pool"
        }
      ],
      "private_ips": [
        {
          "address": "192.168.10.5"
        },
        {
          "address": "192.168.10.6"
        }
      ],
      "provisioning_status": "active",
      "public_ips": [
        {
            "address": "169.11.111.115"
        },
        {
            "address": "169.11.111.116"
        }
      ],
      "resource_group": {
        "id": "0738-56969d60-43e9-465c-883c-b9f7363e78e8"
      },
      "subnets": [
        {
          "id": "0738-7ec86020-1c6e-4889-b3f0-a15f2e50f87e",
          "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/7ec86020-1c6e-4889-b3f0-a15f2e50f87e",
          "name": "example-subnet"
        }
      ]
    }