포트 매핑 서비스 만들기

이 페이지에서는 서비스 프로듀서가 Private Service Connect 포트 매핑을 사용하는 서비스를 게시하는 방법을 설명합니다.

Private Service Connect 포트 매핑을 사용하면 소비자 가상 머신(VM) 인스턴스가 단일 Private Service Connect 엔드포인트를 통해 특정 프로듀서 VM의 특정 서비스 포트와 비공개로 통신할 수 있습니다.

시작하기 전에

필요한 역할

Private Service Connect 포트 매핑으로 서비스를 게시할 준비를 하는 데 필요한 권한을 얻으려면 관리자에게 프로듀서 프로젝트에 대한 다음 IAM 역할을 부여해 달라고 요청하세요.

역할 부여에 대한 자세한 내용은 프로젝트, 폴더, 조직에 대한 액세스 관리를 참조하세요.

커스텀 역할이나 다른 사전 정의된 역할을 통해 필요한 권한을 얻을 수도 있습니다.

포트 매핑 서비스 만들기 및 게시

포트 매핑 서비스의 구성은 내부 패스 스루 네트워크 부하 분산기와 유사하지만 트래픽은 부하 분산되지 않습니다. 포트 매핑 서비스를 만들고 게시하려면 다음 안내를 따르세요.

  • 포트 매핑 NEG 만들기
  • 포트 매핑 NEG에 네트워크 엔드포인트 추가
  • 포트 매핑 서비스 만들기
  • 포트 매핑 서비스 게시

포트 매핑 NEG 만들기

포트 매핑 네트워크 NEG는 네트워크 엔드포인트 유형이 GCE_VM_IP_PORTMAP인 리전 NEG입니다. 포트 매핑 NEG를 만든 후에는 그 유형을 변경할 수 없습니다.

포트 매핑 NEG를 만들 때 서브넷을 선택합니다. 포트 매핑 NEG와 연결하는 네트워크 엔드포인트는 이 서브넷에 기본 네트워크 인터페이스가 있어야 합니다.

콘솔

  1. Google Cloud 콘솔에서 네트워크 엔드포인트 그룹 페이지로 이동합니다.

    네트워크 엔드포인트 그룹으로 이동

  2. 네트워크 엔드포인트 그룹 만들기를 클릭합니다.

  3. 이름을 입력합니다.

  4. 네트워크 엔드포인트 그룹 유형을 클릭한 후 포트 매핑 NEG(지역)를 선택합니다.

  5. 리전을 선택합니다.

  6. 네트워크를 선택합니다.

  7. 서브네트워크를 선택합니다.

  8. 만들기를 클릭합니다.

gcloud

network-endpoints-groups create 명령어를 사용합니다.

gcloud beta compute network-endpoint-groups create NEG \
    --region=REGION \
    --network=NETWORK \
    --subnet=SUBNET \
    --network-endpoint-type=GCE_VM_IP_PORTMAP

다음을 바꿉니다.

  • NEG: 포트 매핑 NEG의 이름입니다.
  • REGION: 포트 매핑 NEG의 리전입니다.
  • NETWORK: 포트 매핑 NEG의 VPC 네트워크입니다.
  • SUBNET: 포트 매핑 NEG의 서브넷입니다.

API

regionNetworkEndpointGroups.insert 메서드에 POST 요청을 전송합니다.

POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/regions/REGION/networkEndpointGroups
{
  "name": "NEG",
  "networkEndpointType": "GCE_VM_IP_PORTMAP",
  "network": "projects/PROJECT_ID/global/networks/NETWORK",
  "subnetwork": "projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET"
}

다음을 바꿉니다.

  • PROJECT_ID: 포트 매핑 NEG의 프로젝트 ID입니다.
  • REGION: 포트 매핑 NEG의 리전입니다.
  • NEG: 포트 매핑 NEG의 이름입니다.
  • NETWORK: 포트 매핑 NEG의 VPC 네트워크입니다.
  • SUBNET: 포트 매핑 NEG의 서브넷입니다.

포트 매핑 NEG에 네트워크 엔드포인트 추가

포트 매핑이 포함된 하나 이상의 네트워크 엔드포인트를 만들고 포트 매핑 NEG에 연결합니다.

포트 매핑 NEG의 네트워크 엔드포인트는 영역형이며 다음 요구사항을 충족해야 합니다.

  • 각 네트워크 엔드포인트는 포트 매핑 NEG와 동일한 서브넷에 기본 네트워크 인터페이스가 있는 Compute Engine VM을 나타냅니다.
  • 각 네트워크 엔드포인트는 고유한 클라이언트 목적지 포트를 참조합니다.
  • 각 네트워크 엔드포인트는 서비스 포트와 VM의 고유한 조합을 참조해야 합니다.

콘솔

  1. Google Cloud 콘솔에서 네트워크 엔드포인트 그룹 페이지로 이동합니다.

    네트워크 엔드포인트 그룹으로 이동

  2. 업데이트할 포트 매핑 NEG의 이름을 클릭합니다.

  3. 네트워크 엔드포인트 추가를 클릭합니다.

  4. VM 인스턴스를 클릭한 후 VM을 선택합니다.

  5. VM 포트 1을 클릭한 후 서비스 포트를 입력합니다.

  6. 클라이언트 포트 1을 클릭한 후 클라이언트 목적지 포트를 입력합니다.

  7. 추가하려는 각 네트워크 엔드포인트에 대해 네트워크 엔드포인트 추가를 클릭한 다음 네트워크 엔드포인트 세부정보를 입력합니다.

  8. 만들기를 클릭합니다.

gcloud

network-endpoint-groups update 명령어를 사용합니다. 연결하려는 각 네트워크 엔드포인트에 --add-endpoint 플래그를 포함합니다.

gcloud beta compute network-endpoint-groups update NEG \
    --region=REGION \
    --add-endpoint=client-destination-port=CLIENT_DESTINATION_PORT_1,instance=projects/PROJECT_ID/zones/ZONE_1/instances/VM_1_NAME,port=VM_1_PORT \
    --add-endpoint=client-destination-port=CLIENT_DESTINATION_PORT_2,instance=projects/PROJECT_ID/zones/ZONE_2/instances/VM_2_NAME,port=VM_2_PORT

다음을 바꿉니다.

  • NEG: 포트 매핑 NEG의 이름입니다.
  • REGION: 포트 매핑 NEG의 리전입니다.
  • CLIENT_DESTINATION_PORT_1: 첫 번째 네트워크 엔드포인트의 클라이언트 목적지 포트입니다.
  • PROJECT_ID: 프로듀서 프로젝트의 프로젝트 ID입니다.
  • ZONE_1: 첫 번째 네트워크 엔드포인트의 영역입니다.
  • VM_1_NAME: 첫 번째 네트워크 엔드포인트의 대상 VM 이름입니다.
  • VM_1_PORT: 첫 번째 네트워크 엔드포인트의 서비스 포트입니다.
  • CLIENT_DESTINATION_PORT_2: 두 번째 네트워크 엔드포인트의 클라이언트 목적지 포트입니다.
  • ZONE_2: 두 번째 네트워크 엔드포인트의 영역입니다.
  • VM_2_NAME: 두 번째 네트워크 엔드포인트의 대상 VM 이름입니다.
  • VM_2_PORT: 두 번째 네트워크 엔드포인트의 서비스 포트입니다.

API

regionNetworkEndpointGroups.attachNetworkEndpoints 메서드에 POST 요청을 전송합니다.

POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/regions/REGION/networkEndpointGroups/NEG/attachNetworkEndpoints
{
  "networkEndpoints": [
    {
      "clientDestinationPort":CLIENT_DESTINATION_PORT_1,
      "instance": "projects/PROJECT_ID/zones/ZONE_1/instances/VM_1_NAME",
      "port": SERVICE_PORT_1
    },
    {
      "clientDestinationPort": CLIENT_DESTINATION_PORT_2,
      "instance": "projects/PROJECT_ID/zones/ZONE_2/instances/VM_2_NAME",
      "port": SERVICE_PORT_2
    }
  ]
}

다음을 바꿉니다.

  • PROJECT_ID: 프로듀서 프로젝트의 프로젝트 ID입니다.
  • REGION: 포트 매핑 NEG의 리전입니다.
  • NEG: 포트 매핑 NEG의 이름입니다.
  • CLIENT_DESTINATION_PORT_1: 첫 번째 네트워크 엔드포인트의 클라이언트 목적지 포트입니다.
  • ZONE_1: 첫 번째 네트워크 엔드포인트의 영역입니다.
  • VM_1_NAME: 첫 번째 네트워크 엔드포인트의 대상 VM 이름입니다.
  • SERVICE_PORT_1: 첫 번째 네트워크 엔드포인트의 서비스 포트입니다.
  • CLIENT_DESTINATION_PORT_2: 두 번째 네트워크 엔드포인트의 클라이언트 목적지 포트입니다.
  • ZONE_2: 두 번째 네트워크 엔드포인트의 영역입니다.
  • VM_2_NAME: 두 번째 네트워크 엔드포인트의 대상 VM 이름입니다.
  • SERVICE_PORT_2: 두 번째 네트워크 엔드포인트의 서비스 포트입니다.

포트 매핑 서비스 만들기

포트 매핑 서비스를 만들려면 다음 단계를 완료하세요.

NEG를 추가한 후에는 백엔드 서비스와 연결된 포트 매핑 NEG를 변경할 수 없습니다. 하지만 포트 매핑 NEG의 네트워크 엔드포인트를 업데이트할 수 있습니다.

전달 규칙을 만든 후에는 전달 규칙의 연결을 업데이트할 수 없습니다. 다른 백엔드 서비스에 연결해야 하는 경우 전달 규칙을 삭제한 다음 새 규칙을 만듭니다.

콘솔

구성 시작

  1. Google Cloud 콘솔에서 부하 분산 페이지로 이동합니다.

    부하 분산으로 이동

  2. 부하 분산기 만들기를 클릭합니다.
  3. 부하 분산기 유형네트워크 부하 분산기(TCP/UDP/SSL)를 선택하고 다음을 클릭합니다.
  4. 프록시 또는 패스 스루에서 패스 스루 부하 분산기를 선택하고 다음을 클릭합니다.
  5. 공개 또는 내부에서 내부를 선택하고 다음을 클릭합니다.
  6. 구성을 클릭합니다.

기본 구성

  1. 부하 분산기 이름을 입력합니다.
  2. 리전을 선택합니다.
  3. 네트워크를 선택합니다.

백엔드 구성

  1. 백엔드 유형포트 매핑 네트워크 엔드포인트 그룹을 선택합니다.
  2. 포트 매핑 네트워크 엔드포인트 그룹을 선택합니다.

프런트엔드 구성

  1. 프런트엔드 구성을 클릭합니다.
  2. 선택사항: 이름을 입력합니다.
  3. 선택사항: 설명을 입력합니다.
  4. 프로토콜을 선택합니다.
  5. 서브네트워크를 선택합니다.
  6. 완료를 클릭합니다.
  7. 만들기를 클릭합니다.

gcloud

  1. 백엔드 서비스를 만들려면 backend-services create 명령어를 사용합니다.

    gcloud beta compute backend-services create SERVICE \
        --load-balancing-scheme=internal \
        --region=REGION \
        --network=NETWORK
    

    다음을 바꿉니다.

    • SERVICE: 백엔드 서비스의 이름입니다.
    • REGION: 백엔드 서비스의 리전입니다.
    • NETWORK: 백엔드 서비스의 프로듀서 VPC 네트워크입니다.
  2. 포트 매핑 NEG를 백엔드 서비스에 추가하려면 backend-services add-backend 명령어를 사용합니다.

    단일 백엔드 서비스에 포트 매핑 NEG를 여러 개 추가할 수 없습니다.

    gcloud beta compute backend-services add-backend SERVICE \
        --network-endpoint-group=NEG \
        --network-endpoint-group-region=REGION
    

    NEG를 포트 매핑 NEG의 이름으로 바꿉니다.

  3. 포트 매핑 서비스의 전달 규칙을 만들려면 forwarding-rules create 명령어를 사용합니다.

    전달 규칙은 모든 클라이언트 목적지 포트의 트래픽을 전달하도록 구성해야 합니다.

    gcloud beta compute forwarding-rules create RULE \
        --load-balancing-scheme=INTERNAL \
        --ip-protocol=PROTOCOL \
        --network=NETWORK \
        --subnet=SUBNET \
        --address=IP_ADDRESS \
        --ports=ALL \
        --region=REGION \
        --backend-service=SERVICE
    

    다음을 바꿉니다.

    • RULE: 전달 규칙의 이름입니다.
    • PROTOCOL: 전달 규칙의 프로토콜로, TCP 또는 UDP일 수 있습니다.
    • SUBNET: 프로듀서 서브넷입니다. 포트 매핑 NEG와 연결된 서브넷과 동일해야 합니다.
    • IP_ADDRESS: 전달 규칙의 IP 주소로, 프로듀서 서브넷의 IP 주소 범위에서 가져와야 합니다.

API

  1. 백엔드 서비스를 만들려면 regionBackendServices.insert 메서드POST 요청을 전송합니다.

    POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/regions/REGION/backendServices
    {
      "name": "SERVICE",
      "loadBalancingScheme": "INTERNAL",
      "network": "projects/PROJECT_ID/global/networks/NETWORK"
    }
    

    다음을 바꿉니다.

    • PROJECT_ID: 백엔드 서비스 프로젝트의 ID입니다.
    • REGION: 백엔드 서비스의 리전입니다.
    • SERVICE: 백엔드 서비스의 이름입니다.
    • NETWORK: 프로듀서 VPC 네트워크입니다.
  2. 포트 매핑 NEG를 백엔드 서비스에 추가하려면 regionBackendServices.patch 메서드PATCH 요청을 전송합니다.

    단일 백엔드 서비스에 포트 매핑 NEG를 여러 개 추가할 수 없습니다.

    PATCH https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/regions/REGION/backendServices/SERVICE
    {
      "backends": [
        {
          "group": "https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/regions/REGION/networkEndpointGroups/NEG"
        }
      ]
    }
    

    NEG를 포트 매핑 NEG의 이름으로 바꿉니다.

  3. 포트 매핑 서비스의 전달 규칙을 만들려면 forwardingRules.insert 메서드POST 요청을 전송합니다.

    전달 규칙은 모든 클라이언트 목적지 포트의 트래픽을 전달하도록 구성해야 합니다.

    POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID>/regions/REGION/forwardingRules
    {
      "name": "RULE",
      "loadBalancingScheme": "INTERNAL",
      "IPProtocol": "PROTOCOL",
      "network": "projects/PROJECT_ID/global/networks/NETWORK",
      "subnetwork": "projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET",
      "IPAddress": "IP_ADDRESS",
      "allPorts": true,
      "backendService": "projects/PROJECT_ID/regions/REGION/backendServices/SERVICE"
    }
    

    다음을 바꿉니다.

    • RULE: 전달 규칙의 이름입니다.
    • PROTOCOL: 전달 규칙의 프로토콜로, TCP 또는 UDP일 수 있습니다.
    • SUBNET: 프로듀서 서브넷입니다. 포트 매핑 NEG와 연결된 서브넷과 동일해야 합니다.
    • IP_ADDRESS: 전달 규칙의 IP 주소로, 프로듀서 서브넷의 IP 주소 범위에서 가져와야 합니다.

포트 매핑 서비스 게시

소비자가 포트 매핑 서비스를 사용할 수 있도록 하려면 서비스 연결을 만들어 서비스를 게시합니다. 서비스 연결을 만들 때 포트 매핑 서비스와 연결된 전달 규칙을 지정합니다.

다음 단계