Skip to main content

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

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

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

関数ノードの入れ替え

  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. cluster.conf に `git-server = true` が設定されているノードをオフラインにする場合は、ノードを退避します。 詳細については、「[クラスター ノードの退避](/enterprise/admin/clustering/evacuating-a-cluster-node)」を参照してください。 1. 障害が発生したノードをオフラインとしてマークするには、`offline = true` というテキストを含むように[クラスター構成ファイル](/enterprise/admin/guides/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. cluster.conf に `git-server = true` が設定されているノードをオフラインにする場合は、ノードを退避します。 詳細については、「[クラスター ノードの退避](/enterprise/admin/clustering/evacuating-a-cluster-node)」を参照してください。