GitHub Enterprise Server クラスターのワークロードバランスについて
クラスター構成の GitHub Enterprise Server インスタンスは、ノードのロールに従って各タスクをノードに割り当てます。 この割り当ては割り当てと呼ばれます。
ハードウェアまたはソフトウェアの障害が原因でクラスター ノードに到達できない場合、インスタンスは新しい割り当てを作成して、異常なノードからワークロードを処理できる別のノードにジョブを分散します。 状況によっては、この分散が自動的に行われず、1 つのノードで予想よりも多くのジョブが実行される場合があります。
既存の割り当ての状態を表示したり、インスタンスに割り当てのバランスを強制したりする ghe-cluster-balance
ユーティリティを使用して、割り当てを管理できます。 たとえば、クラスターに新しいノードを追加した後で、割り当てのバランスを取る必要があります。 必要に応じて、定期的な分散をスケジュールできます。
管理シェルを使用して、クラスター内の任意のノードから次のコマンドを実行できます。 詳細については、「管理シェル (SSH) にアクセスする」を参照してください。
クラスター ジョブの分散の確認
ハードウェア障害などの場合には、割り当てを管理する基盤となるソフトウェアがタスクを異常なノードから正常なノードに移行します。 異常なノードが復旧した場合、タスクは復旧されたノードに割り当てられたままであり、負荷が不均衡になる可能性があります。 割り当てが不均衡で、追加のノードが失敗した場合、ジョブエラーのリスクが高くなる可能性があります。 割り当ての分散は、ghe-cluster-balance status
ユーティリティを使用して確認できます。
-
次のコマンドを実行して、割り当てのリストを表示します。 このユーティリティでは、正常な割り当てが緑色で表示されます。 ジョブが適切に分散されていない場合、割り当ての数が赤色で表示されます。
Shell ghe-cluster-balance status
ghe-cluster-balance status
-
ジョブが適切に分散されていない場合は、次のコマンドを実行して割り当てを調べます。 JOB を 1 つのジョブまたはジョブのコンマ区切りのリストに置き換えます。
Shell ghe-cluster-balance status -j JOB
ghe-cluster-balance status -j JOB
たとえば、インスタンスの HTTP サーバーと承認サービスの割り当ての状態を確認するには、
ghe-cluster-balance status -j github-unicorn,authzd
を実行します。
割り当ての再調整
クラスターのノード間で不均衡なジョブを特定したら、ghe-cluster-balance rebalance
ユーティリティを使用して割り当てを再調整できます。 このユーティリティは、既存のジョブの分散をチェックします。 ジョブが不均衡な場合は、ジョブが表示され、続行するように求められます。 続行すると、ジョブを再配布するための新しい割り当てがユーティリティによって作成されます。
-
ドライ ランを実行し、変更を加えずに再調整の結果を確認するには、次のコマンドを実行します。 JOB を 1 つのジョブまたはジョブのコンマ区切りのリストに置き換えます。
Shell ghe-cluster-balance rebalance --dry-run -j JOB
ghe-cluster-balance rebalance --dry-run -j JOB
たとえば、インスタンスの HTTP サーバーと承認サービスに対して再調整ジョブのドライ ランを実行するには、
ghe-cluster-balance rebalance --dry-run -j github-unicorn,authzd
を実行します。 -
再調整するには、次のコマンドを実行します。 JOB を 1 つのジョブまたはジョブのコンマ区切りのリストに置き換えます。
Shell ghe-cluster-balance rebalance -j JOB
ghe-cluster-balance rebalance -j JOB
割り当ての再調整のスケジュール設定
お使いの GitHub Enterprise Server インスタンス の構成値を設定して適用することで、クラスター上のジョブの再調整をスケジュールできます。
注: 現時点では、HTTP サーバー github-unicorn
のジョブの再割り当てのみをスケジュールできます。
-
ジョブの時間単位の自動分散を構成するには、次のコマンドを実行します。
Shell ghe-config app.cluster-rebalance.enabled true
ghe-config app.cluster-rebalance.enabled true
-
必要に応じて、cron expression を定義することで、デフォルトのスケジュールをオーバーライドできます。 たとえば、次のコマンドを実行して、毎日、ジョブのバランスを取ります。
Shell ghe-config app.cluster-rebalance.schedule '0 0 * * *'
ghe-config app.cluster-rebalance.schedule '0 0 * * *'
-
構成を適用するには、次のコマンドを実行します。
注: 構成の実行中に、お使いの GitHub Enterprise Server インスタンス 上のサービスが再起動する可能性があり、これによりユーザーに短時間のダウンタイムが発生する場合があります。
Shell ghe-config-apply
ghe-config-apply
-
設定の実行が完了するのを待ってください。