你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

Jetpack

需要在群集的每个节点上安装 Jetpack。 Azure CycleCloud 会自动在预配的每个虚拟机上安装 Jetpack,使其成为群集中的节点。 Jetpack 提供三个主要功能:

  • 节点配置 - CycleCloud 使用脚本和 Chef 将预配的 VM 配置自动化到工作群集节点。 Chef 客户端和 VM 配置所需的资源嵌入 Jetpack 中。
  • 分布式同步 - Jetpack 管理节点与 CycleCloud 应用程序服务器之间的通信。 此管理使 CycleCloud 能够监视预配 VM 的状态,并同步群集中多个节点的业务流程。
  • HealthCheck - Jetpack 使用 HealthCheck 来确定 VM 的运行状况,以便它可以终止不正常的 VM。

Jetpack 安装

首次使用 CycleCloud 启动群集时,Jetpack 安装程序将缓存在 Azure 存储帐户中。 预配群集 VM 时, 自定义脚本扩展 将作为启动过程的一部分执行。 此扩展从 Azure 存储缓存下载 Jetpack 安装程序,然后将其安装在 VM 上。

Jetpack 安装程序:

  • 将 Jetpack 文件解压缩到单个目录树:
    • Windows: C:\cycle\jetpack
    • Linux: /opt/cycle/Jetpack
  • 创建将 VM 配置为群集节点的系统初始化启动脚本
  • 安装 HealthCheck 服务
  • Jetpack 命令行工具 安装到:
    • Windows:C:\cycle\jetpack\bin\jetpack
    • Linux: /opt/cycle/jetpack/bin/jetpack
  • 在 Linux 上创建 udev 规则
  • 设置环境变量 CYCLECLOUD_HOME

注释

如果 Jetpack 预安装在映像上,则自定义脚本扩展 不会 重新安装 Jetpack。 而是运行初始化步骤,验证节点与 CycleCloud 的连接,并在继续配置节点之前启动 healthcheck 和服务 jetpackd

Jetpack 子目录

目录 DESCRIPTION
bin 有用的二进制文件和脚本。
config 用户定义的和群集定义的配置文件和脚本。
logs 通过联接群集和收敛节点生成的日志。 特别值得关注的是 chef-client.log,其中包含收敛 Chef 方案的结果。
run 系统生成的运行时文件。 不建议直接访问这些文件。
system 内部文件。 建议不要直接使用此目录中的任何文件,因为它们在不同版本之间显著变化。

健康检查

HealthCheck 服务执行用户定义的脚本,以确定 VM 作为群集节点的当前可行性。 有关详细信息,请参阅 HealthCheck 文档。

Jetpack 命令行工具

Jetpack 命令行工具提供了一组有用的子命令,用于操作当前 VM 并与 Azure CycleCloud 交互。

指令 DESCRIPTION
jetpack autoscale 自动缩放此节点所属的群集。
jetpack config 检索配置值。
jetpack converge 执行 Chef 收敛。
jetpack download 从 Azure 存储中的项目下载 Blob 资源。
jetpack keepalive 通过 HealthCheck 服务延迟系统终止。
jetpack log 将消息记录到 CycleCloud 群集 UI。
jetpack run_on_shutdown 在节点终止之前添加要调用的脚本。
jetpack send 将任意 AMQP 消息发送到 CycleCloud 服务器。
jetpack shutdown 请求 CycleCloud 关闭虚拟机。
jetpack test 运行与分配给 VM 的项目关联的测试。
jetpack users 列出 CycleCloud 在此 VM 上管理的用户。
jetpack report_issue 将日志文件从 VM 存档到 Azure 存储

jetpack 自动缩放

用于 jetpack autoscale 设置节点所属群集的自动缩放目标。 可以按核心、实例计数或自定义定义缩放群集。

扩展至 100 个核心:

jetpack autoscale --corecount=100

将“gpu”节点数组缩放为五个节点:

jetpack autoscale --instancecount 5 --name=gpu

若要自定义自动缩放,请向包含要缩放的 nodearray 定义的磁盘写入 JSON 文件。 若要扩展 100 个核心,请执行以下命令:

[
  {
      "Name": "execute",
      "TargetCoreCount": 100
  }
]
jetpack autoscale --file=custom-autoscale.json

jetpack 配置

使用 jetpack config 来提取 CycleCloud 传入 VM 的信息。 它揭露:

  • 通过 Ohai 提供的所有系统属性
  • VM 的 Azure 元数据 的一个子集
  • 父 CycleCloud 群集的相关信息。

jetpack 聚合

jetpack converge 命令下载与节点关联的所有 CycleCloud 项目,并启动 Chef 聚合进程,该进程运行节点的所有 Chef 食谱和 cluster-init 脚本。

jetpack 下载

jetpack download 命令将您通过 项目 上传的 Blob 下载到节点。 必须指定 Blob 所属的项目。

若要下载作为 example-project 项目的一部分上传到当前目录的 blob big-file.zip,请执行以下命令:

jetpack download --project example-project big-file.zip .

jetpack keepalive

jetpack keepalive 命令与 HealthCheck 服务交互,以由于 HealthCheck 失败而延迟 VM 终止。 可以将延迟设置为固定时间段或无限期。 默认情况下,命令终止会延迟一小时。

将系统关闭时间延迟一小时:

jetpack keepalive

若要将系统终止延迟 6 小时,请执行以下命令:

jetpack keepalive 6h

若要完全禁用 HealthCheck 服务,即无限期延迟终止:

jetpack keepalive forever

注释

只有forever选项可用于 Windows VM 上的 HealthCheck。

jetpack 日志

jetpack log 将日志消息发送回 CycleCloud。 消息显示在应用程序服务器日志(通常 为 /opt/cycle_server/cycle_server.log)、主事件日志和群集 UI 页中。

每条消息都有两个属性: levelpriority

level 属性指示消息的类型。 有效级别是 infowarnerror。 该级别不指示给定消息的重要性。 例如,某些错误是微不足道的,有些信息性消息至关重要。

优先级指示消息的重要性。 有效的 优先级 值为“low”、“medium”和“high”。 群集 UI 页上仅显示优先级为中等或更高的消息,以避免将页面充斥为低优先级消息。

若要发送在“群集 UI”页上显示的信息日志消息,请执行以下作:

jetpack log 'system is now ready'

若要发送不希望显示在“群集 UI”页上的低优先级日志消息,

jetpack log 'system is now ready' --priority low

默认情况下,具有错误级别的 消息具有较高的 优先级。 若要发送错误消息,请执行以下命令:

jetpack log 'the machine cannot process jobs' --level error

若要发送一条简单错误消息,

jetpack log 'the machine cannot process jobs' --level error --priority low

jetpack run_on_shutdown

jetpack run_on_shutdown 命令注册在节点终止前要调用的 bash 脚本。

该命令将脚本的绝对路径作为参数。

当 Azure 终止节点并启用 终止通知 时,Jetpack 会收到终止通知。 它会尝试在节点关闭之前运行脚本。

节点 必须 启用 终止通知 才能启用 run_on_shutdown

jetpack run_on_shutdown /tmp/example.sh

Windows 节点不支持此命令。

jetpack 发送

jetpack send 将 AMQP 消息发送到 CycleCloud。 建议不要使用高级命令,除非你要为 CycleCloud 开发插件。

可以使用指定的 AMQP 路由密钥发送任意字符串或文件。

jetpack 关闭

使用 jetpack shutdown 来请求 CycleCloud 终止节点。 可将选项传递给命令,以指定关闭请求的原因(空闲或运行不正常)以及如何终止节点(终止或解除分配)。

若要关闭不正常的节点,请使用以下命令:

jetpack shutdown --unhealthy

若要解除分配节点,请执行以下命令:

jetpack shutdown --deallocate

jetpack 测试

使用 jetpack test 来运行分配给节点的 项目 中包含的任何测试。 该命令将结果打印到 stdout。

jetpack 用户

jetpack users 列出 CycleCloud 在节点上管理的用户。 随着用户被分配并删除到群集,此列表可能会随时间推移而变化。

若要获取分配给节点的用户的用户友好的打印输出,请执行以下命令:

$ jetpack users

Username: test-user
Full Name: Test User
UID: 10201
Is Admin: True
Is Owner: True

若要获取脚本友好的 JSON 输出,请执行以下作:

$ jetpack users --json

[
    {
        "fullName": "Test User",
        "isAdmin": true,
        "isOwner": true,
        "name": "test-user",
        "publicKeys": [
            "ssh-rsa public-key-goes-here\n"
        ],
        "uid": 10201
    }
]

jetpack report_issue

jetpack report_issue 存档 VM 中的日志目录,可以选择将其上传到 Azure 存储,并创建用于外部访问的已签名 URL。 该命令将日志上传到节点的 Locker 所引用的 Azure 存储帐户。 在 Azure 存储中对存档进行签名时,生成的 SAS 令牌具有 30 天的 只读 访问权限。

用法:

$ jetpack report_issue [LOG_PATH] [--upload/--no-upload] [--sign/--no-sign]

若要存档、上传和签名默认 Jetpack 日志($JETPACK_HOME/logs):

$ jetpack report_issue
Logs can be found at: https://testaccount.blob.core.windows.net/cyclecloud/issues/TestCluster-execute-1-77777964-8b74-420d-ad44-094edf7695f2.zip?sv=2017-11-09&rsct=binary&sig=jBJUlYo10lRq0eW94I%2B6syzYVmgo1qcTFUc35D/q0Tg%3D&se=2020-12-04T15%3A15%3A00Z&spr=https&rscd=disposition%3Dfile%3B%20attachment&sp=r&sr=b
Signed URL will expire on: 2020-12-04T15:15:00Z

若要存档、上传但不对非默认日志目录进行签名:

$ jetpack report_issue /var/log/azure --no-sign
Logs can be found at: https://testaccount.blob.core.windows.net/cyclecloud/issues/TestCluster-execute-1-d67fe991-1dac-4644-9af7-50c835726f5e.zip

在本地 VM 上存档日志:

$ jetpack report_issue --no-upload
Logs can be found at: /tmp/tmp4nscw705/TestCluster-execute-1-4249e973-3d87-4b14-94ed-6856a5267972.zip