GPnP Service: GPnPサービスは、すべてのGPnPエージェントの集合として提供されます。これは、プロファイルをレプリケートするための分散方法です。サービスは、ドメイン内の各ノード上でGPnPエージェントとしてインスタンス化されます。このサービスはピア・ツー・ピアなので、マスター・プロセスはありません。クラッシュするGPnPエージェントがあっても、新しいノードがそれまでと同様にサービスを受けられるため、高可用性を実現できます。GPnPでは、(mDNSによって提供される)標準的なIPマルチキャスト・プロトコルを使用して、ピア・サービスを検出する必要があります。マルチキャスト検出を使用すると、GPnPは、構成なしでピアを検出できます。この方法で、新しいノード上のGPnPエージェントは、使用するプロファイルを持つ可能性がある別のエージェントを検出します。
名前解決: GPnPドメイン内で定義された名前は、次の場合に解決できます。
- GPnPドメイン内のホストは、通常のDNSを使用して、GPnPドメインの外部にあるホスト名を解決します。これらのホストは、通常のDNSサービスにアクセスして処理を進めます。DNSサーバーのアドレスは、グローバルな構成から取得するか、DHCPから通知されます。
- GPnPドメイン内では、mDNSを使用してホスト名が解決されます。そのためには、ノードごとに、そのノードが使用する名前とアドレスを認識しているmDNSレスポンダと、そのマルチキャスト・プロトコルを使用して名前解決を行うオペレーティング・システムのクライアント・ライブラリのサポートが必要です。名前が与えられたクライアントは、
gethostbyname
を実行して、mDNS問合せを実行します。名前が存在した場合は、その名前を所有するノード上のレスポンダが、IPアドレスを返します。クライアント・ソフトウェアは、特定のTTL値の間、この解決結果をキャッシュすることができます。 - GPnPドメインの外部にあるマシンは、マルチキャストを使用してGPnPドメイン内の名前を解決することができません。これらの名前を解決するには、通常のDNSを使用します。プロビジョニング認証局は、GPnPドメイン内の既知のアドレスにサブドメイン(ゾーン)を委任するようにグローバルDNSを用意します。GPnPは、GNSというサービスを作成して、その固定アドレスでGPnP名を解決します。GNSサーバーが実行されているノードは、DNSリクエストをリスニングします。受け取ったリクエストは変換してmDNSに転送し、応答の収集と変換を行って、外部のクライアントに送り返します。GNSはステートレスであるため仮想的です。このサーバーは、マルチキャスト・ドメイン内の任意のノードがホストできます。GNS構成のみがグローバルです。
- 標準のDNSポート53でリスニングするアドレス
- サービスを受けるドメインの名前
SCANおよびローカル・リスナー: クライアントが接続リクエストを送信すると、SCAN IPアドレスおよびSCANポートでリスニングしているSCANリスナーがクライアントのかわりに接続されます。クラスタ上のすべてのサービスがSCANリスナーに登録されているため、SCANリスナーは、現在サービスを提供している最も負荷が低いノードのローカル・リスナー・アドレスを使用して応答します。最終的にクライアントは、サービスが提供されているノード上のリスナーを介してサービスへの接続を確立します。これらすべての動作はクライアントに対して透過的に行われ、クライアント側での明示的な構成は必要ありません。インストール時に、リスナーがSCAN IPアドレスのノード上で作成されます。Oracle Net Servicesは、サービスを提供している最も負荷が低いインスタンスに、アプリケーションの要求をルーティングします。SCANアドレスはクラスタ内のノード・アドレスではなくクラスタに解決されるため、SCANアドレス構成に影響を与えることなく、クラスタでノードを追加または削除できます。