Skip to main content
ドキュメントへの更新が頻繁に発行されており、このページの翻訳はまだ行われている場合があります。 最新の情報については、「英語のドキュメント」を参照してください。

クラスタノードの入れ替え

GitHub Enterprise Server ノードを入れ替えるには、クラスター設定ファイル (cluster.conf) 内で対象となるノードをオフラインとしてマークし、入れ替えるノードを追加しなければなりません。 ノードに障害があった場合、あるいはパフォーマンスを高めるためにリソースの多いノードを追加する場合、この作業が必要になることがあります。

クラスター ノードの置換について

GitHub Enterprise Server のクラスター トポロジは、数万人の開発者を持つ企業に水平スケーリングを提供します。 GitHub では、単一のプライマリ ノードでリソースの枯渇が日常的に発生する場合にクラスタリングが推奨されます。 クラスタリングには、慎重な計画と追加の管理オーバーヘッドが必要です。 詳しくは、「クラスタリングについて」を参照してください。

クラスター内の機能ノードを置き換えたり、予期せず障害が発生したノードを置き換えたりすることもできます。

警告: 競合を避けるため、入れ替えるノードはそれまでにクラスターで使われていない新しいホスト名を使わなければなりません。

関数ノードの入れ替え

  1. 置き換えノードに一意のホスト名を指定し、GitHub Enterprise Server をプロビジョニングしてインストールします。 1. 管理シェルまたは DHCP を使用して、置換ノードの IP アドレスのみを構成します。 その他の設定は行わないでください。 1. 任意のノードに対して、新たにプロビジョニングされた置換ノードを追加するには、cluster.conf ファイルを修正し、障害が起きたノードを取り除き、置換ノードを追加します。 たとえば、このように変更した cluster.conf ファイルでは、ghe-data-node-3 を新しくプロビジョニングされた ghe-replacement-data-node-3 ノードで置換します。

    [cluster "ghe-replacement-data-node-3"]
      hostname = ghe-replacement-data-node-3
      ipv4 = 192.168.0.7
      # ipv6 = fd12:3456:789a:1::7
      git-server = true
      pages-server = true
      mysql-server = true
      elasticsearch-server = true
      redis-server = true
      memcache-server = true
      metrics-server = true
      storage-server = true
    
    1. 変更された `cluster.conf` があるノードの管理シェルから、`ghe-cluster-config-init` を実行します。 これで、クラスタに新たに追加されたノードが初期化されます。 1. 同じノードから、`ghe-cluster-config-apply` を実行します。 これにより、構成ファイルが検証され、クラスター内の各ノードにコピーされ、変更された `cluster.conf` ファイルに従って各ノードが設定されます。 1. `git-server`、`pages-server`、`storage-server` などのデータ サービスを提供するノードをオフラインにしている場合は、ノードを退避します。 詳しくは、「[AUTOTITLE](/admin/enterprise-management/configuring-clustering/evacuating-a-cluster-node-running-data-services)」を参照してください。 1. 障害が発生したノードをオフラインとしてマークするには、`offline = true` というテキストを含むように[クラスター構成ファイル](/admin/enterprise-management/configuring-clustering/initializing-the-cluster#about-the-cluster-configuration-file) (`cluster.conf`) の関連するノードのセクションを変更します。

    たとえば、このように変更した cluster.conf では、ghe-data-node-3 ノードをオフラインとしてマークします。

      [cluster "ghe-data-node-3"]
      hostname = ghe-data-node-3
      offline = true
      ipv4 = 192.168.0.6
      # ipv6 = fd12:3456:789a:1::6
      
    1. `cluster.conf` を変更したノードの管理シェルから、`ghe-cluster-config-apply` を実行します。 これで設定ファイルが検証され、クラスタ内の各ノードにコピーされ、そのノードがオフラインとしてマークされます。 1. プライマリ MySQL または Redis ノードを置き換える場合は、`cluster.conf` で `mysql-master` または `redis-master` の値を置換ノード名に変更します。

    たとえば、この変更された cluster.conf ファイルは、プライマリ MySQL および Redis ノードとして、新しくプロビジョニングされたクラスター ノード ghe-replacement-data-node-1 を指定します。

    mysql-master = ghe-replacement-data-node-1
    redis-master = ghe-replacement-data-node-1
    

緊急時のノードの入れ替え

  1. 置き換えノードに一意のホスト名を指定し、GitHub Enterprise Server をプロビジョニングしてインストールします。 1. 管理シェルまたは DHCP を使用して、置換ノードの IP アドレスのみを構成します。 その他の設定は行わないでください。 1. 障害が発生したノードをオフラインとしてマークするには、offline = true というテキストを含むようにクラスター構成ファイル (cluster.conf) の関連するノードのセクションを変更します。

    たとえば、このように変更した cluster.conf では、ghe-data-node-3 ノードをオフラインとしてマークします。

      [cluster "ghe-data-node-3"]
      hostname = ghe-data-node-3
      offline = true
      ipv4 = 192.168.0.6
      # ipv6 = fd12:3456:789a:1::6
      
    1. `cluster.conf` を変更したノードの管理シェルから、`ghe-cluster-config-apply` を実行します。 これで設定ファイルが検証され、クラスタ内の各ノードにコピーされ、そのノードがオフラインとしてマークされます。 1. 任意のノードに対して、新たにプロビジョニングされた置換ノードを追加するには、`cluster.conf` ファイルを修正し、障害が起きたノードを取り除き、置換ノードを追加します。 たとえば、このように変更した `cluster.conf` ファイルでは、`ghe-data-node-3` を新しくプロビジョニングされた `ghe-replacement-data-node-3` ノードで置換します。
    [cluster "ghe-replacement-data-node-3"]
      hostname = ghe-replacement-data-node-3
      ipv4 = 192.168.0.7
      # ipv6 = fd12:3456:789a:1::7
      git-server = true
      pages-server = true
      mysql-server = true
      elasticsearch-server = true
      redis-server = true
      memcache-server = true
      metrics-server = true
      storage-server = true
    
    1. プライマリ MySQL または Redis ノードを置き換える場合は、`cluster.conf` で `mysql-master` または `redis-master` の値を置換ノード名に変更します。

    たとえば、この変更された cluster.conf ファイルは、プライマリ MySQL および Redis ノードとして、新しくプロビジョニングされたクラスター ノード ghe-replacement-data-node-1 を指定します。

    mysql-master = ghe-replacement-data-node-1
    redis-master = ghe-replacement-data-node-1
    
    1. 変更された `cluster.conf` があるノードの管理シェルから、`ghe-cluster-config-init` を実行します。 これで、クラスタに新たに追加されたノードが初期化されます。 1. 同じノードから、`ghe-cluster-config-apply` を実行します。 これにより、構成ファイルが検証され、クラスター内の各ノードにコピーされ、変更された `cluster.conf` ファイルに従って各ノードが設定されます。 1. `git-server`、`pages-server`、`storage-server` などのデータ サービスを提供するノードをオフラインにしている場合は、ノードを退避します。 詳しくは、「[AUTOTITLE](/admin/enterprise-management/configuring-clustering/evacuating-a-cluster-node-running-data-services)」を参照してください。