web-dev-qa-db-ja.com

「エニーキャスト」とは何ですか?どのように役立ちますか?

数秒前に " クールまたは便利なサーバー/ネットワーキングトリックとは何ですか? "を読むまで、エニーキャストについて聞いたことはありませんでした。

ウィキペディアの「 Anycast 」に関する記事は非常に形式的であり、それがどのように使用されるかという精神的なイメージを実際に引き起こしていません。

誰かがいくつかの非公式な文章で「エニーキャスト」とは何か、それをどのように構成するか(一般的な意味で)、その利点は何か(何が簡単になるか)を説明できますか?

85
username

エニーキャストは、同じIPプレフィックスが複数の場所からアドバタイズされるネットワーク技術です。次に、ネットワークは、ルーティングプロトコルのコストと、場合によってはアドバタイジングサーバーの「正常性」に基づいて、ユーザーのリクエストをルーティングする場所を決定します。

エニーキャストにはいくつかの利点があります。まず、定常状態では、エニーキャストサービスのユーザー(DNSは優れた例です)は常に(ルーティングプロトコルの観点から)「最も近い」DNSサーバーに接続します。これにより、レイテンシが削減されるだけでなく、一定レベルのロードバランシングが提供されます(コンシューマーがネットワーク全体に均等に分散されている場合)。

もう1つの利点は、構成管理が容易なことです。サーバー/ワークステーションの展開場所(アジア、アメリカ、ヨーロッパ)に応じて異なるDNSサーバーを構成する必要はなく、すべての場所で1つのIPアドレスを構成します。

エニーキャストの実装方法によっては、高可用性のレベルを提供することもできます。エニーキャストルートのアドバタイズがなんらかのヘルスチェック(この例では、既知のドメインのDNSクエリなど)に基づいている場合、サーバーに障害が発生するとすぐに、そのルートを削除できます。ネットワークが再収束すると、ユーザーの要求はDNSの次に近いインスタンスにシームレスに転送され、手動による介入や再構成は必要ありません。

最後の利点は、水平スケーリングです。 1つのサーバーが過負荷になっていることがわかった場合は、過負荷のサーバーの要求の一部を占めることができる場所に別のサーバーをデプロイするだけです。この場合も、クライアントの構成は必要ないため、これは非常に迅速に行うことができます。

88
Murali Suriar

「エニーキャスト」を理解するときによく混乱したことの1つは、ハイレベルな用語ですが、実際の実装では、通常、2つの例に要約されます。

  1. [〜#〜] bgp [〜#〜] を使用して複数の [〜#〜] as [〜#〜を介して同じIPブロックをアドバタイズするルーター] パスをユーザーを「より近い」サイトに導くおおまかな方法​​として。同時に、問題のあるサイトからルートを撤回するだけで、他のサイトへのほぼ透過的なフェイルオーバーを提供します。これは、ほぼすべてのプロトコルで役立ちますが、バックエンドデータの同期に関する多くの懸念が明らかに生じます。

  2. 自分のネットワーク内の複数のポイントから同じサービスIPをアドバタイズする( 静的ルーティング を介して) [〜#〜] ospf [〜#〜][〜#〜] eigrp [〜#〜] など)。ルートに重みが付けられている場合異なる場合は、フェイルオーバーメカニズムとして機能します。ルートが均等に重み付けされている場合、ほとんどのブランドベンダールーターのパケット単位またはフロー単位のロードバランシング機能を利用できます。 アプリケーションレイヤー プロトコルがこれに慣れていることに注意する必要があります。そのため、 [〜#〜] dnsで使用されることをほとんど常に耳にします。 [〜#〜] リクエストは常に1つのパケットであり、すべてがステートレスです。個人的には、これは、DNSと適切なロードバランサーの組み合わせがほとんど常に優れたソリューションである場合の、ネットワークレイヤーへのアプリケーションレイヤーの懸念のハック侵入と見なします。

32
cagenut

主にDNSなどのUDPベースのサービスに使用されます。基本的に、世界中の複数のデータセンターから同じルートをアナウンスします。このようにして、クライアントはBGPルートに基づいて「最良」および「最も近い」データセンターに送信されます。ネットワークプロバイダーはゲームをプレイしたり、特定のネットワークからのトラフィックを別の方法でルーティングしたりできるため、「最高」と「最も近い」を引用符で囲みました。一般に、エニーキャストを使用すると最善の結果が得られますが、保証はありません。

この例は、DNSサーバーを1.2.3.4および1.2.3.5としてリストすることです。ルーターは、複数のデータセンターから1.2.3/24へのルートをアナウンスします。あなたが日本にいて、そこにデータセンターがあれば、おそらくそこに行くことになるでしょう。米国にいる場合は、米国のデータセンターに送られます。繰り返しますが、これはBGPルーティングに基づいており、実際の地理的なルーティングではありませんが、通常、それが故障の原因です。

16
diq

私の元の返答に従って、ブログにもう2つの記事を投稿しました。AnycastDNS-パート3、RIPの使用とAnycast DNS-パート3、RIPの使用(続き)。後者については詳しく説明しますが、www.netlinxinc.com/netlinx-blog.htmlで、RIPを使用してエニーキャストDNS用のCiscoルーターとオープンソースのQuagga Hostベースのルーティングソフトウェアを構成する方法に関する実際のレシピを見つけることができます。

私は現在、シリーズの4番目の記事の執筆に取り組んでいます。これは、OSPFを使用してエニーキャストDNSを展開する方法のレシピを提供します。シリーズの最後に、BGPを使用してエニーキャストDNSを展開するためのレシピを示します。

エニーキャストDNS-パート1、概要

エニーキャストDNS-パート2、静的ルートの使用

エニーキャストDNS-パート3、RIPの使用

エニーキャストDNS-パート3、RIPの使用(続き)

9
netlinxman

現在のところ、これは主にDNSです。

非公式に、同じアドレスを使用して世界中の複数の場所で同じサービスを設定できるようにすることで、サービスの回復力とネットワークアクセス/レイテンシ/速度を向上させます。誰かがそのアドレスを照会すると、最も近い/最良のルートが与えられます。

サーバーの観点から:

ユニキャストが1人に行き、マルチキャストが複数に行き、ブロードキャストがすべての人に行くなら、エニーキャストは統合失調症であり、各人に最も適した人格がそれらにつながる複数の人格を持っています。うーん。最高の類推ではありません。

4
Alex

エニーキャストの本当に興味深い使い方はDNSです。 5つの異なるDNSサーバーをさまざまな物理的およびネットワーク上の場所に配置できますが、単一の(場合によってはプライマリDNSとセカンダリDNSの両方の)アドレスを共有します。ソースの場所に応じて、最も近いノードにルーティングされます。これにより、一部のトラフィックバランシングが行われ、DNSサーバーが停止した場合に冗長性が提供されます。

3
dexedrine

Anycastは、リセットや長い会話に耐えられない一部のTCP接続では、良好または信頼性がないことにも注意してください。

エニーキャストIPはBGPを使用して、インターネットに2、3以上の特定のホストへのパスがあることを伝えますが、実際にはこれらは同じホストではありませんであり、正確です低レイテンシ接続を実現するために、複数のデータセンター間でアドバタイズされたホストのレプリカ。

たとえば、私は3台のサーバーで198.251.86.133に対してwww以外の301リダイレクションを実行している場合、このホストにpingを実行すると、サーバーがUS-East、USであるため、ときどきDUPLICATE応答が返ったり、場所によってはドロップしたりすることがあります。 -West、およびEUR。短時間の接続(ブラウザキャッシュされた301など)の場合、これは最も近いデータセンターのローカルサーバーによる高速応答を提供します。

冗長性の観点から見ると、エニーキャストには何も組み込まれていません。そのIPは(通常のシナリオでは)常にこれらのデータセンターを指すため、各サイトで独立した冗長性が必要です。

2
Jacob Evans

同僚の1人によると、「最も近い」エニーキャストIPアドレスしか攻撃できないので、DoS攻撃の緩和手法としても役立ちます。たとえば、米国に多くのゾンビがいる場合、ユーロサイトは実際にはパケットを送信できないため、ほとんど影響を受けません。

また、BGPで正しいルートとしてアドバタイズされない可能性が高い場所から送信されたスプーフィングされたパケットをフィルタリングする方法として使用することもできます(ASNが北米を示すときにヨーロッパに到着するパケットなど)。ブロック)。

2
MarkR