你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
Jetpack
群集的每个节点上都需要 Jetpack。 它由 Azure CycleCloud 自动安装在预配为群集中的节点的每个虚拟机上。 Jetpack 提供三个main函数:
- 节点配置 -- 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 子目录
Directory | 说明 |
---|---|
bin |
有用的二进制文件和脚本。 |
config |
用户定义的和群集定义的配置文件和脚本。 |
logs |
通过联接群集和聚合节点生成的日志特别值得关注的是包含聚合 Chef 食谱结果 的chef-client.log 。 |
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 run_on_shutdown |
添加在节点终止之前要调用的脚本。 |
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 中的信息。 它公开:
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) 、main 事件日志和群集 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 run_on_shutdown
jetpack run_on_shutdown
注册在节点终止之前要调用的 bash 脚本。
命令采用脚本的绝对路径作为参数。
当节点被 Azure 终止时,如果启用了 终止通知 ,Jetpack 将收到终止通知,并尝试在节点关闭之前运行脚本。
节点 必须 启用 终止通知 才能启用 run_on_shutdown
。
jetpack run_on_shutdown /tmp/example.sh
Windows 节点不支持此命令。
jetpack send
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