web-dev-qa-db-ja.com

実用的なエニーキャスト

私は読んだ DNSを使用して最も近いサーバーに訪問者を送るにはどうすればよいですか? 投稿しますが、実際的なレベルでは理解できないことがまだあります。

2台のサーバーがあるとします。 1つはニューヨークに、もう1つはパリにあります。どちらも、ISP(またはホスティング会社)によって割り当てられた異なるIPアドレス1.1.1.1および1.1.1.2を持っています

ヨーロッパの人々が http://blabla.com:808 と入力したときに、クライアントに関して最も近いサーバーのIPに変換されるようにするには、どの手順に従う必要がありますか?

私の最終的な目標は、ユーザーを最も近いサーバーに誘導することにより、私が作成したTCPソケットアプリケーションの速度を上げることです。

更新:答えてくれてありがとう。私が実際にこれを達成する前に、私が学ぶことはもっとたくさんあると思います:\。

4
Daniel

Amazon AWSのRoute53は、エニーキャストを利用する信頼性が高く、手頃な価格のグローバルロードバランサーです。これは断然最も簡単なルートです。

エニーキャストDNSを自分で設定する場合は、IPアドレスを取得し、複数のデータセンターの場所にこのIPアドレスをBGPでアドバタイズさせる必要があります。通常、人々は関連する機関からIPアドレスの範囲を購入しますが、私は人々のIPアドレスをリースし、他のデータセンターからそれらを宣伝できるようにするデータセンターを見てきました。

一般的な設定では、各サーバーには独自の一意のIPアドレスとエニーキャストアドレスの両方があります。例えば:

ロンドンには1.1.1.1と3.3.3.3がありますニューヨークには1.1.1.2と3.3.3.3があります

DNSサーバーは、3.3.3.3をリッスンしている各サーバーで実行され、そのサーバーに一意のIPを発行します。

エニーキャストはIP層にあるため、TCPなどのトランスポートテクノロジーの下にあることに注意してください。そのため、状態を追跡するトランスポート(TCPなど)はエニーキャストには適していません。 DNSは(通常)UDPであり、クライアントを最も近いサーバーに分散してTCP接続を確立する方法として使用されます。

4
phil-lavin

DNS応答をその場所に基づいて行うサービスを使用する必要があります。 DNS会社にアウトソーシングするか、自分で構築しました。あなたが本当に探しているテクノロジーは、エニーキャストではなく、グローバルサーバー負荷分散(GSLB)だと思います。

ほとんどのDNS企業はこれをサービスとして提供しています。

PowerDNSはDIYGSLBの人気のあるソリューションのようです: http://www.powerdns.com/auth.html

4
scottm32768

サーバーが2つしかない場合、1つは北米に、もう1つはヨーロッパにある場合は、TCPソケットアプリとDNSの両方を自分で実行することを決定できます。

DNSを使用すると、Split-Horizo​​n DNSアプローチのようなものを使用できます。これは、 DNSサーバー、または異なるIPアドレス範囲をサーバーの異なる実行中のインスタンスにリダイレクトするファイアウォールを介して(異なるローカルIPアドレスでリッスンするローカルマシン上でサーバーの2つの異なるコピーを実行できます)。

NAホストが1つとEUホストが1つしかない場合、ヨーロッパのホストのAレコードを使用してRIPEおよびAfriNICIPアドレスからのDNS要求に応答することで、約90%のケースで期待される結果を得ることができます。 ARIN、APNIC、LACNICによって管理されている/ 8ブロックのIPアドレスと、北米のサーバーのAレコードを持つ残りの/ 8アドレス空間から。これは特定の状況でいくつかの間違った結果をもたらします(いくつかの/ 8ブロックはヨーロッパと北アメリカの間で共有され、いくつかのアドレス空間はエニーキャストなどです)が、発生する最悪の事態は影響を受ける当事者への少しの余分な遅延です。大したことではないはずです。

(そして、はい、これらのことを簡単にする方法があるはずですが、これまでのところ、ないようです。)

0
cnst