私は最近、再設計しなければならない同僚からカーボン/グラファイトのセットアップを「継承」しました。現在のセットアップは次のとおりです。
- データセンター 1 (DC1): 1 つのカーボン リレーと 4 つのカーボン キャッシュを備えた 2 つのサーバー (サーバー DC1-1 およびサーバー DC1-2)
- データセンター 2 (DC2): 1 つのカーボン リレーと 4 つのカーボン キャッシュを備えた 2 つのサーバー (サーバー DC2-1 およびサーバー DC2-2)
4 つのカーボン リレーはすべて、REPLICATION_FACTOR が 2、一貫性のあるハッシュ、およびすべてのカーボン キャッシュ (2(DC) * 2(サーバー) * 4(キャッシュ)) で構成されています。これにより、一部のメトリックが 1 つのサーバーにのみ存在するという影響がありました (それらはおそらく同じサーバー上の別のキャッシュにハッシュされていました)。100 万を超えるメトリクスでは、この問題はすべてのメトリクスの約 8% に影響します。
私がやりたいのは、冗長性を備えた多層セットアップです。これにより、データセンター全体ですべてのメトリックをミラーリングし、データセンター内では一貫したハッシュを使用してメトリックを 2 台のサーバーに均等に分散させます。
このためには、リレーの構成 (主に) について助けが必要です。ここに私が考えているものの写真があります:
クライアントはそれぞれのデータセンターのtier1relayにデータを送信します(「負荷分散」はクライアント側で発生するため、たとえば、ホスト名に偶数の番号を持つすべてのクライアントはtier1relay-DC1-1に送信され、奇数のクライアントはtier1relay-DC1-1 に送信されます)。 number はtier1relay-DC1-2に送信されます)。
tier2relayはコンシステント ハッシュを使用して、データセンターのデータを 2 台のサーバーに均等に分散します。たとえば、tier2relay-DC1-1の「疑似」構成は次のようになります。
- RELAY_METHOD = コンシステント ハッシュ
- 宛先 = 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に送信し (DC 間でメトリックを複製する) 、何らかの「tier2relay-DC1-1とtier2relay- DC1-2の間の負荷分散」。
別のメモ: コンシステント ハッシュを使用する場合、カーボン リレー内で何が起こるかを知りたいのですが、1 つ以上の宛先に到達できません (サーバーがダウンしています) - メトリックが再度ハッシュされますか (到達可能なキャッシュに対して) またはそれらは当面の間、単にドロップされますか?(または、別の角度から同じ質問をする: リレーがメトリックを受信すると、構成されたすべての宛先のリストに基づいて、または現在使用可能な宛先に基づいて、メトリックのハッシュを行いますか?)