关于 GitHub Enterprise Server 群集的初始化
若要在环境中部署 GitHub Enterprise Server 群集,必须安装 GitHub Enterprise Server,上传已启用群集的许可证,配置第一个节点,并使用配置文件初始化节点。
注意: GitHub Enterprise Server 群集必须通过 HTTPS 进行配置。
安装 GitHub Enterprise Server
开始设置群集时,首先在每个节点的虚拟机 (VM) 上安装 GitHub Enterprise Server 设备,然后配置 IP 地址。
- 在每个集群节点上,提供并安装 GitHub Enterprise Server。 有关详细信息,请参阅“设置 GitHub Enterprise Server 实例”。
- 使用管理 shell 或 DHCP,仅配置每个节点的 IP 地址。 不要配置任何其他设置。
配置第一个节点
在充当主 MySQL 节点的节点上,安装 GitHub Enterprise Server 许可证。
- 连接到将在
cluster.conf
中指定为 MySQL 主要节点的节点。 有关详细信息,请参阅“初始化集群”。 - 在 Web 浏览器中,访问
https://<ip address>:8443/setup/
。 - 在提示时上传许可文件并设置管理控制台密码。 有关详细信息,请参阅“管理 GitHub Enterprise 的许可证”。
- 在 管理控制台 中,配置并保存所需的设置。
- 实例将自动重启。
初始化集群
若要初始化群集,需要群集配置文件 (cluster.conf
)。 有关详细信息,请参阅“初始化集群”。
- 从配置的第一个节点开始,运行
ghe-cluster-config-init
。 如果集群配置文件中存在未配置的节点,此操作会初始化集群。 - 运行
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-server
和 mysql-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