如何为 GitHub Enterprise Server 创建高可用副本并完成端口与复制配置
【免费下载链接】docsThe open-source repo for docs.github.com项目地址: https://gitcode.com/GitHub_Trending/do/docs
如果你正在运行一台 GitHub Enterprise Server 主实例,并希望为它配置一台可在主实例故障时接管服务的备机,就需要创建一台高可用(high availability)副本。完成本文操作后,会得到一组 active/passive 架构:所有主要数据存储(Git 仓库、MySQL、Redis、Elasticsearch)通过单向异步复制从主实例同步到副本,副本上运行数据库复制服务、停止应用服务,作为热备待命。以下内容基于 docs.github.com 文档仓库中的 创建高可用副本 与 高可用配置说明 整理。
准备条件
在开始之前,需要满足以下条件(均来自文档明确要求):
- 一台新的 Enterprise Server 设备(appliance),其 CPU、内存和存储配置应与主实例保持一致。文档建议将副本安装在独立环境中,底层硬件、软件和网络组件应与主实例隔离;如果使用云服务商,应使用不同的 region 或 zone。
- 主实例与副本之间网络互通,具体要求见下一节。
- 有效的企业许可证文件,用于在新设备上完成激活。
- 对两台设备的 admin SSH 访问权限,以及管理控制台的访问权限。
注意副本数量上限:GitHub Enterprise Server 最多允许8 台高可用副本(包括被动副本、active/geo 副本以及仓库缓存实例)。
副本配置所需的端口
高可用环境的所有节点之间必须能相互通信,其中强制要求的管理端口有两个:
| 端口 | 服务 | 用途 |
|---|---|---|
| 122/TCP | SSH | 管理用 Shell 访问;高可用配置中所有节点之间必须开放入站连接。默认 SSH 端口 22 专门用于 Git 和 SSH 应用流量 |
| 1194/UDP | VPN | 高可用配置中节点间的安全复制网络隧道 |
其余常用管理端口可参考 网络端口文档:8443(HTTPS)是 Web 管理控制台,用于安装和基本配置;终端用户流量仍走 443(HTTPS)和 22(Git over SSH)。完成操作前,请先在防火墙或安全组中放通上述 122/TCP 与 1194/UDP。
创建副本的操作步骤
以下命令中的PRIMARY_IP、REPLICA_IP、PRIMARY-HOSTNAME均为你实际环境中的主实例 IP、副本 IP 和主机名,执行前请自行替换。
1. 安装并激活副本设备
- 在目标平台上按标准流程安装一台新的 Enterprise Server 设备。
- 在浏览器中访问新副本设备的 IP 地址,上传你的企业许可证文件完成激活。
2. 在 Web 控制台中创建副本节点
激活后,在副本的管理控制台中:
- 设置与主实例一致的管理员密码并继续。
- 点击Create a replica node。
- 在 "Add new SSH key" 中粘贴你的 SSH 公钥(即下一步
ghe-repl-setup命令返回的公钥),点击Add key。
3. 通过 SSH 生成并分发复制密钥
使用 SSH 以端口 122 连接副本:
ssh -p 122 admin@REPLICA_IP使用
ghe-repl-setup命令并传入主实例 IP 来生成复制密钥对,复制它返回的公钥:ghe-repl-setup PRIMARY_IP在浏览器中访问
https://PRIMARY-HOSTNAME/setup/settings,把从副本复制来的公钥添加到主实例的授权密钥列表中。在副本上再次运行
ghe-repl-setup以验证与主实例的连接并启用副本模式:ghe-repl-setup PRIMARY_IP
4. 启动复制
在ghe-repl-setup与ghe-repl-start之间运行ghe-config-apply,可以让主服务器在整个复制搭建过程中保持可用:
ghe-config-apply ghe-repl-start[!WARNING] 较旧版本(3.19 之前)中,
ghe-repl-start会导致主服务器短暂中断,期间用户可能看到内部服务器错误。对此有两种处理方式:
- 在副本上运行
ghe-repl-start之前,先在主节点上运行ghe-maintenance -s进入维护模式;复制开始后用ghe-maintenance -u退出。注意主节点处于维护模式时 Git 复制不会推进。- 如果运行的是 3.14.20、3.15.15、3.16.11、3.17.8、3.18.2 或之后的版本,则无需提前进入维护模式,只需保证在
ghe-repl-setup和ghe-repl-start之间执行了ghe-config-apply;跳过它仍会导致主服务器中断。
5. 验证复制状态
在副本上检查每个数据存储复制通道的状态:
ghe-repl-status除了命令行输出,还可以用以下两种方式判断副本是否按预期工作:
- 访问
https://HOSTNAME/status(HOSTNAME 为实例主机名):能服务用户流量的设备返回200(OK);被动副本(如双节点高可用配置中的副本)会返回503(Service Unavailable),这属于预期行为。 - 复制建立完成后,副本设备的管理控制台不再可访问:如果通过端口 8443 访问副本 IP 或主机名,会看到 "Server in replication mode" 消息,说明该设备已配置为副本。
- 主实例上还可通过
https://HOSTNAME/setup/replication的 Replication overview 仪表盘查看复制概览。
另外注意:副本设备可以接受 Git 客户端请求,但这些请求会被转发到活动(active)设备处理,不会在副本本地执行。
可选分支:跨地域 geo-replication
如果你的两台副本位于不同地理区域,标准双节点流程只创建第一台副本,第二台需要按以下差异处理(来自同一篇创建副本文档):
第一台副本按标准双节点方式创建:
ghe-repl-setup PRIMARY_IP然后ghe-repl-start。第二台副本使用
--add标志,避免覆盖已有复制配置:(replica2)$ ghe-repl-setup --add PRIMARY_IP (replica2)$ ghe-repl-start副本默认配置为同一 datacenter 并会尝试从同 datacenter 的现有节点同步。要在不同 datacenter 间复制,在每台节点上用
ghe-repl-node --datacenter设置互不相同的 datacenter 值(具体取值任意,只要彼此不同):(primary)$ ghe-repl-node --datacenter [PRIMARY DC NAME] (replica1)$ ghe-repl-node --datacenter [FIRST REPLICA DC NAME] (replica2)$ ghe-repl-node --datacenter [SECOND REPLICA DC NAME][PRIMARY DC NAME]等方括号内容是占位符,替换为你自定的 datacenter 名称。用
ghe-repl-node --active将副本设为活动节点(存储数据副本并服务终端请求),或用--inactive设为非活动节点。在主实例上运行
ghe-config-apply应用配置。
跨地域复制时所有节点必须互相可达,管理端口至少对所有其他节点开放。如果节点间网络延迟超过 70 毫秒,文档建议改用仓库缓存(repository cache)节点而非复制节点。DNS 方面,需要配置 Geo DNS 指向主节点与各副本的 IP,并可为主节点创建 DNS CNAME(如primary.github.example.com)用于通过 SSH 访问或用backup-utils备份;测试时可在本地工作站的/etc/hosts中按节点 IP 改写解析。
限制与故障切换边界
文档明确列出了高可用配置不适合的场景,规划时不要把它们算进来:
- 横向扩展:即使通过 geo-replication 地理分布流量,写性能仍受限于主实例的速度与可用性。
- CI/CD 负载:地理上远离主实例的大量 CI 客户端应配置仓库缓存来解决。
- 主实例备份:高可用副本不能替代异地备份。部分数据损坏或丢失会立即从主实例复制到副本,要能安全回滚到稳定的历史状态,必须用带历史快照的定期备份。
- 零停机升级:在受控提升(promotion)场景下,为防止数据丢失和脑裂,需先将主实例置于维护模式并等待所有写入完成,再提升副本。
故障切换时,把网络流量从主实例重定向到副本需要单独配置,文档给出两种策略:
- DNS 切换:DNS 记录指向主实例,TTL 建议 60 秒到 5 分钟;切换时将主实例置于维护模式并把 DNS 记录改指副本 IP。
- 负载均衡器:切换时同样先将主实例置于维护模式,并需手动把副本提升为主实例后它才会响应用户流量。
完成上述步骤后,你的高可用对即告建成:ghe-repl-status显示各存储复制通道状态、副本管理控制台显示 "Server in replication mode"、副本statusURL 返回 503,三者共同确认副本处于预期的被动复制状态。后续如需了解副本提升或监控细节,可继续阅读 高可用配置说明 中的相关章节。
【免费下载链接】docsThe open-source repo for docs.github.com项目地址: https://gitcode.com/GitHub_Trending/do/docs
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考