Creating a high availability replica

In an active/passive configuration, the replica appliance is a redundant copy of the primary appliance. If the primary appliance fails, high availability mode allows the replica to act as the primary appliance, allowing minimal service disruption.

注意: 允许 GitHub Enterprise Server 使用最多 8 种高可用性副本(被动和主动/地理副本)。

Creating a high availability replica

  1. Set up a new GitHub Enterprise Server appliance on your desired platform. The replica appliance should mirror the primary appliance's CPU, RAM, and storage settings. We recommend that you install the replica appliance in an independent environment. The underlying hardware, software, and network components should be isolated from those of the primary appliance. If you are a using a cloud provider, use a separate region or zone. For more information, see "Setting up a GitHub Enterprise Server instance".

  2. Ensure that both the primary appliance and the new replica appliance can communicate with each other over ports 122/TCP and 1194/UDP. For more information, see "Network ports."

  3. In a browser, navigate to the new replica appliance's IP address and upload your GitHub Enterprise license.

  4. 设置与主设备密码匹配的管理员密码,然后继续。

  5. 单击 Configure as Replica包含用于将新实例配置为副本的链接的安装选项

  6. 在“Add new SSH key”下,输入 SSH 密钥。 添加 SSH 密钥

  7. 单击 Add key(添加密钥)

  8. Connect to the replica appliance's IP address using SSH.

    $ ssh -p 122 admin@REPLICA IP
  9. 要为副本生成密钥对,请使用包含主设备 IP 地址的 ghe-repl-setup 命令,并复制该命令返回的公钥。

    $ ghe-repl-setup PRIMARY IP
  10. 要将公钥添加到主设备上的授权密钥列表,请浏览到 https://PRIMARY-HOSTNAME/setup/settings,然后将您从副本复制的密钥添加到列表中。

  11. 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
  12. 要开始复制数据存储,请使用 ghe-repl-start 命令。

    $ ghe-repl-start

    警告: ghe-repl-start 会导致主要服务器短暂中断,期间用户可能会看到内部服务器错误。 为提供更简便的消息,请在副本节点上运行 ghe-repl-start 之前,先在主要节点上运行 ghe-maintenance -s,使副本置于维护模式。 在复制开始后,使用 ghe-maintenance -u 禁用维护模式。 Git replication will not progress while the primary node is in maintenance mode.

  13. 要验证各个数据存储复制通道的状态,请使用 ghe-repl-status 命令。

    $ ghe-repl-status

Creating geo-replication replicas

This example configuration uses a primary and two replicas, which are located in three different geographic regions. While the three nodes can be in different networks, all nodes are required to be reachable from all the other nodes. At the minimum, the required administrative ports should be open to all the other nodes. For more information about the port requirements, see "Network Ports."

  1. 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
  2. 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
  3. By default, replicas are configured to the same datacenter, and will now attempt to seed from an existing node in the same datacenter. Configure the replicas for different datacenters by setting a different value for the datacenter option. The specific values can be anything you would like as long as they are different from each other. 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.

  4. An active replica node will store copies of the appliance data and service end user requests. An inactive node will store copies of the appliance data but will be unable to service end user requests. 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
  5. To apply the configuration, use the ghe-config-apply command on the primary.

    (primary)$ ghe-config-apply

Configuring DNS for geo-replication

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. You can target specific hosts by commenting out different lines.

# <primary IP>     <em>HOSTNAME</em>
# <replica1 IP>    <em>HOSTNAME</em>
<replica2 IP>    <em>HOSTNAME</em>

Further reading

此文档对您有帮助吗?

隐私政策

帮助我们创建出色的文档!

所有 GitHub 文档都是开源的。看到错误或不清楚的内容了吗?提交拉取请求。

做出贡献

或者, 了解如何参与。