你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
需要在群集的每个节点上安装 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 的信息。 它揭露:
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 页中。
每条消息都有两个属性: level
和 priority
。
该 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 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