注: GitHub Enterprise Server では、最大で 8 つの高可用性レプリカ (パッシブとアクティブ/Go のいずれでも) が利用できます。
High Availabilityレプリカの作成
-
新しい GitHub Enterprise Server アプライアンスを希望するプラットフォー� にセットアップします。 レプリカアプライアンスのCPU、RAM、ストレージ設定は、プライマリアプライアンスと同じにするべきです。 レプリカアプライアンスは、独立した環境にインストールすることをお勧めします。 下位層のハードウェア、ソフトウェア、ネットワークコンポーネントは、プライマリアプライアンスのそれらとは分離されているべきです。 クラウドプロバイダを利用している� �合には、別個のリージョンもしくはゾーンを使ってく� さい。 詳細については、「GitHub Enterprise Server インスタンスをセットアップする」を参照してく� さい。
-
新しいアプライアンスが、ポート 122/TCP と 1194/UDP 経由で、この高可用性環境の他のすべてのアプライアンスと通信できることを確認します。 詳細については、「ネットワーク ポート」を参照してく� さい。
-
ブラウザで新しいレプリカアプライアンスのIPアドレスにアクセスして、所有するGitHub Enterpriseのライセンスをアップロードしてく� さい。
-
プライマリアプライアンス上のパスワードと一致する管理者パスワードを設定して続行します。
-
[レプリカとして構成] をクリックします。
-
"Add new SSH key(新しいSSH鍵の追� )"の下でSSH鍵を入力してく� さい。
-
[キーの追� ] をクリックします。
-
SSHを使ってレプリカアプライアンスのIPアドレスに接続してく� さい。
$ ssh -p 122 admin@REPLICA IP
-
レプリケーション用のキーの組を生成するには、プライマリ アプライアンスの IP アドレスを指定して
ghe-repl-setup
コマンドを使用し、それが返す公開キーをコピーします。
1. プライマリ アプライアンスの承認されたキーのリストに公開キーを追� するには、`https://PRIMARY-HOSTNAME/setup/settings` を参照して、レプリカからコピーしたキーをリストに追� します。$ ghe-repl-setup PRIMARY IP
-
新しいレプリカに対して、プライマリへの接続を確認してレプリカ モードを有効にするには、
ghe-repl-setup
をもう一度実行します。$ ghe-repl-setup PRIMARY IP
-
データ ストアのレプリケーションを開始するには、
ghe-repl-start
コマンドを使います。$ ghe-repl-start
警告:
ghe-repl-start
を実行すると、プライマリ サーバーを短時間使えなくなり、その間、ユーザーには内部サーバー エラーが表示されることがあります。 もっとわかりやすいメッセージを表示するには、ghe-repl-start
をレプリカ ノードで実行する前にプライマリ ノード上でghe-maintenance -s
を実行し、アプライアンスをメンテナンス モードにします。 レプリケーションを開始したら、ghe-maintenance -u
を使ってメンテナンス モードを無効にします。 プライマリ ノードがメンテナンス モードの間、Git レプリケーションは進行しません。$ ghe-repl-status
Geo-replicationレプリカの作成
レプリカを作成する以下の例の設定では、1 つのプライマリと 2 つのレプリカを使用しており、これらは 3 つの異なる地域にあります。 3 つのノードは別のネットワークに配置できますが、すべてのノードは他のすべてのノードから到達可能である必要があります。 最低限、必要な管理ポートは他のすべてのノードに対して開かれている必要があります。 ポート要件の詳細については、「ネットワーク ポート」を参照してく� さい。
-
最初のレプリカで
ghe-repl-setup
を実行することで、標準の 2 ノード構成の� �合と同じ方法で最初のレプリカを作成します。(replica1)$ ghe-repl-setup PRIMARY IP (replica1)$ ghe-repl-start
-
2 つ目のレプリカを作成し、
ghe-repl-setup --add
コマンドを使用します。--add
フラグは、既存のレプリケーション構成を上書きするのを防ぎ、新しいレプリカを構成に追� します。(replica2)$ ghe-repl-setup --add PRIMARY IP (replica2)$ ghe-repl-start
-
デフォルトでは、レプリカは同じデータセンターに設定され、同じノードにある既存のノードからシードを試行します。 レプリカを別のデータセンターに設定するには、datacenter オプションに異なる値を設定します。 具体的な値は、それらが互いに異なる限り、どのようなものでもかまいません。 各ノードで
ghe-repl-node
コマンドを実行し、データセンターを指定します。プライマリでは以下のコマンドを実行します。
(primary)$ ghe-repl-node --datacenter [PRIMARY DC NAME]
1 番目のレプリカでは以下のコマンドを実行します。
(replica1)$ ghe-repl-node --datacenter [FIRST REPLICA DC NAME]
2 番目のレプリカでは以下のコマンドを実行します。
(replica2)$ ghe-repl-node --datacenter [SECOND REPLICA DC NAME]
ヒント:
--datacenter
および--active
オプションは同時に設定できます。 -
アクティブなレプリカノードは、アプライアンスデータのコピーを保存し、エンドユーザーのリクエストに応じます。 アクティブではないノードは、アプライアンスデータのコピーを保存しますが、エンドユーザーのリクエストに応じることはできません。
--active
フラグを使用してアクティブ モードを有効にするか、--inactive
フラグを使用して非アクティブ モードを有効にします。1 番目のレプリカでは以下のコマンドを実行します。
(replica1)$ ghe-repl-node --active
2 番目のレプリカでは以下のコマンドを実行します。
(replica2)$ ghe-repl-node --active
-
構成を適用するには、プライマリで
ghe-config-apply
コマンドを使用します。(primary)$ ghe-config-apply
Geo-replicationのためのDNSの設定
プライマリとレプリカノードの IP アドレスを使って、Geo DNS を設定します。 SSH でプライマリ ノードにアクセスしたり、backup-utils
でバックアップしたりするために、プライマリ ノード (たとえば、primary.github.example.com
) に対して DNS CNAME を作成することもできます。
テストのために、ローカル ワークステーションの hosts
ファイル (たとえば、/etc/hosts
) にエントリを追� することができます。 以下の例のエントリでは、HOSTNAME
に対する要求が replica2
に解決されることになります。 別の行をコメントアウトすることで、特定のホストをターゲットにすることができます。
# <primary IP> <em>HOSTNAME</em>
# <replica1 IP> <em>HOSTNAME</em>
<replica2 IP> <em>HOSTNAME</em>
参考資料
- "高可用性構成について"
- 「Utilities for replication management」 (レプリケーション管理のユーティリティ)
- "geo レプリケーションについて"