Skip to main content

此版本的 GitHub Enterprise Server 已于以下日期停止服务 2024-09-25. 即使针对重大安全问题,也不会发布补丁。 为了获得更好的性能、更高的安全性和新功能,请升级到最新版本的 GitHub Enterprise。 如需升级帮助,请联系 GitHub Enterprise 支持

初始化集群

GitHub Enterprise Server 集群必须使用许可进行设置,并使用管理 shell (SSH) 进行初始化。

谁可以使用此功能?

GitHub 确定聚类分析的资格,并且必须为实例的许可证启用配置。 聚类分析需要仔细规划和额外的管理开销。 有关详细信息,请参阅“关于集群”。

关于 GitHub Enterprise Server 群集的初始化

若要在环境中部署 GitHub Enterprise Server 群集,必须安装 GitHub Enterprise Server,上传已启用群集的许可证,配置第一个节点,并使用配置文件初始化节点。

注意: GitHub Enterprise Server 群集必须通过 HTTPS 进行配置。

安装 GitHub Enterprise Server

开始设置群集时,首先在每个节点的虚拟机 (VM) 上安装 GitHub Enterprise Server 设备,然后配置 IP 地址。

  1. 在每个集群节点上,提供并安装 GitHub Enterprise Server。 有关详细信息,请参阅“设置 GitHub Enterprise Server 实例”。
  2. 使用管理 shell 或 DHCP,仅配置每个节点的 IP 地址。 不要配置任何其他设置。

配置第一个节点

在充当主 MySQL 节点的节点上,安装 GitHub Enterprise Server 许可证。

  1. 连接到将在 cluster.conf 中指定为 MySQL 主要节点的节点。 有关详细信息,请参阅“初始化集群”。
  2. 在 Web 浏览器中,访问 https://<ip address>:8443/setup/
  3. 在提示时上传许可文件并设置管理控制台密码。 有关详细信息,请参阅“管理 GitHub Enterprise 的许可证”。
  4. 管理控制台 中,配置并保存所需的设置。
  5. 实例将自动重启。

初始化集群

若要初始化群集,需要群集配置文件 (cluster.conf)。 有关详细信息,请参阅“初始化集群”。

  1. 从配置的第一个节点开始,运行 ghe-cluster-config-init。 如果集群配置文件中存在未配置的节点,此操作会初始化集群。
  2. 运行 ghe-cluster-config-apply。 这将验证 cluster.conf 文件、将配置应用于每个节点文件,并调出每个节点上已配置的服务。

若要检查正在运行的群集的状态,请使用 ghe-cluster-status 命令。

关于集群配置文件

群集配置文件 (cluster.conf) 会定义群集中的节点及其运行的服务。 有关详细信息,请参阅“关于集群节点”。

此示例 cluster.conf 定义具有 11 个节点的群集。

  • 名为 ghes-front-end-node-\* 的两个节点运行负责响应客户端请求的服务。
  • 名为 ghes-database-node-\* 的三个节点运行负责存储、检索和复制数据库数据的服务。
  • 名为 ghes-search-node-\* 的三个节点运行负责搜索功能的服务。
  • 名为 ghes-storage-node-\* 的三个节点运行负责存储、检索和复制数据的服务。

必须为每个节点选择有效的唯一主机名和 IPv4 地址。 为了确保节点可以在本地为彼此解析,GitHub Enterprise Server 会将每个节点的主机名记录添加到各节点上的 /etc/hosts

  • 有关 GitHub Enterprise Server 有效主机名的详细信息,请参阅“为实例配置主机名”。
  • 每个 IPv4 地址都必须为专用网络上的地址。 请参阅 IETF 网站上的 RFC 1918

通过 mysql-servermysql-master 指定你配置为 MySQL 主要节点的第一个集群节点。

[cluster]
  mysql-master = ghes-database-node-1
  redis-master = ghes-database-node-1
  primary-datacenter = primary
[cluster "ghes-front-end-node-1"]
  hostname = ghes-front-end-node-1
  ipv4 = 192.168.0.2
  # ipv6 = fd12:3456:789a:1::2
  consul-datacenter = primary
  datacenter = primary
  web-server = true
  job-server = true
  memcache-server = true
[cluster "ghes-front-end-node-2"]
  hostname = ghes-front-end-node-2
  ipv4 = 192.168.0.3
  # ipv6 = fd12:3456:789a:1::3
  consul-datacenter = primary
  datacenter = primary
  web-server = true
  job-server = true
  memcache-server = true
[cluster "ghes-database-node-1"]
  hostname = ghes-database-node-1
  ipv4 = 192.168.0.4
  # ipv6 = fd12:3456:789a:1::4
  consul-datacenter = primary
  datacenter = primary
  consul-server = true
  mysql-server = true
  redis-server = true
[cluster "ghes-database-node-2"]
  hostname = ghes-database-node-2
  ipv4 = 192.168.0.5
  # ipv6 = fd12:3456:789a:1::5
  consul-datacenter = primary
  datacenter = primary
  consul-server = true
  mysql-server = true
  redis-server = true
[cluster "ghes-database-node-3"]
  hostname = ghes-database-node-3
  ipv4 = 192.168.0.6
  # ipv6 = fd12:3456:789a:1::6
  consul-datacenter = primary
  datacenter = primary
  consul-server = true
  mysql-server = true
  redis-server = true
[cluster "ghes-search-node-1"]
  hostname = ghes-search-node-1
  ipv4 = 192.168.0.7
  # ipv6 = fd12:3456:789a:1::7
  consul-datacenter = primary
  datacenter = primary
  elasticsearch-server = true
[cluster "ghes-search-node-2"]
  hostname = ghes-search-node-2
  ipv4 = 192.168.0.8
  # ipv6 = fd12:3456:789a:1::8
  consul-datacenter = primary
  datacenter = primary
  elasticsearch-server = true
[cluster "ghes-search-node-3"]
  hostname = ghes-search-node-3
  ipv4 = 192.168.0.9
  # ipv6 = fd12:3456:789a:1::9
  consul-datacenter = primary
  datacenter = primary
  elasticsearch-server = true
[cluster "ghes-storage-node-1"]
  hostname = ghes-storage-node-1
  ipv4 = 192.168.0.10
  # ipv6 = fd12:3456:789a:1::10
  consul-datacenter = primary
  datacenter = primary
  git-server = true
  pages-server = true
  storage-server = true
  metrics-server = true
[cluster "ghes-storage-node-2"]
  hostname = ghes-storage-node-2
  ipv4 = 192.168.0.11
  # ipv6 = fd12:3456:789a:1::11
  consul-datacenter = primary
  datacenter = primary
  git-server = true
  pages-server = true
  storage-server = true
  metrics-server = true
[cluster "ghes-storage-node-3"]
  hostname = ghes-storage-node-3
  ipv4 = 192.168.0.12
  # ipv6 = fd12:3456:789a:1::12
  consul-datacenter = primary
  datacenter = primary
  git-server = true
  pages-server = true
  storage-server = true
  metrics-server = true

在配置的第一个节点上创建文件 /data/user/common/cluster.conf。 例如,使用 vim

ghe-data-node-1:~$ sudo vim /data/user/common/cluster.conf