High Availabilityレプリカの作成
アクティブ/パッシブ設定では、レプリカアプライアンスはプライマリアプライアンスの冗長コピーです。 プライマリアプライアンスに障害が起こると、High Availabilityモードではレプリカがプライマリアプライアンスとして動作し、サービスの中断を最小限にできます。
このガイドの内容
High Availabilityレプリカの作成
-
新しい GitHub Enterprise Server アプライアンスを希望するプラットフォームにセットアップします。 レプリカアプライアンスのCPU、RAM、ストレージ設定は、プライマリアプライアンスと同じにするべきです。 レプリカアプライアンスは、独立した環境にインストールすることをお勧めします。 下位層のハードウェア、ソフトウェア、ネットワークコンポーネントは、プライマリアプライアンスのそれらとは分離されているべきです。 クラウドプロバイダを利用している場合には、別個のリージョンもしくはゾーンを使ってください。 詳細は「"GitHub Enterprise Server インスタンスをセットアップする」を参照してください。
-
ブラウザで新しいレプリカアプライアンスのIPアドレスにアクセスして、所有するGitHub Enterpriseのライセンスをアップロードしてください。
-
プライマリアプライアンス上のパスワードと一致する管理者パスワードを設定して続行します。
-
Configure as Replica(レプリカとして設定)をクリックしてください。
-
"Add new SSH key(新しいSSH鍵の追加)"の下でSSH鍵を入力してください。
-
Add key(鍵の追加)をクリックし、続いてContinue(続ける)をクリックしてください。
-
SSHを使ってレプリカアプライアンスのIPアドレスに接続してください。
$ ssh -p 122 admin@REPLICA IP
-
To generate a key pair for replication, use the
ghe-repl-setup
command with the primary appliance's IP address and copy the public key that it returns.$ ghe-repl-setup PRIMARY IP
-
To add the public key to the list of authorized keys on the primary appliance, browse to
https://PRIMARY-HOSTNAME/setup/settings
and add the key you copied from the replica to the list. -
To verify the connection to the primary and enable replica mode for the new replica, run
ghe-repl-setup
again.$ ghe-repl-setup PRIMARY IP
-
データストアのレプリケーションを開始するには、
ghe-repl-start
コマンドを使ってください。$ ghe-repl-start
**注意:** `ghe-repl-start`を使うとプライマリサーバーは短期間利用できなくなり、その間ユーザにはinternal server errorが返されます。 もっと親切なメッセージを提供するには、`ghe-repl-start`をレプリカノードで実行する前にプライマリノード上で`ghe-maintenance -s`を実行し、アプライアンスをメンテナンスモードにしてください。 レプリケーションを開始したら、`ghe-maintenance -u`でメンテナンスモードを無効化してください。 -
To verify the status of each datastore's replication channel, use the
ghe-repl-status
command.$ ghe-repl-status
Geo-replicationレプリカの作成
This example configuration uses a primary and two replicas, which are located in three different geographic regions. 3 つのノードは別のネットワークに配置できますが、すべてのノードは他のすべてのノードから到達可能である必要があります。 最低限、必要な管理ポートは他のすべてのノードに対して開かれている必要があります。 For more information about the port requirements, see "Network Ports."
-
Create the first replica the same way you would for a standard two node configuration by running
ghe-repl-setup
on the first replica.(replica1)$ ghe-repl-setup PRIMARY IP(replica1)$ ghe-repl-start
-
Create a second replica and use the
ghe-repl-setup --add
command. The--add
flag prevents it from overwriting the existing replication configuration and adds the new replica to the configuration.(replica2)$ ghe-repl-setup --add PRIMARY IP(replica2)$ ghe-repl-start
-
By default, replicas are configured to the same datacenter. レプリカを別のデータセンターに設定するには、datacenter オプションに異なる値を設定します。 具体的な値は、それらが互いに異なる限り、どのようなものでもかまいません。 Run the
ghe-repl-node
command on each node and specify the datacenter.On the primary:
(primary)$ ghe-repl-node --datacenter [PRIMARY DC NAME]
On the first replica:
(replica1)$ ghe-repl-node --datacenter [FIRST REPLICA DC NAME]
On the second replica:
(replica2)$ ghe-repl-node --datacenter [SECOND REPLICA DC NAME]
Tip: You can set the
--datacenter
and--active
options at the same time. -
アクティブなレプリカノードは、アプライアンスデータのコピーを保存し、エンドユーザーのリクエストに応じます。 アクティブではないノードは、アプライアンスデータのコピーを保存しますが、エンドユーザーのリクエストに応じることはできません。 Enable active mode using the
--active
flag or inactive mode using the--inactive
flag.On the first replica:
(replica1)$ ghe-repl-node --active
On the second replica:
(replica2)$ ghe-repl-node --active
-
To apply the configuration, use the
ghe-config-apply
command on the primary.(primary)$ ghe-config-apply
Geo-replicationのためのDNSの設定
Configure Geo DNS using the IP addresses of the primary and replica nodes. You can also create a DNS CNAME for the primary node (e.g. primary.github.example.com
) to access the primary node via SSH or to back it up via backup-utils
.
For testing, you can add entries to the local workstation's hosts
file (for example, /etc/hosts
). These example entries will resolve requests for HOSTNAME
to replica2
. 別の行をコメントアウトすることで、特定のホストをターゲットにすることができます。
# <primary IP> <em>HOSTNAME</em>
# <replica1 IP> <em>HOSTNAME</em>
<replica2 IP> <em>HOSTNAME</em>