참고: GitHub Enterprise Server 클러스터링은 HTTPS로 구성해야 합니다.
GitHub Enterprise Server 설치
- 각 클러스터 노드에서 GitHub Enterprise Server를 프로비저닝하고 설치합니다. 자세한 내용은 “GitHub Enterprise Server 인스턴스 설정”을 참조하세요.
- 관리 셸 또는 DHCP를 사용하여 각 노드의 IP 주소 만 구성합니다. 다른 설정은 구성하지 마세요.
첫 번째 노드 구성
cluster.conf에서 MySQL 기본으로 지정될 노드에 연결합니다. 자세한 내용은 “클러스터 구성 파일 정보”를 참조하세요.- 웹 브라우저에서
https://<ip address>:8443/setup/으로 이동합니다. - 메시지가 표시되면 라이선스 파일을 업로드하고 관리 콘솔 암호를 설정합니다. 자세한 내용은 “GitHub Enterprise에 대한 라이선스 관리”를 참조하세요. 3. 관리 콘솔에서 원하는 설정을 구성하고 저장합니다. 4. 인스턴스가 자동으로 다시 시작됩니다.
클러스터 초기화
클러스터를 초기화하려면 클러스터 구성 파일(cluster.conf)이 필요합니다. 자세한 내용은 “클러스터 구성 파일 정보”를 참조하세요.
- 구성된 첫 번째 노드에서
ghe-cluster-config-init를 실행합니다. 구성되지 않은 클러스터 구성 파일에 노드가 있는 경우 클러스터가 초기화됩니다. ghe-cluster-config-apply을 실행합니다. 그러면cluster.conf파일의 유효성이 검사되고, 각 노드 파일에 구성이 적용되고, 각 노드에서 구성된 서비스를 불러옵니다.
실행 중인 클러스터의 상태를 확인하려면 ghe-cluster-status 명령을 사용합니다.
클러스터 구성 파일 정보
클러스터 구성 파일(cluster.conf)은 클러스터의 노드 및 해당 노드가 실행하는 서비스를 정의합니다.
자세한 내용은 “클러스터 노드 정보”를 참조하세요.
이 예제 cluster.conf 에서는 노드가 11개인 클러스터를 정의합니다.
- 클라이언트 요청에 응답하는 역할을 하는 run services라는
ghes-front-end-node-\*두 개의 노드. - 데이터베이스 데이터의 스토리지, 검색 및 복제를 담당하는 실행 서비스라는
ghes-database-node-\*세 개의 노드. - 검색 기능을 담당하는 run services라는
ghes-search-node-\*세 개의 노드. - 데이터 스토리지, 검색 및 복제를 담당하는 실행 서비스라는
ghes-storage-node-\*세 개의 노드.
노드 이름은 선택한 유효한 호스트 이름일 수 있습니다. 이름은 각 노드의 호스트 이름으로 설정되며, 각 노드의 /etc/hosts에 추가되어 로컬에서 노드를 서로 확인할 수 있습니다.
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