5 サーバーIDとデプロイメントID

スキームを使用してMAのサーバーおよびデプロイメントを一意に識別する必要があります。

共通名による環境アクセス内に複数のMAデプロイメントが存在するCommon-Named Multiple Server and Deployment構成では、各サーバーとデプロイメントは一意に識別可能である必要があります。このIDにより、調整サービス、ピア・サーバー、オーケストレーション・エコシステムでは、必要に応じて1つのデプロイメントとサーバーを別のデプロイメントから区別できます。

トピック:

汎用一意IDスキームの使用

汎用一意IDは、グローバル一意ID (UUID/GUID)と同義です。

これらのIDは、128ビット長のRFC4122である識別子の作成と解釈のための標準化された形式を提供します。これは、領域と時間にわたる一意性を保証できます。いくつかのオペレーティング・システムは、次のようなUUIDを生成するメカニズムを提供します。

$ cat /proc/sys/kernel/random/uuid
$ uuidgen

UUIDを使用すると、個別のデプロイメントおよびデプロイメント内の特定のサーバーであっても識別できます。UUIDの主要な問題は、一度生成されると再生成できないことです。UUID値が失われた場合、それを確定的に再作成する方法はありません。これは、UUIDが分散して使用され、特定のデプロイメントへの参照として保持されている場合に問題となります。そのデプロイメントが最初に生成されたUUIDの値を失った場合、UUIDを再生成する方法はありません。UUIDを保護する場合には注意が必要です。

確定的に計算された一意のIDスキームの使用

デプロイメントのIDは、確定的に計算され、ローカル・スコープ内で一意にできます。

これにより、ハードウェアとファイル・システムのシグネチャの組合せに基づいて一意のIDが作成されます。たとえば、計算されたIDは、ネットワーク・インタフェースのMACアドレスと、デプロイメントを構成する実際の絶対ファイル・システム・パスに基づいて生成された可能性があります。ファイル・システム内のデプロイメントの再配置は、ネットワーク・インタフェースの変更と同様に、IDの確定的再生成を無効にします。

明示的ネーミング・スキームの使用

明示的な名前を使用して、管理者に対して保証される一意性の問題を避けることができます。

これは、IDの再作成を伴う他のスキームの潜在的な短所に対処しますが、このスキームは、多くのデプロイメント数がある大規模な組織にはお薦めしません。

サーバーIDとデプロイメントIDの作成

serverIDdeploymentIDがサーバーとデプロイメントのそれぞれに必要です。デプロイメントおよびサーバーのUUIDは、定義しないとデフォルトで生成されます。

一般に、これらの値は一度割り当てられると変更されません。これらの値は、その適用が要求または操作のコンテキストおよび要件に依存しているため、直接的な使用も制限されています。

serverID

各サーバーは、存在しないかnullのサーバーIDが見つかると、最初の起動時に一意のIDを生成します。サーバーIDは、3文字のUUIDが長い場合に名前またはタグとして使用できる短い一意のラベルを生成するために使用されます。serverIDと短縮名の両方がグローバルに一意であることが期待されます。デプロイメントの前に置かずにサーバーを識別するために使用できます。serverIDは各サーバーのローカル構成コンテキストに保持され、所有サーバーによってのみアクセス可能です。

serverIDを使用して、特定の要求またはアクションのターゲットをサーバーのみに制限できます。たとえば、サーバーで生成されたペイロードにserverIDを含めることによって、サーバーは、提示されたserverIDを保持されているserverIDと比較して自身がペイロードの作成元であったことを検証できます。

"config" : {
     "serverID": "96bc6cab-abb8-4a05-aeff-6d0d385262af"
     "serverIDShortLabel": "lrxsq6u4SgWu/20NOFJirw"
}

deploymentID

デプロイメント内で最初に起動するサーバーは、存在しないかnullのデプロイメントIDが見つかると、一意のIDを生成します。deploymentIDは包含IDであり、関連するサーバーのグループを識別するために使用されます。deploymentIDはデプロイメントのグローバル構成コンテキストに保持され、そのデプロイメント内のすべてのサーバーからアクセスできます。

deploymentIDは、サーバーのリクエストまたはアクションをデプロイメント内のサーバーのみに制限するために使用できます。たとえば、UDP/UDTデータにserverIDの短いラベル・バージョンを含めることで、サーバーは独自のデプロイメント内のサーバーから発信された情報のみをフィルタ処理して適格と認定できます。

"global": {
     "deploymentID": "f1df4a18-d0a8-4ba1-9ad0-18da9458baef"
}

affiliateDeploymentIDs

アフィリエイト・デプロイメントは、特定の情報やコンテキストを調整または連携するデプロイメントです。affiliateDeploymentIDs値は、最初はnull (空)のJSON配列型です。デプロイメントでは、他のデプロイメントに適用するか他のデプロイメントで有効である必要があるアクションや操作を定義するため、アフィリエイト・デプロイメントのdeploymentIDsaffiliateDeploymentIDsのJSON配列に追加されます。特定の動作またはアクションは、提示されたdeploymentIDsaffiliateDeploymentIDsのリストに照らして適格と認定し、外部デプロイメントへのアクセスまたは操作を付与できます。

たとえば、認可Cookieには、仕様の一部としてdeploymentIDsが含まれています。認可クッキーが、発信元のデプロイメントのdeploymentIDsがそのaffiliateDeploymentIDsリストにリストされている外部デプロイメントに提示されている場合、認可クッキーは受信側サーバーから発信されていないものとして除外されるのではなく、適格と認定されます。

"global": {
     "affiliateDeploymentIDs": [ "deafa2f6-6ee7-48b1-862a-97a9b6d5b9df" ] 
}

ブートストラップ構成ファイルまたはコマンドライン・オーバーライドのいずれかを使用してグローバル構成を更新できます。たとえば、次のようになります。

$ bin/adminsrvr '{"global": { "affiliateDeploymentIDs": ["deafa2f6-6ee7-48b1-862a-97a9b6d5b9df"]}}'