비공개 IP용 피어링 연결 테스트

이 가이드에서는 학습 작업이 네트워크의 비공개 IP에 액세스할 수 있는지 테스트하는 방법을 설명합니다. 먼저 VPC 네트워크와 AI Platform Training 간에 비공개 연결을 만들어야 합니다.

개요

이 테스트를 설정하는 과정은 두 부분으로 구성됩니다.

  • 네트워크에서 엔드포인트를 설정합니다.
  • 테스트 학습 작업을 제출하여 해당 엔드포인트에 액세스합니다.

엔드포인트 설정

엔드포인트를 설정하려면 네트워크의 VM 인스턴스에서 로컬 서버를 설정합니다.

  1. VPC 네트워크에 Compute Engine 인스턴스를 만듭니다.
  2. 방화벽 규칙을 검사하여 AI Platform Training 네트워크에서의 인그레스를 제한하지 않는지 확인합니다. 제한한다면 AI Platform Training 네트워크가 AI Platform Training(및 기타 서비스 제작자)을 위해 예약한 IP 범위에 액세스할 수 있도록 하는 규칙을 추가합니다.
  3. VM의 비공개 IP 주소를 찾습니다.

    • VM 인스턴스 페이지로 이동
    • 인스턴스의 VM 인스턴스 세부정보 페이지로 이동하여 페이지에 나열된 내부 IP를 찾습니다.
    • 인스턴스 이름을 설정하고 다음 gcloud 명령어를 실행합니다.

      INSTANCE_NAME="your-instance-name"
      gcloud compute instances describe $INSTANCE_NAME \
        --format="value(networkInterfaces.networkIP)"
      
  4. SSH를 VM에 연결하고 Node JS를 설치합니다.

  5. 샘플 Node JS 코드를 복사하고 비공개 IP 주소를 입력합니다.

     const http = require('http');
     // Fill in the value of your vm's private IP
     const hostname = 'your_private_ip';
     const port = 3000;
     const server = http.createServer((req, res) => {
               res.statusCode = 200;
               res.setHeader('Content-Type', 'text/plain');
               res.end('Hello World ' + req.url + '\n');
     });
     server.listen(port, hostname, () => {
               console.log('Server running at http://${hostname}:${port}/');
     });
     ```
    
  6. 서버를 실행합니다.

    nodejs hw.js
    
  7. VM SSH를 전환하여 학습 작업을 제출합니다.

테스트 학습 작업 제출

이 학습 작업은 모델을 학습하는 대신 엔드포인트에 액세스하여 AI Platform Training이 네트워크의 비공개 IP에 액세스할 수 있는지 확인합니다.

  1. 샘플 Python 학습 애플리케이션을 복사하여 AI Platform Training에 제출합니다.
  2. 비공개 IP 주소를 포함하도록 코드를 업데이트합니다.

    import logging
    import os
    import sys
    def main():
      # Fill in the value of your vm's private IP
      hostname = "your_private_ip"
      response = os.system("curl http://" + hostname + ":3000/you_can_write_your_name_here")
      if response == 0:
        print(hostname, "is up!")
        logging.info("%s is up; Peering successful!", hostname)
        sys.exit(0)
      else:
        logging.error("%s is down; Peering failed!", hostname)
        sys.exit(1)
    if __name__ == "__main__":
      logging.getLogger().setLevel(logging.INFO)
      main()
    
  3. config.yaml을 만들어 네트워크를 지정합니다. 공유 VPC를 사용하는 경우 VPC 호스트 프로젝트 번호를 사용합니다.

    네트워크 이름의 형식이 올바른지 확인합니다.

    PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format="value(projectNumber)")
    NETWORK=your-network-name
    
    cat << EOF > config.yaml
    trainingInput:
      scaleTier: BASIC
      network: projects/$PROJECT_NUMBER/global/networks/$NETWORK
    EOF
    
  4. AI Platform Training에 작업을 제출합니다.

    BUCKET_NAME=your_bucket_name
    JOB_ID='test_vpc_peering_job'
    
    gcloud ai-platform jobs submit training $JOB_ID \
      --module-name trainingcode.test_peering \
      --stream-logs \
      --runtime-version 1.15 \
      --job-dir gs://$BUCKET_NAME/$JOB_ID \
      --region us-central1 \
      --package-path trainingcode/ \
      --config config.yaml
    

    작업이 성공하면 '피어링 성공'이 출력됩니다. 그러면 AI Platform Training과의 피어링 연결이 검증됩니다.