Skip to main content

클러스터 초기화

GitHub Enterprise Server 클러스터는 라이선스를 사용하여 설정하고 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. 관리 셸 또는 DHCP를 사용하여 각 노드의 IP 주소 구성합니다. 다른 설정은 구성하지 마세요.

첫 번째 노드 구성

기본 MySQL 노드로 작동하는 노드에서 GitHub Enterprise Server 라이선스를 설치합니다.

  1. cluster.conf에서 MySQL 기본으로 지정될 노드에 연결합니다. 자세한 내용은 "클러스터 초기화"을(를) 참조하세요.
  2. 웹 브라우저에서 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에 추가합니다.

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