Multi-regional模式部署VictoriaMetrics
整体架构图
每个工作负载区域(地球、火星、金星)都有一个 vmagent,通过监控设置将数据发送到多个区域。监控设置(地面控制 1,2)包含 VictoriaMetrics 时间序列数据库 (TSDB) 集群或单个数据库。
使用此架构,可以实现:
-
全局查询视图
-
查询一个监控安装的所有指标
-
高可用性
-
您可能会失去一个地区,但您的体验将是相同的。
-
不过流量会重复两次。
如何写入
给vmagent指定多个-remoteWrite.url来完成多写:
/path/to/vmagent-prod \
-remoteWrite.url=<ground-control-1-remote-write> \
-remoteWrite.url=<ground-control-2-remote-write>
如何读取数据
-
1、集群设置中的多级vmselect设置,顶级vmselect从集群级vmselect读取数据
- 返回其中一个集群中的数据不可用
- 合并两个来源的数据。您需要打开重复数据删除来删除重复项
-
2、Regional endpoints - 使用一个区域端点作为默认值,如果出现问题,请切换到另一个区域端点。
-
3、Load balancer- 将查询发送到特定区域。这种设置的优点和缺点是它很简单。
-
4、Promxy - 从多个类似 Prometheus 的源读取数据的代理。它允许更智能地读取数据,以覆盖开箱即用的区域不可用性。它还不支持 MetricsQL。
-
5、集群设置中的全局 vmselect - 您可以设置一个额外的 vmselect 子集,该子集了解所有区域中的所有存储。
- vmselect端1ms去重必须开启。此设置允许您使用 MetricsQL 查询数据。
- 缺点是 vmselect 等待所有区域中所有存储的响应。
数据高可用性
数据被复制两次,每个区域都包含数据的完整副本。这意味着一个区域可能处于离线状态。
您不需要使用 VictoriaMetrics 集群设置复制因子。
告警高可用性
您可以在每个地面控制区域中设置 vmalert 来评估记录和警报规则。由于每个区域都包含数据的完整副本,因此您无需将记录规则从一个区域同步到另一个区域。
告警的去重则使用alertmanager的集群模式:
- https://prometheus.io/docs/alerting/latest/alertmanager/#high-availability