ネットワークプロトコルについての楽しい話-講義18 | DNSプロトコル:インターネットの世界のアドレス帳

関連するブログ、参照この一連のオタクの時間-ネットワークプロトコルについての何か

ネットワークプロトコルについての楽しい話-講義18 | DNSプロトコル:インターネットの世界のアドレス帳

先ほど、ニュースの視聴、支払い、ライブストリーミング、ダウンロードなどの通常のシーンについて説明しました。現在、多くのWebサイトがあり、一般的に使用されているWebサイトは20〜30あります。すべてIPアドレスでアクセスしていると、覚えにくいでしょう。そのため、アドレス帳が必要で、名前から特定のアドレスを確認できます。

たとえば、西湖のそばの「おばあちゃんの家」に行きたいのですが、これが名前です。次に、アドレス帳を見て、どの道路が何番かを確認します。

DNSサーバー

これはオンラインの世界でも同じです。Webサイトの名前を覚えておく必要がありますが、WebサイトのIPアドレスを覚えるのは難しいため、DNSサーバーであるアドレス帳も必要です。

これは、DNSが日常生活でいかに重要かを示しています。誰もがオンラインにアクセスするためにそれにアクセスする必要がありますが、同時に、それはそれにとって大きな挑戦でもあります。失敗すると、インターネット全体が麻痺します。また、インターネットを利用する人は世界中に分散しており、誰もが同じ場所にアクセスして特定のサーバーにアクセスすると、遅延が非常に大きくなります。したがって、DNSサーバーは、高可用性、高並行性、および分散型に設定する必要があります。

だから、そのようなツリーのような階層があります 
ここに画像の説明を挿入

  • ルートDNSサーバー:トップレベルドメインDNSサーバーのIPアドレスを返します
  • トップレベルドメインDNSサーバー:権限のあるDNSサーバーのIPアドレスを返します
  • 権限のあるDNSサーバー:対応するホストのIPアドレスを返します

DNS解決プロセス

DNS解決のパフォーマンスを向上させるために、多くのネットワークがDNSキャッシュサーバーを近くに配置します。したがって、次のDNS解決プロセスがあります。

  1. コンピュータクライアントはDNS要求を発行しwww.163.com、IPアドレスを要求し、それをローカルドメインネームサーバー(ローカルDNS)に送信します。ローカルドメインネームサーバー(ローカルDNS)とは何ですか?DHCPを介して構成されている場合、ローカルDNSは、通信、モバイルなどのインターネットサービスプロバイダー(ISP)によって自動的に割り当てられます。通常、インターネットサービスプロバイダーのコンピュータールームにあります。
  2. ローカルDNSはクライアントから要求を受け取ります。このサーバーにキャッシュされたドメイン名と対応するIPアドレスの大きなテーブルを想像できます。見つかっwww.163.comた場合は、IPアドレスを直接返します。そうでない場合、ローカルDNSはルートドメインネームサーバーに質問します。「ボス、www.163.comのIPアドレスを教えてくれませんか?」ルートドメインネームサーバーは最高レベルであり、世界で13セットあります。ドメイン名の解決には直接使用されませんが、パスを示すことができます。
  3. ルートDNSはローカルDNSからリクエストを受信し、サフィックスが.comであることを確認しました。「ああ、www.163.com。このドメイン名は.comゾーンによって管理されています。最上位のドメインネームサーバーのアドレスをお知らせします。聞いてください。」
  4. ローカルDNSがトップレベルドメインネームサーバーに尋ねるようになった:「2番目の子、www.163.comのIPアドレスを教えていただけますか?」トップレベルドメインネームサーバーは、管理を担当する.com、.net、.orgなどのよく知られたファーストレベルドメイン名です。 163.comなどの第2レベルのドメイン名。これにより、より明確な指示を提供できます。
  5. トップレベルドメインネームサーバーは、次のように述べています。「www.163.comゾーンを担当する権威あるDNSサーバーのアドレスをお知らせします。可能であれば尋ねることができます。」
  6. ローカルDNSは権威あるDNSサーバーに質問するようになりました:「こんにちは、www.163.comに対応するIPは何ですか?」ドメイン名解決結果の元のソースである163.comの権威あるDNSサーバー。なぜそれは権威と呼ばれるのですか?私がショットと呼ぶのは私のドメイン名です。
  7. 権限のあるDNSサーバーは、クエリの後で、対応するIPアドレスXXXXをローカルDNSに通知します。
  8. ローカルDNSはクライアントにIPアドレスを返し、クライアントはターゲットとの接続を確立します。

これまでのところ、DNS解決プロセスは完了しています。要約すると、プロセス全体が絵に描かれています。
ここに画像の説明を挿入

負荷分散

クライアントの観点から見ると、これはDNS再帰クエリプロセスです。ローカルDNSはサービスを提供するための全機能を備えているため、結果を待つだけです。

このプロセスでは、DNSを名前でIPアドレスにマップできるほか、ロードバランシングという別のこともできます。

はじめに「おばあちゃんの家」や「おばあちゃんの家」を訪ねる例を考えてみますが、杭州には家がたくさんあるので、住所も多いかもしれません。したがって、「おばあちゃんの家」を食べたくなった場合、誰もが同じ家に行かなくても近くのお店を探すことができ、これが負荷分散です。

DNSは最初に内部負荷分散を実行できます。
たとえば、アプリケーションがデータベースにアクセスする場合、データベースのIPアドレスをアプリケーションで構成する必要がありますか、それともデータベースのドメイン名を構成する必要がありますか?明らかに、ドメイン名を構成する必要があります。このデータベースが何らかの理由で別のマシンに切り替えられると、このデータベースで構成されたアプリケーションが複数ある場合、IPアドレスを変更したらすべてのアプリケーションを変更する必要があります。 。ただし、ドメイン名が構成されている場合、ドメイン名がDNSサーバーの新しいIPアドレスにマップされている限り、この作業は完了し、運用と保守が大幅に簡略化されます。

これに基づいて、さらに一歩進んでいくことができます。たとえば、アプリケーションが別のアプリケーションにアクセスしたい場合、別のアプリケーションのIPアドレスが構成されていれば、このアクセスは1対1です。しかし、アクセスされているアプリケーションが耐えられない場合、実際には複数をデプロイできます。しかし、それにアクセスする複数のアプリケーション間で負荷分散する方法は?ドメイン名として構成するだけです。ドメイン名の解決中は、ポリシーを構成するだけで済みます。今回は最初のIPを返し、次回は2番目のIPを返すことで、負荷分散を実現できます。

さらに重要なことは、DNSはグローバルな負荷分散も実行できることです。

アプリケーションの高可用性を確保するために、アプリケーションは複数のコンピュータールームに配置されることが多く、場所ごとに独自のIPアドレスが割り当てられます。ユーザーがドメイン名にアクセスすると、このIPアドレスをポーリングして複数のデータセンターにアクセスできます。何らかの理由でデータセンターがハングした場合、データセンターに対応するIPアドレスがDNSサーバーで削除されていれば、一定の高可用性を実現できます。

また、北京のユーザーが北京のデータセンターに、上海のユーザーが上海のデータセンターにアクセスすることをお勧めします。これにより、カスタマーエクスペリエンスが非常に良くなり、アクセス速度が超高速になります。これは、グローバルロードバランシングの概念です。

例:
データセンターのオブジェクトストレージの静的リソースへのDNSアクセスデータセンターのオブジェクトストレージの静的リソースにアクセスするために DNSを使用して、プロセス全体を見てみましょう。

全国に複数のデータセンターがあり、複数のオペレーターによってホストされ、データセンターごとに3つの利用可能なゾーンがあるとします。オブジェクトストレージは、アベイラビリティーゾーン全体にデプロイすることで高可用性を実装します。各データセンターでは、少なくとも2つの内部ロードバランサーが展開され、複数のオブジェクトストレージ用のフロントエンドサーバー(プロキシサーバー)が内部ロードバランサーに接続されています。 
ここに画像の説明を挿入

  1. クライアントがobject.yourcompany.comにアクセスする場合は、ドメイン名をアクセス用のIPアドレスに変換する必要があるため、ローカルDNSリゾルバーを要求する必要があります。
  2. ローカルDNSリゾルバーは、まずローカルキャッシュにこのレコードがあるかどうかを確認します。上記のプロセスは複雑すぎるため、ある場合は、直接使用してください。
  3. ローカルキャッシュがない場合は、ローカルDNSサーバーを要求する必要があります。
  4. ローカルDNSサーバーは通常、データセンターまたはキャリアのネットワークに展開されます。ローカルDNSサーバーは、キャッシュがローカルに存在するかどうかを確認し、存在する場合は戻る必要があります。これは、上記の再帰的なプロセスを再度実行したくないためです。
  5. To 7.ローカルがない場合、ローカルDNSはルートDNSサーバーから.comのトップレベルドメインネームサーバーを再帰的に検索し、最後にyourcompany.comの信頼できるDNSサーバーを見つけてローカルDNSサーバーに渡すと、信頼できるDNSサーバーはtrueを返します。アクセスするIPアドレス。

グローバルな負荷分散を必要としない単純なアプリケーションの場合、yourcompany.comの信頼できるDNSサーバーは、ドメイン名object.yourcompany.comを1つ以上のIPアドレスに直接解決でき、クライアントは複数のIPアドレスを使用して実行できます。単純な負荷分散を実現する単純なポーリング。

ただし、複雑なアプリケーション、特にリージョンやオペレーターをまたがる大規模なアプリケーションの場合、より複雑なグローバルロードバランシングメカニズムが必要になります。そのため、これを行うには特別な機器またはサーバーが必要です。これはグローバルロードバランサー(GSLB、グローバルサーバー負荷分散)

yourcompany.comのDNSサーバーでは、通常、CNAMEを構成することにより、object.vip.yourcomany.comなどのエイリアスがobject.yourcompany.comに付与され、ローカルDNSサーバーにGSLBにこのドメイン名の解決を依頼するように指示します。 GSLBは、このドメイン名を解決するプロセスにおいて、独自の戦略を通じて負荷分散を実現できます。

2層のGSLBは、オペレーターとリージョンに分かれているため、図に描かれています。異なるオペレーターの顧客が同じオペレーターのコンピュータールーム内のリソースにアクセスできるようにして、オペレーター間のアクセスが不可能になることを願っています。これは、スループットの向上と待ち時間の短縮に役立ちます。

  1. GSLBの最初の層は、それを要求するローカルDNSサーバーが配置されているオペレーターをチェックすることにより、ユーザーが配置されているオペレーターを知ることができます。CNAMEメソッドを介して、別のエイリアスobject.yd.yourcompany.comを介してモバイルであると想定して、ローカルDNSサーバーにGSLBの2番目のレイヤーを要求するように伝えます。
  2. GSLBの2番目のレイヤーは、それを要求するローカルDNSサーバーのアドレスを確認することで、ユーザーの地理的な場所がわかり、ユーザーの場所に近いリージョンの6つの内部負荷分散(SLB、サーバーロードバランサー)アドレスがわかります。そして、ローカルDNSサーバーに戻ります。
  3. ローカルDNSサーバーは、ローカルDNSリゾルバーに結果を返します。
  4. ローカルDNSリゾルバーは結果をキャッシュした後、それをクライアントに返します。
  5. クライアントは、同じオペレーターに近いリージョン1のオブジェクトストレージへのアクセスを開始します。もちろん、クライアントは6つのIPアドレスを取得します。ランダムにまたはポーリングして、ロードバランシングを介してアクセス可能なゾーンを選択できます。オブジェクトストレージには通常、3つのバックアップがあり、ストレージの読み取りと書き込みの負荷分散を実現できます。

まとめ

これでこのセクションは終わりです。要約しましょう。

  • DNSはオンラインの世界のアドレス帳であり、ドメイン名サーバーはツリー構造で編成されているため、ドメイン名の検索は再帰的な方法を使用し、キャッシュによってパフォーマンスを向上させるため、アドレスはドメイン名で確認できます。
  • ドメイン名とIPをマッピングするプロセスでは、アプリケーションは、ドメイン名に基づいて負荷分散する機会が与えられます。単純な負荷分散またはアドレスと演算子に基づくグローバル負荷分散のいずれかです。

最後に、2つの質問をさせていただきます。

  1. グローバルロードバランシングでアドレスと演算子を分割する必要があるのはなぜですか?
  2. グローバルロードバランシングを使用するプロセスでは、多くの場合、障害が発生します。特定の状況を知っていますか?通信はどのように解決する必要がありますか?
公開された40元の記事 ウォンの賞賛1 ビュー5363

おすすめ

転載: blog.csdn.net/aha_jasper/article/details/105575424