我最近从一位同事那里“继承”了碳/石墨设置,我必须重新设计。当前设置是:
- 数据中心 1 (DC1):2 个服务器(server-DC1-1 和 server-DC1-2),带有 1 个 carbon-relay 和 4 个 carbon 缓存
- 数据中心 2 (DC2):2 个服务器(server-DC2-1 和 server-DC2-2),带有 1 个 carbon-relay 和 4 个 carbon 缓存
所有 4 个 carbon-relay 都配置了 REPLICATION_FACTOR 为 2、一致的散列和所有carbon-caches ( 2(DCs) * 2(Servers) * 4(Caches) )。这导致某些指标仅存在于一台服务器上(它们可能被散列到同一台服务器上的不同缓存中)。对于超过 100 万个指标,这个问题影响了大约 8% 的指标。
我想做的是具有冗余的多层设置,以便我在数据中心和数据中心内部镜像所有指标,我使用一致的哈希将指标均匀分布在 2 台服务器上。
为此,我需要(主要)继电器配置方面的帮助。这是我想到的图片:
客户端会将其数据发送到各自数据中心中的tier1relay(“负载平衡”将发生在客户端,因此例如,主机名中具有偶数的所有客户端将发送到tier1relay-DC1-1和具有奇数的客户端号码将发送到tier1relay-DC1-2)。
tier2relay使用一致的哈希将数据中心中的数据均匀地分布在 2 台服务器上。例如,tier2relay-DC1-1的“伪”配置如下所示:
- RELAY_METHOD = 一致散列
- DESTINATIONS = server-DC1-1:cache-DC1-1-a, server-DC1-1:cache-DC1-1-b, (...), server-DC1-2:cache-DC1-2-d
我想知道的:我如何告诉tier1relay-DC1-1和tier1relay-DC1-2他们应该将所有指标发送到 DC1 和 DC2 中的tier2relay s(在 DC 之间复制指标)并执行某种“ tier2relay-DC1-1和tier2relay-DC1-2之间的负载平衡” 。
另一方面:如果我使用一致的散列,我也想知道碳中继内部会发生什么,但是一个或多个目的地无法访问(服务器关闭) - 指标是否再次被散列(针对可访问的缓存)或他们会暂时放弃吗?(或者从不同的角度问同样的问题:当中继接收到一个指标时,它是根据所有已配置目的地的列表还是根据当前可用的目的地对指标进行散列处理?)