测试专用 IP 地址的对等互连连接

本指南介绍如何测试一个训练作业可以访问网络中的专用 IP。首先,您需要在 VPC 网络和 AI Platform Training 之间创建专用连接

概览

设置此测试包含两个部分:

  • 在网络中设置端点。
  • 提交测试训练作业以访问该端点。

设置端点

如需设置端点,请在网络中的虚拟机实例上设置本地服务器。

  1. 在 VPC 网络中创建一个 Compute Engine 实例。
  2. 检查防火墙规则,确保它们不会限制来自 AI Platform Training 网络的入站流量。如果是这样,请添加一条规则,以确保 AI Platform Training 网络可以访问您为 AI Platform Training(和其他服务提供方)预留的 IP 地址范围。
  3. 找到虚拟机的专用 IP 地址:

    • 转到“虚拟机实例”页面
    • 转到实例的虚拟机实例详情页面,然后找到该页面上列出的内部 IP 地址。
    • 设置实例的名称,并运行以下 gcloud 命令:

      INSTANCE_NAME="your-instance-name"
      gcloud compute instances describe $INSTANCE_NAME \
        --format="value(networkInterfaces.networkIP)"
      
  4. 通过 SSH 连接到您的虚拟机并安装 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. 断开虚拟机 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 建立对等互连连接。