이 가이드에서는 학습 작업이 네트워크의 비공개 IP에 액세스할 수 있는지 테스트하는 방법을 설명합니다. 먼저 VPC 네트워크와 AI Platform Training 사이에 비공개 연결을 만들어야 합니다.
개요
이 테스트를 설정하는 과정은 두 부분으로 구성됩니다.
- 네트워크에서 엔드포인트를 설정합니다.
- 엔드포인트에 액세스하기 위한 테스트 학습 작업을 제출합니다.
엔드포인트 설정
엔드포인트를 설정하려면 네트워크에서 VM 인스턴스에 로컬 서버를 설정합니다.
- VPC 네트워크에 Compute Engine 인스턴스를 만듭니다.
- 방화벽 규칙을 검사하여 AI Platform Training 네트워크에서의 인그레스를 제한하지 않는지 확인합니다. 제한한다면 AI Platform Training 네트워크가 AI Platform Training(및 기타 서비스 제작자)을 위해 예약한 IP 범위에 액세스할 수 있도록 하는 규칙을 추가합니다.
VM의 비공개 IP 주소를 찾습니다.
- VM 인스턴스 페이지로 이동
- 인스턴스에 대한 VM 인스턴스 세부정보 페이지로 이동하고 페이지에 나열된 내부 IP를 찾습니다.
인스턴스 이름을 설정하고 다음
gcloud
명령어를 실행합니다.INSTANCE_NAME="your-instance-name" gcloud compute instances describe $INSTANCE_NAME \ --format="value(networkInterfaces.networkIP)"
SSH를 VM에 연결하고 Node JS를 설치합니다.
샘플 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}/'); }); ```
서버를 실행합니다.
nodejs hw.js
VM SSH를 전환하여 학습 작업을 제출합니다.
테스트 학습 작업 제출
모델을 학습시키는 대신 이 학습 작업은 엔드포인트에 액세스하여 AI Platform Training이 네트워크의 비공개 IP에 액세스할 수 있는지 확인합니다.
- AI Platform Training에 제출할 샘플 Python 학습 애플리케이션을 복사합니다.
비공개 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()
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
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과의 피어링 연결이 검증됩니다.