配置高可用性时,会自动设置将所有数据存储(Git 仓库、MySQL、Redis 和 Elasticsearch)单向、异步地从主设备复制到副本。 还会复制大多数 GitHub Enterprise Server 配置设置,包括 管理控制台 密码。 有关详细信息,请参阅“从 Web UI 管理实例”。
GitHub Enterprise Server 支持主动/被动配置,在这些配置下,副本作为备用设备运行,并且数据库服务在复制模式下运行,但应用程序服务将停止。
建立复制后,副本设备上将不再可访问 管理控制台 。 如果在端口 8443 上导航到副本的 IP 地址或主机名,您将看到“Server in replication mode(服务器处于复制模式)”消息,表示设备当前已配置为副本。
副本设备确实接受 Git 客户端请求,并且将这些请求转发到活动设备。
Note
允许 GitHub Enterprise Server 使用最多 8 种高可用性副本(被动和主动/异地副本,以及存储库缓存实例)。
有针对性的故障场景
使用高可用性配置防护以下问题:
- 软件崩溃,操作系统失败或不可恢复的应用程序所致。
- 硬件故障,包括存储硬件、CPU、RAM、网络接口等。
- 虚拟化主机系统故障,包括 AWS、Azure 或 GCP 上未计划和计划性维护事件。
- 逻辑或物理服务网络(如果故障转移设备在不受故障影响的单独网络上)。
高可用性配置不适用于:
- 横向扩展。虽然可以使用异地复制将流量分布在不同地理位置,但写入性能受限于主设备的速度和可用性。 有关详细信息,请参阅“关于 Geo-replication”。
- CI/CD 负载。 如果您有大量在地理位置上远离主实例的 CI 客户端,则配置仓库缓存可能会使您受益匪浅。 有关详细信息,请参阅“关于存储库缓存”。
- 备份主设备。 高可用性副本不会替代灾难恢复计划中的非现场备份。 某些形式的数据损坏或数据丢失可能会立即从主设备复制到副本。 为确保安全回滚到稳定的过去状态,必须通过历史快照执行定期备份。
- 零停机时间升级。 为避免受控升级场景下出现数据丢失和裂脑的状况,请先将主设备置于维护模式并等待所有写入操作完成,然后再对副本进行升级。
网络流量故障转移策略
在故障转移期间,您必须单独配置和管理从主设备到副本的网络流量的重定向。
DNS 故障转移
对于 DNS 故障转移,请使用 DNS 记录中指向主 GitHub Enterprise Server 设备的短 TTL 值。 建议的 TTL 值范围为 60 秒到 5 分钟。
在故障转移期间,必须将主设备置于维护模式,并将其 DNS 记录重定向到副本的 IP 地址。 将流量从主设备重新定向到副本所需的时间将取决于 TTL 配置以及更新 DNS 记录所需的时间。
如果您要使用 Geo-replication,则必须配置 Geo DNS,将流量定向到距离最近的副本。 有关详细信息,请参阅“关于 Geo-replication”。
负载均衡器
负载均衡器设计使用网络设备将 Git 和 HTTP 流量引导至各个 GitHub Enterprise Server 设备。 您可以使用负载均衡器限制引导至设备的流量以确保安全,或者在没有 DNS 记录更改的情况下根据需要重定向流量。 我们强烈建议使用支持 PROXY 协议的基于 TCP 负载均衡器。 对 GitHub Enterprise Server 主机名的 DNS 查询应解析为负载均衡器。 我们建议您启用子域隔离。 如果启用了子域隔离,另一个通配符记录 *.HOSTNAME
也应解析到负载均衡器。 有关详细信息,请参阅“启用子域隔离”。
在故障转移期间,您必须将主设备置于维护模式。 您可以将负载均衡器配置为自动检测副本何时已升级为主设备,或者可能需要手动更改配置。 您必须先将副本手动升级为主设备,随后副本才能对用户流量作出响应。 有关详细信息,请参阅“结合使用 GitHub Enterprise Server 和负载均衡器”。
可通过检查 https://HOSTNAME/status
URL 返回的状态代码来监视 GitHub Enterprise Server 的可用性。 可提供用户流量的设备将返回状态代码 200
(正常)。 由于以下几个原因,设备可能会对此 URL 和其他 Web 或 API 请求返回 503
(服务不可用):
- 设备是被动副本,例如双节点高可用性配置中的副本。
- 设备处于维护模式。
- 设备属于地理副本配置,但为非活动的副本。
也可使用以下网址的“复制”概述:
https://HOSTNAME/setup/replication
用于复制管理的实用程序
对高可用性配置中的实例具有管理 SSH 访问权限的人员,可以使用命令行实用工具来管理复制。 有关详细信息,请参阅“命令行实用程序”。