【发布时间】:2015-03-04 12:37:26
【问题描述】:
我最近“继承”了一位同事的碳/石墨设置,我必须重新设计。当前设置是:
- 数据中心 1 (DC1):2 台服务器(服务器 DC1-1 和服务器 DC1-2),带有 1 个碳中继和 4 个碳缓存
- 数据中心 2 (DC2):2 台服务器(服务器 DC2-1 和服务器 DC2-2),带有 1 个碳中继和 4 个碳缓存
所有 4 个 carbon-relay 都配置了 REPLICATION_FACTOR 为 2、一致的散列和 all carbon-caches ( 2(DCs) * 2(Servers) * 4(Caches) )。这导致某些指标仅存在于一台服务器上(它们可能被散列到同一台服务器上的不同缓存中)。对于超过 100 万个指标,这个问题影响了大约 8% 的指标。
我想做的是一个具有冗余的多层设置,以便我在数据中心和数据中心内镜像所有指标,我使用一致的哈希将指标均匀分布在 2 台服务器上。
为此,我需要(主要)继电器配置方面的帮助。这是我想到的图片:
客户端会将他们的数据发送到各自数据中心中的 tier1relay(“负载平衡”将发生在客户端,例如,主机名中具有偶数的所有客户端都将发送到tier1relay-DC1-1 和奇数的客户端将发送到 tier1relay-DC1-2)。
tier2relays 使用一致的哈希将数据中心中的数据均匀地分布在 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 中的 tier2relays(跨 DC 复制指标)并且在 tier2relay-DC1-1 和 之间进行某种“负载平衡” tier2relay-DC1-2.
另一方面:如果我使用一致的散列,我也想知道碳中继内部会发生什么,但是一个或多个目的地无法到达(服务器关闭) - 指标是否再次被散列(针对可达缓存)或者它们会暂时被丢弃吗? (或者从不同的角度问同样的问题:当中继接收到一个指标时,它是根据所有已配置目的地的列表还是根据当前可用的目的地对指标进行哈希处理?)
【问题讨论】:
标签: replication graphite graphite-carbon