Red Hat Training

A Red Hat training course is available for Red Hat JBoss Enterprise Application Platform

10.10.2. ロールアウト計画を使用した操作

構造は、rollout-plan 内の operation です。
{
"operation" => "write-core-threads",
    "address" => [
        ("profile" => "production"),
        ("subsystem" => "threads"),
        ("bounded-queue-thread-pool" => "pool1")
    ],
    "count" => 0,
    "per-cpu" => 20,
    "operation-headers" => {
        "rollout-plan" => {
            "in-series" => [
                {
                    "concurrent-groups" => {
                        "groupA" => {
                            "rolling-to-servers" => true,
                            "max-failure-percentage" => 20
                        },
                        "groupB" => undefined
                    }
                },
                {
                   "server-group" => {
                        "groupC" => {
                            "rolling-to-servers" => false,
                            "max-failed-servers" => 1
                        }
                    }
                },
                {
                    "concurrent-groups" => {
                        "groupD" => {
                            "rolling-to-servers" => true,
                            "max-failure-percentage" => 20
                        },
                        "groupE" => undefined
                    }
                }
            ],
            "rollback-across-groups" => true
        }
    }
}
rollout-plan は、operation-headers 構造内で入れ子になっています。構造のルートノードは、2 つの子を許可します。
  • in-series - シリーズで実行するステップの一覧。各ステップは次のステップが実行される前に完了します。各ステップには、1 つ以上のサーバーグループのサーバーへの操作の適用が含まれます。リストの各要素の詳細は、以下を参照してください。
  • rollback-across-groups - 1 つのサーバーグループのすべてのサーバーで操作をロールバックする必要があるかどうかを示すブール値。すべてのサーバーグループでロールバックをトリガーします。これは任意の設定で、デフォルトは false に設定されます。
in-series ノード下のリストの各要素には、以下の構造の 1 つまたは他の構造が必要です。
  • concurrent-groups - サーバーグループに操作を適用する方法を制御するサーバーグループ名のマップ。マップの各サーバーグループに対して、操作を同時に適用することができます。server-group ポリシー設定の詳細は、以下を参照してください。
  • server-group - サーバーグループ名のキー/値から、そのサーバーグループに操作を適用する方法を制御するポリシーへの単一のキー/値マッピング。ポリシー設定の詳細は、以下を参照してください。(注意: 単一のエントリーを持つ、これと「concurrent-groups」マップとの間には、プラン実行の違いはありません。)
サーバーグループのサーバーに操作がどのように適用されるかを制御するポリシーには、以下の要素があります(それぞれは任意です)。
  • rolling-to-servers - true に設定すると、操作は連続してグループ内の各サーバーに適用されます。false を指定した場合、操作はグループのサーバーに同時に適用されます。
  • max-failed-servers - グループのすべてのサーバーで元に戻す前に、操作の適用に失敗したサーバーの最大数を取る整数。指定がない場合のデフォルト値はゼロです。つまり、サーバーがグループ全体でロールバックをトリガーします。
  • max-failure-percentage - 0 から 100 までの整数。グループ内のすべてのサーバーで元に戻す前に、操作の適用に失敗したサーバーの合計数の最大パーセンテージを取ります。指定がない場合のデフォルト値はゼロです。つまり、サーバーがグループ全体でロールバックをトリガーします。
max-failed-servers と max-failure-percentage の両方がゼロ以外の値に設定された場合、max-failure-percentage が優先されます。
上記の(簡単な)の例を見ると、ドメインのサーバーへの操作の適用は 3 つのフェーズで実行されます。あるサーバーグループのポリシーによってサーバーグループ全体で操作のロールバックが引き起こされると、他のサーバーグループもすべてロールバックされます。3 つのフェーズは次のとおりです。
  1. サーバーグループ groupA と groupB には同時に操作が適用されます。groupA のサーバーには操作が順次適用され、groupB のすべてのサーバーは操作を同時に処理します。groupA で操作の適用に失敗したサーバーが 20 % を超えると、グループ全体でロールバックが実行されます。groupB で操作を適用できなかったサーバーがあると、そのグループ全体でロールバックが実行されます。
  2. groupA および groupB のすべてのサーバーが完了すると、groupC のサーバーに操作が適用されます。これらのサーバーは操作を同時に処理します。groupC で操作を適用できなかったサーバーが複数ある場合は、グループ全体でロールバックが実行されます。
  3. groupC のすべてのサーバーが完了すると、サーバーグループ groupD と groupE の操作は同時に適用されます。groupD のサーバーには操作が順次適用され、groupE のすべてのサーバーは操作を同時に処理します。groupD で操作の適用に失敗したサーバーが 20 % を超えると、グループ全体でロールバックが実行されます。groupE で操作を適用できなかったサーバーがあると、そのグループ全体でロールバックが実行されます。

デフォルトのロールアウト計画

複数のサーバーに影響する操作はすべてロールアウト計画を使用して実行されます。ただし、実際には操作リクエストでロールアウト計画を指定する必要はありません。rollout-plan が指定されていない場合、デフォルトのプランが生成されます。プランには以下の特徴があります。

  • ハイレベルなフェーズは 1 つのみです。操作に影響するすべてのサーバーグループには同時に操作が適用されます。
  • 各サーバーグループ内では、操作がすべてのサーバーに同時に適用されます。
  • サーバーグループのいずれかのサーバーに操作を適用できないと、グループ全体でロールバックが実行されます。
  • あるサーバーグループに操作を適用できないと、他のすべてのサーバーグループでロールバックが実行されます。