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

Jetpack

群集的每个节点上都需要 Jetpack。 它由 Azure CycleCloud 自动安装在预配为成为群集中的节点的每个虚拟机上。 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 配置为群集节点的系统 init 启动脚本
  • 安装 HealthCheck 服务
  • Jetpack 命令行工具 安装到:
    • Windows :C:\cycle\jetpack\bin\jetpack
    • Linux: /opt/cycle/jetpack/bin/jetpack
  • 在 Linux 上创建 udev 规则
  • 设置环境变量 CYCLECLOUD_HOME

注意

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

Jetpack 子目录

Directory 说明
bin 有用的二进制文件和脚本。
config 用户定义的和群集定义的配置文件和脚本。
logs 通过联接群集和聚合节点生成的日志特别感兴趣的是 chef-client.log ,其中包含聚合 Chef 食谱的结果。
run 系统生成的运行时文件。 不建议直接访问这些文件。
system 内部文件。 不建议直接使用此目录中的任何文件,因为它们可能会从版本更改为发布。

HealthCheck

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

Jetpack 命令行工具

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

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

jetpack 自动缩放

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

缩放到 100 个核心:

jetpack autoscale --corecount=100

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

jetpack autoscale --instancecount 5 --name=gpu

若要自定义自动缩放,必须将 json 文件写入磁盘,其中包含要缩放的 nodearray 定义。 按 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 食谱和群集 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 页。

每个消息都有两个属性: 级别优先级

level 属性指示消息的类型。 有效级别为“info”、“warn”和“error”。 级别并不表示给定消息的重要性 - 例如,某些错误是微不足道的,有些信息性消息至关重要。

优先级指示消息的重要性。 有效的 优先级 值为“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 发送

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。 日志将上传到节点的保险箱引用的 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