Skip to main content

クラスター ワークロードの再調整

GitHub Enterprise Server クラスターで、クラスターのノード上のワークロードのジョブ割り当てを均等に分散させることができます。

この機能を使用できるユーザーについて

People with administrative SSH access to a GitHub Enterprise Server instance can rebalance cluster workloads on the instance.

GitHub はクラスタリングの適格性を決定し、インスタンスのライセンスの構成を有効にする必要があります。 クラスタリングには、慎重な計画と追加の管理オーバーヘッドが必要です。 詳しくは、「クラスタリングについて」を参照してください。

GitHub Enterprise Server クラスターのワークロードバランスについて

クラスター構成の GitHub Enterprise Server インスタンスは、ノードのロールに従って各タスクをノードに割り当てます。 この割り当ては割り当てと呼ばれます。

ハードウェアまたはソフトウェアの障害が原因でクラスター ノードに到達できない場合、インスタンスは新しい割り当てを作成して、異常なノードからワークロードを処理できる別のノードにジョブを分散します。 状況によっては、この分散が自動的に行われず、1 つのノードで予想よりも多くのジョブが実行される場合があります。

既存の割り当ての状態を表示したり、インスタンスに割り当てのバランスを強制したりする ghe-cluster-balance ユーティリティを使用して、割り当てを管理できます。 たとえば、クラスターに新しいノードを追加した後で、割り当てのバランスを取る必要があります。 必要に応じて、定期的な分散をスケジュールできます。

管理シェルを使用して、クラスター内の任意のノードから次のコマンドを実行できます。 詳細については、「管理シェル (SSH) にアクセスする」を参照してください。

クラスター ジョブの分散の確認

ハードウェア障害などの場合には、割り当てを管理する基盤となるソフトウェアがタスクを異常なノードから正常なノードに移行します。 異常なノードが復旧した場合、タスクは復旧されたノードに割り当てられたままであり、負荷が不均衡になる可能性があります。 割り当てが不均衡で、追加のノードが失敗した場合、ジョブエラーのリスクが高くなる可能性があります。 割り当ての分散は、ghe-cluster-balance status ユーティリティを使用して確認できます。

  1. 次のコマンドを実行して、割り当てのリストを表示します。 このユーティリティでは、正常な割り当てが緑色で表示されます。 ジョブが適切に分散されていない場合、割り当ての数が赤色で表示されます。

    Shell
    ghe-cluster-balance status
    
  2. ジョブが適切に分散されていない場合は、次のコマンドを実行して割り当てを調べます。 JOB を 1 つのジョブまたはジョブのコンマ区切りのリストに置き換えます。

    Shell
     ghe-cluster-balance status -j JOB
    

    たとえば、インスタンスの HTTP サーバーと承認サービスの割り当ての状態を確認するには、ghe-cluster-balance status -j github-unicorn,authzd を実行します。

割り当ての再調整

クラスターのノード間で不均衡なジョブを特定したら、ghe-cluster-balance rebalance ユーティリティを使用して割り当てを再調整できます。 このユーティリティは、既存のジョブの分散をチェックします。 ジョブが不均衡な場合は、ジョブが表示され、続行するように求められます。 続行すると、ジョブを再配布するための新しい割り当てがユーティリティによって作成されます。

  1. ドライ ランを実行し、変更を加えずに再調整の結果を確認するには、次のコマンドを実行します。 JOB を 1 つのジョブまたはジョブのコンマ区切りのリストに置き換えます。

    Shell
    ghe-cluster-balance rebalance --dry-run -j JOB
    

    たとえば、インスタンスの HTTP サーバーと承認サービスに対して再調整ジョブのドライ ランを実行するには、ghe-cluster-balance rebalance --dry-run -j github-unicorn,authzd を実行します。

  2. 再調整するには、次のコマンドを実行します。 JOB を 1 つのジョブまたはジョブのコンマ区切りのリストに置き換えます。

    Shell
    ghe-cluster-balance rebalance -j JOB
    

割り当ての再調整のスケジュール設定

お使いの GitHub Enterprise Server インスタンス の構成値を設定して適用することで、クラスター上のジョブの再調整をスケジュールできます。

注: 現時点では、HTTP サーバー github-unicorn のジョブの再割り当てのみをスケジュールできます。

  1. ジョブの時間単位の自動分散を構成するには、次のコマンドを実行します。

    Shell
    ghe-config app.cluster-rebalance.enabled true
    
  2. 必要に応じて、cron expression を定義することで、デフォルトのスケジュールをオーバーライドできます。 たとえば、次のコマンドを実行して、毎日、ジョブのバランスを取ります。

    Shell
    ghe-config app.cluster-rebalance.schedule '0 0 * * *'
    
  3. 構成を適用するには、次のコマンドを実行します。

    : 構成の実行中に、お使いの GitHub Enterprise Server インスタンス 上のサービスが再起動する可能性があり、これによりユーザーに短時間のダウンタイムが発生する場合があります。

    Shell
    ghe-config-apply
    
  4. 設定の実行が完了するのを待ってください。

参考資料