站点
站点是一个 Arkvory 安装:主安装、位于其他地点的镜像、从另一安装导入版本的安装。在 站点 中,一个安装(控制站点)显示它管理的每个站点:是否应答、版本、HA 副本和只读网关、镜像及其落后多少,以及下载队列。只有全局管理员能看到此页面。
集群状态
页面以 集群状态 开头:各站点中需要关注的问题,以及哪个站点为哪个站点提供数据。控制站点根据最近一次对各站点的读取生成它,最多每 5 秒一次,并把自身列为“本站点”。
告警
每条告警指明站点和问题,最严重的排在前面:严重,然后是 警告,然后是 提示。没有需要关注的问题时,列表会说明。
| 告警 | 严重程度 | 何时 | 处理 |
|---|---|---|---|
| 无法访问 | 严重 | 2 分钟没有应答。一次读取失败不算告警 | 检查站点和网络 |
| 证书、已撤销、已拒绝、无效 | 严重 | 立即,与同名状态一起出现 | 重新配对,或将两个安装升级 |
| 过期 | 警告 | 站点有应答,但超过三个读取周期(90 秒)加上一轮读取所需的时间未被读取:控制站点的后台读取卡住了 | 检查控制站点的 API 进程 |
| 不可写入 | 严重 | 写入进程拒绝写入,且并未在排空 | 检查它的数据库和磁盘 |
| 副本 | 严重 | HA 站点缺少数据副本;写入暂停,直到副本恢复 | 恢复缺失的节点,参见高可用集群 |
| 单副本 | 警告 | 缺少副本,但运维人员已接受在某个时间之前只有单副本 | 在该时间之前恢复缺失的节点 |
| 镜像失败 | 警告 | 镜像的上次同步失败。重新读取已恢复的源不算 | 查看镜像的错误代码 |
| 镜像落后 | 警告 | 镜像落后于源 ARKVORY_FLEET_LAG_ALERT 个变更(默认 1000)或更多 | 检查源、网络和镜像 |
| 更新失败 | 警告 | 站点的更新程序报告失败 | 在站点设置中打开 更新 |
| 版本不同 | 提示 | 站点运行的版本与控制站点不同 | 将各站点升级到同一版本 |
告警只使用最新的读取结果:不应答的站点只产生它自己的告警,而不会根据它上次报告的内容产生告警。一轮读取每八个站点最多需要 15 秒,因为控制站点同时最多读取八个站点,每个最多等待 15 秒;过期告警会加上这段时间,这样大量无法访问的站点不会让健康的站点看起来卡住。Prometheus 使用同一个 ARKVORY_FLEET_LAG_ALERT 告警,参见监控。
关联
关联 显示哪个站点为哪个站点提供数据。每个镜像和导入都是一个箭头,从源站点指向保存镜像的站点。
- 如果没有任何受管站点在某个源的地址上应答,该源以其地址显示,带虚线边框。如果该源就是控制站点本身,请设置
ARKVORY_SITE_URL,参见设置。 - 失败的关联显示为红色虚线。
- 关联上的数字是镜像落后于源的变更数。
- 站点不应答期间,它的关联及落后数保持为它上次报告的内容,并标记为最后已知状态:在地图上显示为虚线,在表格中带有提示 最后已知状态:站点未响应。
地图下方的表格列出相同的信息:源、站点、仓库、源仓库 和 落后。
控制站点的全局管理员可以通过 GET /api/v1/fleet/overview 或 SDK 的 client.fleet.overview() 获取同样的告警和关联。对于 Prometheus,控制站点导出其站点的状态和告警数量:参见监控。
工作方式
- 控制站点保存站点列表。它每 30 秒通过 HTTPS 读取每个站点并保留最后的应答,因此停止应答的站点仍会显示最后已知的状态。
- 配对时,站点给控制站点一个专属密钥,即集群密钥。它只能访问控制站点所需的内容:站点状态、其目录中的描述,以及所列的更改:下载队列、更新请求以及交给站点代理的镜像和 HA 更改。它不能下载文件字节、写入仓库,也不能读取或修改账户和密钥。
- 控制站点用其数据目录中的密钥(
fleet.key)封存集群密钥。仅凭数据库及其备份无法得到它们。恢复后请重新配对站点。 - 每个站点都显示哪些控制站点在管理它,并可随时撤销。
配对站点
- 在站点上:打开 站点,在 本站点 下选择 生成配对码。站点显示一个十分钟内有效的代码;使用内置 HTTPS 时,还会显示其证书指纹。
- 在控制站点上:打开 站点,在 配对站点 下输入站点地址并选择 检查。控制站点连接后显示收到的证书指纹。
- 比较两个指纹。它们必须相同。如果不同,说明地址错误或两个安装之间有其他东西:不要配对。
- 输入代码并选择 配对。站点出现在列表中并显示其状态。
代码只能使用一次。已使用或已过期的代码会被拒绝:请生成新代码。
地址是站点 API 的 HTTPS 地址,例如 https://branch.example:8443。明文 HTTP 只在同一台计算机上(127.0.0.1)被接受。如果 TLS 在站点前面的代理处终止,站点无法显示代理的证书:请与浏览器为站点地址显示的 SHA-256 指纹比较。
此后控制站点只信任这一个证书。站点换了新证书时会显示 证书已变更:请移除站点并重新配对。
状态
| 状态 | 含义 | 处理 |
|---|---|---|
| 正常 | 站点应答了最近一次读取 | 无需处理 |
| 尚未读取 | 站点尚未被读取 | 等待下一次读取或选择 立即读取 |
| 无法访问 | 没有应答:站点已停止或网络中断 | 检查站点和网络。最后已知的状态仍然可见 |
| 证书已变更 | 站点出示的证书与已确认的不同 | 如果证书已续签,请移除站点并重新配对 |
| 访问已撤销 | 站点管理员撤销了此控制站点 | 用新代码重新配对 |
| 意外应答 | 站点的应答本版本无法理解 | 将两个安装升级到同一版本 |
| 已拒绝 | 站点拒绝了请求 | 用新代码重新配对 |
列表显示的内容
- 版本:站点的版本及其角色,写入或只读网关。
- HA 和网关:在 HA 集群中,完整副本数以及写入所需的副本数;持有槽位的只读网关。
- 镜像:站点的镜像和导入;最落后的一个比源落后多少变更,或有多少已停止。
- 下载队列:正在进行的下载和在队列中等待的下载。
- 最后应答:站点最后一次应答的时间。
立即读取全部 立即读取所有站点,而不等待下一轮。移除 在此处忘记站点;也请在该站点上撤销控制站点,因为在此之前其密钥在那里仍然有效。
站点内容
站点行中的 内容 在列表下方打开其仓库、制品和文件。选择一个仓库;查找 按名称或标签搜索制品,并列出路径以所输入内容开头的文件。显示更多 读取下一页。
控制站点用其集群密钥在站点上读取这些内容,并按站点给出的原样显示应答。只传输描述:名称、大小、标签、阶段、路径和修订。要下载文件,请使用站点本身。
站点设置
站点行中的 设置 在列表下方打开其设置;本站点的设置 为本站点打开同样的卡片。卡片分为三部分:
- 下载队列:同时进行的下载数、为人员保留的位置、策略、类别权重以及流量控制中的其他队列值。留空的字段保留站点环境中的值,以灰色显示。保存队列设置 立即应用这些值,无需重启:新的决策遵循它们,正在进行的下载保留其位置。恢复默认值 恢复为环境值。
- 更新:已安装版本和最新版本、自动安装和维护时段、立即检查 和 安装更新。站点的更新程序在一分钟内接收请求;在此之前卡片显示为已接受。
- 镜像和集群:站点的镜像和导入,带有 更换密钥 和 断开;带源密钥的 接入镜像或导入;在 HA 集群上,切换 到拥有完整副本的节点(节点名称输入两次)以及单副本决定。站点代理在一分钟内以
arkvory configure和cluster-*的检查与回滚应用每个请求;发给代理的请求 显示每个请求的结果。源密钥只以单独文件交给代理一次,之后不再显示。代理就是站点的更新程序:用updates-connect连接它。
每次更改都带有其所基于的修订号。如果在此期间有人修改了设置,站点会拒绝该更改,卡片会显示当前值:请检查后再次保存。站点会记录谁修改了它的队列:控制站点的密钥及其管理员的名称。
从控制站点只能把镜像或导入接入为新仓库,源的证书颁发机构证书在站点本身上设置(arkvory configure --mirror-ca-file):站点信任的内容永远不会被远程更改。请求列表以代码显示每项更改的结果;代理自己的消息保留在站点上的代理日志中。如果某项更改中途被打断,在站点管理员检查并在那里运行 arkvory changes-reset --root <根目录> 之前,代理不会接受其他更改。
谁在管理本站点
在 本站点 下,每个站点列出管理它的控制站点:名称、配对人、配对时间和最后请求。撤销 立即拒绝该控制站点的密钥。
设置
| 变量 | 默认值 | 含义 |
|---|---|---|
ARKVORY_SITE_NAME | 主机名 | 本安装在其他站点上的名称 |
ARKVORY_FLEET_KEY_FILE | 数据目录中的 fleet.key | 封存受管站点密钥的密钥;写入进程首次启动时创建 |
ARKVORY_SITE_URL | 未设置 | 其他站点访问本安装所用的地址 https://host[:port]。设置后,源为本安装的镜像会在 关联 中关联到本安装。值无效时启动会停止 |
ARKVORY_FLEET_LAG_ALERT | 1000 | 受管站点的镜像落后于源多少个变更时告警;整数,1 或更大 |
限制
- 隔离测试以及添加或移除集群节点仍是在节点上执行的本地命令。只读网关保留其环境中的下载队列。
- 一个控制站点最多管理 256 个站点,同时最多读取八个。
- 控制站点持有其管理的每个站点的密钥:请像保护站点本身一样保护它的全局管理员和数据目录。