高级代理设置

本文档介绍了 Transfer Service for On Premises Data 的高级设置选项,包括:

复制 CIFS 或 SMB 卷上的数据

Windows Server 不直接支持本地转移代理。但是,如需移动存储在任何符合 POSIX 标准的文件系统上的数据,您可以将该文件系统装载到 Linux 服务器或虚拟机上,然后从 Linux 服务器或虚拟机运行代理,以将数据复制到 Cloud Storage。

如需移动 CIFS 或 SMB 卷中的数据,请执行以下操作:

  1. 预配 Linux 服务器或虚拟机。

    对于受支持的操作系统,请参阅前提条件

  2. 在您预配的 Linux 服务器或虚拟机上运行以下命令以装载卷:

    sudo mount -t cifs -o
    username=WINDOWS-SHARE-USER,password=WINDOWS-SHARE-PASSWORD //IP-ADDRESS/SHARE-NAME /mnt
    

    其中:

    • IP-ADDRESS - CIFS 或 SMB 卷所在的 Microsoft Windows 服务器的 IP 地址。
    • SHARE-NAME - 您正在装载的共享名称。
    • WINDOWS-SHARE-USER - 用于访问 CIFS 或 SMB 卷的授权用户。
    • WINDOWS-SHARE-PASSWORD - CIFS 或 SMB 卷的授权用户的密码。
  3. 运行以下命令,确认已装载 CIFS 卷:

    findmnt -l
    
  4. 通过运行以下命令,确认将要运行代理的用户可以在已装载的卷上列出和复制文件:

    sudo -u USERNAME cp /mnt/FILE1 /mnt/FILE2
    

    其中:

    • USERNAME - 将要运行代理的用户。
    • FILE1 - 要复制其内容的文件。
    • FILE2 - 要将内容复制到其中的文件名。
  5. 安装本地转移代理

使用服务帐号凭据

您可以使用服务帐号凭据来运行代理。使用服务帐号凭据时,无需依赖单个用户帐号即可对转移代理进行身份验证。如需详细了解帐号类型,请参阅主帐号

对代理使用服务帐号凭据之前,请通过验证以下内容来确保 Transfer Service for On Premises Data 已就绪:

  1. 首次设置已完成。

  2. 存在转移作业

如需对代理使用服务帐号凭据,请执行以下操作:

  1. 停止所有代理容器

  2. 创建服务帐号密钥。如需了解详情,请参阅创建和管理服务帐号密钥

  3. 通过运行以下命令启动代理 Docker 容器:

    sudo docker run --ulimit memlock=64000000 -d --rm -v /:/transfer_root
    gcr.io/cloud-ingest/tsop-agent:latest
    --enable-mount-directory
    --project-id=PROJECT-ID
    --creds-file=CREDENTIAL-FILE
    --hostname=$(hostname)
    --agent-id-prefix=AGENT-ID-PREFIX

    其中:

  • PROJECT-ID 是托管转移作业并且创建和计费 Pub/Sub 资源的项目 ID

  • CREDENTIAL-FILE 是 JSON 格式的服务帐号凭据文件。如需详细了解如何生成服务帐号凭据文件,请参阅创建和管理服务帐号密钥

  • ID-PREFIX 是添加到代理 ID 前面的前缀,用于帮助识别 Google Cloud Console 中的代理或其机器。使用前缀时,代理 ID 的格式为 prefix + hostname + Docker container ID

调整代理内存上限

Transfer Service for On Premises Data 代理默认使用最多 8GiB 的系统内存。您可以通过传递 --max-physical-mem=MAXIMUM-MEMORY(将 MAXIMUM-MEMORY 替换为适合您环境的值)来调整代理使用的最大内存以适合您的环境。

以下是 Transfer Service for On Premises Data 代理的内存要求:
  • 最小内存:1 GiB
  • 支持高性能上传的最小内存:6 GiB

我们建议默认值为 8GiB。

下表说明了 MAXIMUM-MEMORY 的可接受格式示例:

max-physical-memory 内存上限设置
6g 6 GB
6gb 6 GB
6GiB 6 GiB

限制代理目录访问权限

如需指定代理在执行转移时可以访问的目录,请将 -v HOST-DIRECTORY:CONTAINER-DIRECTORY 传递给代理,其中:

  • HOST-DIRECTORY 是要从中复制数据的主机目录。
  • CONTAINER-DIRECTORY 是映射到代理容器内的目录。

您可以使用多个 -v 标志进一步指定要复制的来源目录。例如:

sudo docker run --ulimit memlock=64000000 -d -rm --volumes-from gcloud-config \
-v /usr/local/research:/usr/local/research \
-v /usr/local/billing:/usr/local/billing \
-v /tmp:/tmp \
gcr.io/cloud-ingest/tsop-agent:latest \
--project-id=PROJECT-ID \
--hostname=$(hostname) \
--agent-id-prefix=ID-PREFIX

如果使用的是服务帐号,请确保将凭据文件装载到容器中并传递 --creds-file=CREDENTIAL-FILE。例如:

sudo docker run --ulimit memlock=64000000 -d -rm \
-v HOST-DIRECTORY:container-directory \
-v /tmp:/tmp
-v FULL-CREDENTIAL-FILE-PATH:FULL-CREDENTIAL-FILE-PATH
gcr.io/cloud-ingest/tsop-agent:latest \
--project-id=PROJECT-ID \
--creds-file=CREDENTIAL-FILE \
--hostname=$(hostname) \
--agent-id-prefix=AGENT-PREFIX

使用 Kubernetes 协调代理

Docker 是 Kubernetes 支持的容器运行时。您可以使用 Kubernetes 同时编排启动和停止多个代理。从 Kubernetes 的角度来看,代理容器被视为无状态应用,因此您可以遵循 Kubernetes 指令来部署无状态应用

在 Cloud Interconnect 中使用专用 API 端点

如需在 Cloud Interconnect 中使用专用 API 端点,请执行以下操作:

  1. 登录要用来运行代理的本地主机。

  2. 配置专用 Google 访问通道。如需了解详情,请参阅配置适用于本地主机的专用 Google 访问通道

  3. 确认您可以连接到 Cloud Storage API 和 Pub/Sub API:

    1. 对于 Cloud Storage API,请从转移代理所在的机器上运行以下命令,以测试将文件移入 Cloud Storage 存储分区:gsutil cp test.txt gs://MY-BUCKET,其中 MY-BUCKET 为 Cloud Storage 存储分区的名称。如果转移成功,则测试成功。
    2. 对于 Pub/Sub API,请在转移代理所在的机器上运行以下命令,以确认您可以找到现有 Pub/Sub 主题:gcloud pubsub topics list --project=PROJECT-ID,其中 PROJECT-ID 是 Google Cloud 项目名称。如果显示 Pub/Sub 主题列表,则测试成功。