【博客717】victoriametrics集群可用性和集群组件运维

victoriametrics集群可用性和集群组件运维

集群可用性

  • 如果满足以下条件,VictoriaMetrics 集群将保持可用:

    • HTTP 负载均衡器必须停止将请求路由到不可用的vminsert节点vmselect(vmauth停止将请求路由到不可用的节点)。

    • vminsert集群中必须至少保留一个节点来处理数据提取工作负载。其余活动vminsert节点必须具有足够的计算能力(CPU、RAM、网络带宽)来处理当前的数据提取工作负载。如果其余活动vminsert节点没有足够的资源来处理数据提取工作负载,则数据提取期间可能会出现任意延迟。有关更多详细信息,请参阅容量规划和集群大小调整文档。

    • vmselect集群中必须至少保留一个节点来处理查询工作负载。其余活动vmselect节点必须具有足够的计算能力(CPU、RAM、网络带宽、磁盘 IO)来处理当前查询工作负载。如果其余活动vmselect节点没有足够的资源来处理查询工作负载,则查询处理期间可能会发生任意故障和延迟。有关更多详细信息,请参阅容量规划和集群大小调整文档。

    • vmstorage集群中必须至少保留一个节点,用于接受新提取的数据和处理传入的查询。其余活动vmstorage节点必须具有足够的计算能力(CPU、RAM、网络带宽、磁盘 IO、可用磁盘空间)来处理当前工作负载。如果其余活动节点vmstorage没有足够的资源来处理查询工作负载,则在数据提取和查询处理期间可能会发生任意故障和延迟。有关更多详细信息,请参阅容量规划和集群大小调整文档。

  • vmstorage当某些节点不可用时,集群按以下方式工作:

    • vminsert将新摄取的数据从不可用节点重新路由vmstorage到剩余的健康vmstorage节点。如果健康vmstorage节点有足够的 CPU、RAM、磁盘 IO 和网络带宽来处理增加的数据摄取工作负载,这可以保证新摄取的数据得到正确保存。 vminsert将额外的数据均匀分布在健康vmstorage节点之间,以便均匀分布这些节点上增加的负载。在重新路由期间,健康节点将经历更高的资源使用率和活动时间序列vmstorage的数量增加。

    • vmselect如果至少有一个vmstorage节点可用,则继续提供查询。它将响应标记为来自剩余健康 vmstorage节点的查询的部分响应,因为此类响应可能会丢失存储在暂时不可用的vmstorage节点上的历史数据。每个部分 JSON 响应都包含"isPartial": true选项。如果您更喜欢一致性而不是可用性,则使用命令行标志运行vmselect节点。在这种情况下,如果至少有一个节点不可用,则返回错误。另一个选项是将查询参数传递给节点的请求。-search.denyPartialResponsevmselectvmstoragedeny_partial_response=1vmselect

    • vmselect还接受-replicationFactor=N命令行标志。此标志指示vmselect如果查询期间不可用的节点少于-replicationFactorvmstorage 个,则返回完整响应,因为它假定剩余 vmstorage节点包含完整数据。

  • vmselect对于返回原始数据点的API 处理程序,不会提供部分响应,因为用户通常希望这些数据始终是完整的。以下处理程序返回原始样本:

    • /api/v1/export*端点
    • /api/v1/query当query包含系列选择器 以方括号中的某个持续时间结尾时。例如,/api/v1/query?query=up[1h]&time=2024-01-02T03:00:00Z

更新/重新配置集群节点

所有节点类型 - vminsert、vmselect和vmstorage都可以通过正常关闭进行更新。向相应进程发送SIGINT信号,等待其完成,然后使用新配置启动新版本。

  • 1、无停机策略

    • 1、重启vmstorage节点。
    • 2、重启vminsert节点。
    • 3、重启vmselect节点。
  • 如果满足以下条件,此策略允许在不停机的情况下升级集群:

    • 集群至少有一对节点(每种类型 、vminsert和 ),vmselect因此vmstorage当单个节点在重启期间暂时不可用时,它可以继续接受新数据并处理传入请求。有关详细信息,请参阅集群可用性文档。
    • vminsert当任何类型的单个节点( 、vmselect或vmstorage)在重启期间暂时不可用时,集群具有足够的计算资源(CPU、RAM、网络带宽、磁盘 IO)来处理当前工作负载。
    • 更新后的配置/升级后的二进制文件与集群中的其余组件兼容。请参阅CHANGELOG了解不同版本之间的兼容性说明。
  • 如果至少一个条件不满足,则滚动重启可能会导致在配置更新/版本升级期间集群不可用。在这种情况下,建议采用以下策略。

  • 2、最小停机时间策略

    • 1、正常地并行停止所有vminsert和vmselect节点。
    • 2、优雅地并行重启所有vmstorage节点。
    • 3、并行启动所有vminsert和节点。vmselect
  • 执行上述步骤时,集群无法进行数据提取和查询。通过在上述每个步骤中并行重启集群节点,可以最大限度地减少停机时间。与策略minimum downtime相比,该策略具有以下优势:no downtime

    • 当先前的配置/版本与新的配置/版本不兼容时,它允许以最小的中断执行配置更新/版本升级。
    • 当集群没有足够的计算资源(CPU、RAM、磁盘 IO、网络带宽)进行滚动升级时,它允许以最小的 中断执行配置更新/版本升级。
    • 它允许最小化具有大量节点的集群的配置更新/版本升级的持续时间,对于具有大vmstorage节点的集群,这可能需要很长时间才能实现平滑重启。

提高重启期间的重新路由性能

vmstorage在滚动重启期间,节点的 CPU、RAM 和磁盘 IO 使用率可能会增加 ,因为当vmstorage集群中某些节点暂时不可用时,它们需要处理更高的负载。

  • 可以使用以下方法来减少vmstorage滚动重启期间节点的资源使用:**

    • 将-disableReroutingOnUnavailable命令行标志传递给vminsert节点,以便它们在vmstorage节点重新启动时暂停数据提取,而不是将提取的数据重新路由到其他可用节点。请注意,当某些节点长时间不可用时,该-disableReroutingOnUnavailable标志可能会导致vmstorage长时间暂停数据提取。

    • 将更大的vmstoragevmstoragevminsert值传递给节点(从v1.95.0-storage.vminsertConnsShutdownDuration开始可用) 。在这种情况下,在正常关闭期间逐渐关闭连接的间隔会增加。这减少了重启期间数据提取的减速。

    • 确保-storage.vminsertConnsShutdownDuration小于管理系统vmstorage (例如 Docker、Kubernetes、systemd 等)配置的正常关闭超时。否则系统可能会vmstorage在完成逐步关闭vminsert连接之前杀死节点。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值