英语法语西班牙语

Ad


OnWorks 网站图标

hbal - 云端在线

通过 Ubuntu Online、Fedora Online、Windows 在线模拟器或 MAC OS 在线模拟器在 OnWorks 免费托管服务提供商中运行 hbal

这是可以使用我们的多个免费在线工作站之一在 OnWorks 免费托管服务提供商中运行的命令 hbal,例如 Ubuntu Online、Fedora Online、Windows 在线模拟器或 MAC OS 在线模拟器

程序:

您的姓名


hbal - Ganeti 的集群平衡器

概要


巴勒 {后端选项...} [算法选项...] [报告选项...]

巴勒 - 版

后端选项:

{ -m | -L[ ] [-X] | -t 数据文件 | -I }

算法选项:

[ --最大CPU 占用率 ] [ --最小磁盘 磁盘比率 ] [ -l 限制 ] [ -e 得分了 ] [ -g 三角洲 ] [
--最小增益限制 门槛 ] [ -O 名称... ] [ --无磁盘移动 ] [ --无实例移动 ] [
-U 实用程序文件 ] [ --忽略动态 ] [ --忽略软错误 ] [ --蒙德 是|否 ] [ --蒙德-Xen ]
[ --缺少蒙德数据时退出 ] [ --疏散模式 ] [ --限制迁移 ] [
--选择实例 安装... ] [ --排除实例 安装... ]

报告选项:

[ -C[ 文件 ] ] [ -p[ 领域 ] ] [ --打印实例 ] [ -S 文件 ] [ -v... | -q ]

商品描述


hbal 是一个集群平衡器,它查看集群的当前状态(具有
它们的总和可用磁盘、内存等)和实例放置并计算一系列
旨在使集群进入更好状态的步骤。

所使用的算法被设计为稳定的(即它会给你相同的结果,当
从解决方案的中间重新启动它)并且相当快。 然而,这并不是
设计为一个完美的算法:有可能使它进入一个角落,从
它找不到任何改进,因为它看起来只领先一步。

程序通过 Rapi 或 Luxi 访问集群状态。 它还请求数据
使用 --mond 选项来自所有 MonD 的网络。 目前它只使用由
CPU负载收集器。

默认情况下,程序将在计算时以增量方式显示解决方案,在一个
有点神秘的格式; 要获取实际的 Ganeti 命令列表,请使用 -C 选项。

算法
该程序以独立的步骤运行; 在每一步,我们计算最佳实例移动
这会降低聚类分数。

实例的可能移动类型是故障转移/迁移和
替换磁盘,这样我们更改了一个实例节点,而另一个保留
(但可能角色发生了变化,例如从主要角色变为次要角色)。 名单是:

· 故障转移 (f)

· 替换次要 (r)

· 替换初级,复合移动(f, r, f)

· 故障转移和替换辅助,也复合(f,r)

·替换辅助和故障转移,也复合(r,f)

我们不做替换两个节点的唯一剩余可能性(r,f,r,f 或
等效 f,r,f,r) 因为这些移动需要对两个候选者进行详尽的搜索
主次节点,节点数为O(n*n)。 此外,它
似乎没有给出更好的分数,但会导致更多的磁盘更换。

放置 限制
在每一步,如果实例移动会导致:

· 一个节点进入N+1故障状态

· 移动到离线节点的实例(离线节点要么从集群中读取
或声明为 -O; 排空的节点被认为是离线的)

· 基于排除标签的冲突(排除标签从集群中读取和/或定义
通过 --排除标签 选项​​)

· 要超过的最大 vcpu/pcpu 比率(通过配置 --最大CPU)

· 最小磁盘可用百分比低于配置的限制(通过配置 --最小磁盘)

田字形 计分
如前所述,该算法试图在每一步最小化聚类分数。 目前
该分数计算为以下组件的加权总和:

· 空闲内存百分比的标准偏差

· 保留内存百分比的标准偏差

· 保留内存百分比的总和

· 可用磁盘百分比的标准偏差

· 未通过 N+1 检查的节点数

· 离线节点上存在的实例数(作为主要或次要); 在里面
感觉 hbal(和其他 htools)耗尽的节点被认为是离线的

· 离线节点上生活(作为主要)的实例数; 这与上述不同
通过帮助 2 节点集群中的此类实例进行故障转移来衡量指标

· 虚拟与物理 CPU 比率的标准偏差(对于主要实例
节点)

· 可用主轴分数的标准偏差(在专用模式下,
主轴代表物理主轴; 否则这种超额订阅的 IO 措施
负载,并且在计算数量时考虑了超额订阅因素
可用主轴)

· 节点上动态负载的标准偏差,用于 CPU、内存、磁盘和网络

· MonD提供的CPU负载标准差

· 在同一故障域中具有主次的实例数

可用内存和可用磁盘值有助于确保所有节点在
他们的资源使用情况。 保留的内存有助于确保节点在某种程度上
在持有辅助实例方面保持平衡,并且没有节点保留过多的内存保留
对于 N+1。 最后,N+1 百分比有助于指导算法消除
如果可能,N+1 次失败。

除 N+1 故障、离线实例数和故障域违规外
计数,我们使用标准偏差,因为当与固定范围内的值一起使用时(我们
使用百分比表示为介于 XNUMX 和 XNUMX 之间的值)它给出了一致的结果
所有指标(有一些与不同方式相关的小问题,但它有效
总体不错)。 “计数”类型值将具有更高的分数,因此会更重要
用于平衡; 因此这些更适合硬约束(如疏散节点和
修复 N+1 个故障)。 例如,离线实例数(即
离线节点上的实例)将导致算法主动移动实例
远离离线节点。 这,再加上离线给定的放置限制
节点,将导致此类节点疏散。

动态负载值需要从外部文件中读取(Ganeti 不提供
它们),并为每个节点计算为:主实例 CPU 负载的总和,主实例的总和
实例内存负载,主次实例磁盘负载的总和(当 DRBD 生成
在正常情况下和降级情况下,辅助节点上的写入负载也会读取
负载),以及主实例网络负载的总和。 如何生成这些的示例
输入到 hbal 的值将是在一天内跟踪实例的 xm 列表,并且
计算 cpu 值的增量,并通过 -U 所有实例的选项
(并将其他指标保留为一个)。 为了使算法工作,所需要的只是
跨所有实例的度量值是一致的(例如,所有实例都使用
cpu% 报告 cpu 使用情况,而不是与使用的 CPU 秒数相关的内容,如果
CPU 是不同的),并且它们被归一化为 XNUMX 和 XNUMX 之间。 请注意,它是
从那时起,建议不要将任何实例指标的负载值设为零
次要实例没有很好地平衡。

仅当所有 MonD 都在运行时,才会使用 MonD 数据收集器的 CPU 负载,
否则不会影响聚类分数。 由于我们无法找到每个的 CPU 负载
实例,我们可以假设实例的 CPU 负载与实例的数量成正比
它的vcpu。 使用这种启发式方法,来自具有高 CPU 负载的节点的实例将倾向于移动
到 CPU 负载较少的节点。

在完美平衡的集群上(所有节点大小相同,所有实例大小相同,并且
平均分布在节点上),所有指标的值将为零,其中
保留内存的总百分比除外。 这并不经常发生在
实践 :)

ONLINE 实例
由于当前的 Ganeti 版本不报告离线(停机)实例使用的内存,
忽略实例的运行状态会导致计算错误。 为此,该
算法从它们的空闲节点内存中减去down实例的内存大小
主节点,实际上模拟了此类实例的启动。

排他性 标签
排除标签机制旨在防止运行相同工作负载的实例
(例如两个 DNS 服务器)登陆同一个节点,这将使相应的节点成为
给定服务的 SPOF。

它的工作原理是用某些标签标记实例,然后基于
这些。 实际使用的标签是通过命令行配置的(选项
--排除标签) 或通过将它们添加到集群标签:

--排除标签=a,b
这将使表单的所有实例标签 一种:*, 乙:* 被认为是
排除图

标签 htools:iexttags:a, htools:iexttags:b
这将使实例标签 一种:*, 乙:* 被考虑用于排除图。 更多的
准确地说,集群标签的后缀以 htools:iexttags: 将成为
排除标签的前缀。

以上两种形式都意味着两个实例都具有(例如)标签 一个:富 or 乙:酒吧
不会在同一个节点上结束。

迁移 标签
如果 Ganeti 部署在异构集群上,则可能无法在不同集群之间迁移
一个节点组的所有节点。 这种情况的一个例子是升级管理程序
逐个节点。 为了让 hbal 意识到这些限制,以下集群标签是
用过的。

标签 htools:迁移:a, htools:迁移:b,
这使表单的节点标签 一种:*, 乙:*等被视为迁移
限制。 更准确地说,集群标签的后缀以
htools:迁移: 将成为迁移标签的前缀。 只有那些
将考虑迁移,其中源的所有迁移标签
节点也存在于目标节点上。

标签 htools:允许迁移:x::y 移民 标签 x y
这断言一个节点标记为 y 能够以相同的方式接收实例,就好像
他们有一个 x 标签。

因此,在管理程序升级的简单情况下,标记所有已升级的节点
使用迁移标签升级就足够了。 在更复杂的情况下,总是
可以为每个使用的管理程序使用不同的迁移标签,并明确说明
允许的迁移方向 htools:允许迁移: 标签。

地点 标签
在一个节点组内,某些节点可能更有可能同时发生故障,因为
错误的常见原因(例如,如果它们共享相同的电源单元)。 加内蒂可以
通过标签了解常见的故障原因。

标签 htools:n位置:a, h工具:n位置:b,
这使表单的节点标签 一种:*, 乙:*等被认为有一个共同的
失败的原因。

考虑具有共同故障原因的主节点和辅助节点的实例
放置不当。 虽然此类展示位置始终是允许的,但它们对
聚类分数。

配置


可以传递给程序的选项如下:

-C, --打印命令
在运行结束时打印命令列表。 没有这个,程序只会
显示一个较短但神秘的输出。

请注意,移动列表将拆分为独立的步骤,称为“作业集”,
但仅用于视觉检查,而不用于实际并行化。 它不是
可以在通过“gnt-instance”命令执行时直接并行化这些,
因为必须执行复合命令(例如故障转移和更换磁盘)
连续。 只有在使用 Luxi 后端和
-L 选项。

将移动拆分为作业集的算法是通过累积移动直到
下一步是接触已经被当前动作接触过的节点; 这意味着我们
无法并行执行(由于 Ganeti 中的资源分配),因此我们开始
一个新的工作集。

-p, --打印节点
打印节点状态之前和之后,其格式旨在允许用户
了解节点最重要的参数。 请参阅手册页 工具(1)
有关此选项的更多详细信息。

--打印实例
打印前后实例映射。 这作为节点状态不太有用,
但它可以帮助理解实例移动。

-O 姓名
此选项(可以多次给出)将节点标记为 这一点在线下监测数字化产品的影响方面尤为明显。.
这意味着几件事:

· 实例不会被放置在这些节点上,即使是暂时的; 例如 更换
小学 如果辅助节点离线,则移动不可用,因为此移动
需要故障转移。

· 这些节点不会被计入分数计算(除了
离线节点上的实例百分比)

请注意,算法还会将 RAPI 报告的任何节点标记为离线
因此,或有“?” 在任何数字字段中的基于文件的输入中。

-e 得分了, --min-score=*分数*
这个参数表示集群分数可以让我们在 N+1 界限之上多高
满意并以两种方式改变计算:

· 如果集群的初始分数低于这个值,那么我们不输入
算法,并成功退出

· 在迭代过程中,如果我们达到低于这个值的分数,我们退出
算法

该参数的默认值目前为 1e-9(根据经验选择)。

-g 三角洲, --min-gain=*增量*
由于平衡算法有时会导致非常微小的改进,
带来更少的收益,他们在搬迁时间成本,这个参数(默认
到 0.01) 代表我们在一个步骤中需要的最小增益,以继续
平衡。

--min-gain-limit=*阈值*
上面的 min-gain 选项只有在集群分数已经是
如下。 门槛 (默认为 0.1)。 此设置背后的基本原理是,在
高集群分数(集群不平衡),我们不想中止重新平衡
太快了,因为后来的收益可能仍然很大。 然而,根据
阈值,总增益只是阈值,所以我们可以提前退出。

--无磁盘移动
此参数防止 hbal 使用磁盘移动(即“gnt-instance
replace-disks") 操作。这将导致更快的平衡,但
当然改进是有限的。 何时使用由用户决定
一个或另一个。

--无实例移动
此参数防止 hbal 使用实例移动(即“gnt-instance
migrate/failover") 操作。这只会使用缓慢的磁盘更换
操作,也将提供更差的平衡,但如果移动可能会很有用
周围的实例被认为不安全或不受欢迎。

--疏散模式
此参数限制考虑移动到那些的实例列表
生活在离线/耗尽的节点上。 它可以用作(批量)替代
加内蒂自己的 gnt节点 撤离,请注意它不保证完整
疏散。

--限制迁移
此参数不允许任何替换主要移动 (frf),以及那些
替换和故障转移移动 (rf),其中实例的主节点不是
倒掉。 如果与 --evac-mode 选项一起使用,唯一的迁移
hbal 将执行从耗尽的节点迁移实例。 这可能很有用,如果
在重新安装基本操作系统期间,只能从
旧操作系统到新操作系统。 但是请注意,迁移标签的使用通常是
更好的选择。

--select-instances=*实例*
此参数将给定的实例(以逗号分隔的列表)标记为唯一的
那些在重新平衡期间被移动的。

--exclude-instances=*实例*
此参数将给定的实例(以逗号分隔的列表)标记为
在重新平衡期间移动。

-U 实用程序文件
该参数指定保存实例动态利用率信息的文件
这将用于调整平衡算法以均衡节点上的负载
(与静态资源使用相反)。 该文件的格式为“instance_name
cpu_util mem_util disk_util net_util”,其中解释了“_util”参数
作为数字和实例名称必须与读取的实例完全匹配
加内蒂。 如果实例名称未知,程序将中止。

如果未给出,则所有指标的默认值为 XNUMX,因此是动态的
利用率对算法只有一种影响:次级的均衡
跨节点的实例(这是唯一未被其他指标跟踪的指标,
专用值,因此实例的磁盘负载会导致辅助实例
均衡)。 请注意,XNUMX 的值也会略微影响主要
实例计数,但已经通过其他指标进行跟踪,因此
动态利用的影响实际上是微不足道的。

--忽略动态
如果给定,所有动态利用率信息将被忽略,假设它是
0. 此选项将优先于 -U 选项或通过
带有 --mond 和 --mond-data 选项的 MonD。

--忽略软错误
如果给定,则在考虑平衡时将省略所有对软错误的检查
移动。 通过这种方式,可以在所有节点都在一个集群中的集群中取得进展。
策略方面的不良状态,例如超过 CPU 或主轴的超额订阅率。

-S 文件名, --save-cluster=*文件名*
如果给定,则将平衡前的集群状态保存到给定文件
加上扩展名“原始”(即 文件名.original),以及最后的状态
平衡被保存到给定的文件加上扩展名“平衡”(即
文件名。均衡)。 这允许将集群状态重新提供给 hbal 本身
或者例如通过 -t 选项的 hspace。

-t 数据文件, --text-data=*数据文件*
后端规范:保存节点和实例信息的文件名
(如果不是通过 RAPI 或 LUXI 收集)。 这个或其他后端之一必须是
被选中。 该选项在手册页中描述 工具(1)。

--mond=*是|否*
如果给定,程序将查询所有 MonD 以从支持的数据中获取数据
收集者通过网络。

--蒙德-Xen
如果给定,还可以从 MonD 查询特定于 Xen 的收集器,前提是监控
守护进程在所有被查询。

--缺少蒙德数据时退出
如果给定,如果从查询 MonD 中获得的数据不完整,则中止。 这
默认行为是继续根据静态信息进行最佳猜测。

--mond-数据 数据文件
保存 MonD 提供的数据的文件的名称,以覆盖查询 MonD
通过网络。 这主要用于调试。 该文件必须是 JSON
格式化并呈现一组 JSON 对象,每个节点一个,有两个成员。
第一个名为 node 的成员是节点的名称,第二个名为 node 的成员是
报告是一组报告对象。 报表对象必须在相同的
由监控代理生成的格式。

-m
后端规范:直接从后端收集数据 作为参数给出
通过 RAPI。 该选项在手册页中描述 工具(1)。

-L []
后端规范:直接从主守护进程收集数据,这将是
通过 LUXI(内部 Ganeti 协议)联系。 该选项在
手册页 工具(1)。

-X 当使用 Luxi 后端时,hbal 也可以执行给定的命令。 这
执行方法是执行单个作业集(请参阅 -C 选项
详细信息)在不同的阶段,如果在任何时候作业集没有所有作业,则中止
成功的。 平衡解决方案中的每一步都将准确地转化为
一项 Ganeti 作业(具有一到三个操作码),以及一个
作业集将并行执行。 作业集本身是串行执行的。

作业系列的执行可以被中断,请参见下面的信号处理。

-l N, --最大长度=*N*
将解决方案限制在此长度。 这可以用于例如自动化
平衡的执行。

--max-cpu=*cpu 比率*
最大虚拟与物理 CPU 比率,作为大于的浮点数
或等于一。 例如,指定 占用率 as 2.5 意味着,对于 4-cpu
机器,最多应允许 10 个虚拟 CPU 用于主要
实例。 值恰好为 XNUMX 意味着不会出现 CPU 超额订阅
(节点本身使用的 CPU 时间除外),低于 XNUMX 的值不会使
感觉,因为这意味着其他资源(例如磁盘)将不会被充分利用
CPU 限制。

--min-disk=*磁盘比率*
剩余的最小可用磁盘空间量,作为浮点数。 为了
例如,指定 磁盘比率 as 0.25 意味着至少四分之一的磁盘
节点上应留有空闲空间。

-G uid, --group=*uuid*
在多组集群上,选择该组进行处理。 否则 hbal 会
中止,因为它不能同时平衡多个组。

-v, --详细
增加输出详细程度。 每次使用此选项都会增加
冗长(目前超过 2 没有意义)来自默认的 XNUMX。

-q, - 安静的
降低输出详细程度。 每次使用此选项都会减少
冗长(小于零没有意义)来自默认的一。

-V, - 版
只需显示程序版本并退出即可。

信号 搬运


通过 LUXI(使用 -X 选项)执行作业时,通常 hbal 将执行所有作业
直到出现一个错误或所有作业成功完成。

由于平衡可能需要很长时间,因此可以通过两种方式提前停止 hbal:

· 通过发送 SIGINT (^C),hbal 将注册终止请求,并等待
直到当前提交的作业完成,此时它将退出(退出代码为 0
如果所有作业都正确完成,否则像往常一样退出代码 1)

· 通过发送 SIGTERM,hbal 将立即退出(退出代码为 2); 它是
用户有责任跟进 Ganeti 并检查结果
当前正在执行的工作

请注意,在任何情况下,通过上述信号杀死 hbal 都是完全安全的
或通过任何其他信号(例如 SIGQUIT、SIGKILL),因为作业本身已被处理
由 Ganeti 而 hbal(提交后)只观察他们的进展。 在这种情况下,
用户将不得不查询 Ganeti 以获取作业结果。

退出 状态


命令的退出状态将为零,除非由于某种原因算法失败
(例如错误的节点或实例数据),无效的命令行选项,或(如果作业
执行)其中一项作业失败。

一旦通过 Luxi 开始执行作业 (-X),如果平衡提前中断(通过
SIGINT,或通过 --max-length) 但所有作业都成功执行,则退出状态为
零; 非零退出代码意味着应该调查集群状态,因为
作业失败或我们无法计算其状态,这也可能表明存在问题
加内蒂方面。

使用 onworks.net 服务在线使用 hbal


免费服务器和工作站

下载 Windows 和 Linux 应用程序

Linux 命令

Ad