InfoGrab Docs

새 **보조** 사이트 구성

요약

이것은 보조 Geo 사이트 설정의 최종 단계입니다. 보조 사이트 구성의 기본 단계는 다음과 같습니다: 이 문서는 첫 번째 항목에 중점을 둡니다. 기본 사이트와 보조 사이트 모두에 대한 필수 조건: 보조 사이트에 대한 사용자 정의 인증을 설정하지 마세요.

Note

이것은 보조 Geo 사이트 설정의 최종 단계입니다. 설정 프로세스의 단계는 문서화된 순서에 따라 완료해야 합니다. 그렇지 않은 경우 계속하기 전에 모든 이전 단계를 완료하세요.

보조 사이트 구성의 기본 단계는 다음과 같습니다:

  1. 기본 사이트와 보조 사이트 간에 필요한 구성 복제.
  2. 보조 사이트에서 추적 데이터베이스 구성.
  3. 보조 사이트에서 GitLab 시작.

이 문서는 첫 번째 항목에 중점을 둡니다. 테스트/프로덕션 환경에서 실행하기 전에 먼저 모든 단계를 읽는 것이 좋습니다.

기본 사이트와 보조 사이트 모두에 대한 필수 조건:

Note

보조 사이트에 대한 사용자 정의 인증을 설정하지 마세요. 이는 기본 사이트에서 처리됩니다. Admin 영역에 대한 액세스가 필요한 모든 변경은 보조 사이트가 읽기 전용 복제본이므로 기본 사이트에서 수행해야 합니다.

1단계. GitLab 비밀 값 수동 복제#

GitLab은 사이트의 모든 노드에서 동일해야 하는 여러 비밀 값을 /etc/gitlab/gitlab-secrets.json 파일에 저장합니다. 사이트 간에 이를 자동으로 복제하는 방법이 생길 때까지(이슈 #3789 참조), 보조 사이트의 모든 노드에 수동으로 복제해야 합니다.

  1. 기본 사이트의 Rails 노드에 SSH 접속하고 아래 명령을 실행합니다:

    sudo cat /etc/gitlab/gitlab-secrets.json
    

    이렇게 하면 JSON 형식으로 복제해야 하는 비밀이 표시됩니다.

  2. 보조 Geo 사이트의 각 노드에 SSH 접속하고 root 사용자로 로그인합니다:

    sudo -i
    
  3. 기존 비밀을 백업합니다:

    mv /etc/gitlab/gitlab-secrets.json /etc/gitlab/gitlab-secrets.json.`date +%F`
    
  4. 기본 사이트의 Rails 노드에서 보조 사이트의 각 노드/etc/gitlab/gitlab-secrets.json을 복사하거나 노드 간에 파일 내용을 복사하여 붙여넣습니다:

    sudo editor /etc/gitlab/gitlab-secrets.json
    
    # paste the output of the `cat` command you ran on the primary
    # save and exit
    
  5. 파일 권한이 올바른지 확인합니다:

    chown root:root /etc/gitlab/gitlab-secrets.json
    chmod 0600 /etc/gitlab/gitlab-secrets.json
    
  6. 변경 사항이 적용되도록 보조 사이트의 각 Rails, Sidekiq, Gitaly 노드를 재구성합니다:

    gitlab-ctl reconfigure
    gitlab-ctl restart
    

2단계. 기본 사이트의 SSH 호스트 키 수동 복제#

GitLab은 모든 액세스 요청이 처리되는 사용자(일반적으로 git이라는 이름)를 지정하여 시스템 설치된 SSH 데몬과 통합됩니다.

재해 복구 상황에서 GitLab 시스템 관리자는 보조 사이트를 기본 사이트로 승격합니다. 기본 도메인의 DNS 레코드도 새 기본 사이트(이전 보조 사이트)를 가리키도록 업데이트해야 합니다. 이렇게 하면 Git 원격 및 API URL을 업데이트할 필요가 없습니다.

이로 인해 SSH 호스트 키 불일치로 인해 새로 승격된 기본 사이트에 대한 모든 SSH 요청이 실패합니다. 이를 방지하려면 기본 SSH 호스트 키를 보조 사이트에 수동으로 복제해야 합니다.

SSH 호스트 키 경로는 사용된 소프트웨어에 따라 다릅니다:

  • OpenSSH를 사용하는 경우 경로는 /etc/ssh입니다.
  • gitlab-sshd를 사용하는 경우 경로는 /var/opt/gitlab/gitlab-sshd입니다.

다음 단계에서 <ssh_host_key_path>를 사용 중인 경로로 교체합니다:

  1. 보조 사이트의 각 Rails 노드에 SSH 접속하고 root 사용자로 로그인합니다:

    sudo -i
    
  2. 기존 SSH 호스트 키를 백업합니다:

    find <ssh_host_key_path> -iname 'ssh_host_*' -exec cp {} {}.backup.`date +%F` \;
    
  3. 기본 사이트에서 SSH 호스트 키를 복사합니다:

    SSH 트래픽을 제공하는 기본 사이트의 노드 중 하나root 사용자로 액세스할 수 있는 경우(일반적으로 메인 GitLab Rails 애플리케이션 노드):

    # Run this from the secondary site, change `<primary_site_fqdn>` for the IP or FQDN of the server
    scp root@<primary_node_fqdn>:<ssh_host_key_path>/ssh_host_*_key* <ssh_host_key_path>
    

    sudo 권한이 있는 사용자를 통해서만 액세스할 수 있는 경우:

    # Run this from the node on your primary site:
    sudo tar --transform 's/.*\///g' -zcvf ~/geo-host-key.tar.gz <ssh_host_key_path>/ssh_host_*_key*
    
    # Run this on each node on your secondary site:
    scp <user_with_sudo>@<primary_site_fqdn>:geo-host-key.tar.gz .
    tar zxvf ~/geo-host-key.tar.gz -C <ssh_host_key_path>
    
  4. 보조 사이트의 각 Rails 노드에서 파일 권한이 올바른지 확인합니다:

    chown root:root <ssh_host_key_path>/ssh_host_*_key*
    chmod 0600 <ssh_host_key_path>/ssh_host_*_key
    
  5. 키 지문이 일치하는지 확인하려면 각 사이트의 기본 및 보조 노드 모두에서 다음 명령을 실행합니다:

    for file in <ssh_host_key_path>/ssh_host_*_key; do ssh-keygen -lf $file; done
    

    다음과 유사한 출력을 받아야 하며 두 노드에서 동일해야 합니다:

    1024 SHA256:FEZX2jQa2bcsd/fn/uxBzxhKdx4Imc4raXrHwsbtP0M root@serverhostname (DSA)
    256 SHA256:uw98R35Uf+fYEQ/UnJD9Br4NXUFPv7JAUln5uHlgSeY root@serverhostname (ECDSA)
    256 SHA256:sqOUWcraZQKd89y/QQv/iynPTOGQxcOTIXU/LsoPmnM root@serverhostname (ED25519)
    2048 SHA256:qwa+rgir2Oy86QI+PZi/QVR+MSmrdrpsuH7YyKknC+s root@serverhostname (RSA)
    
  6. 기존 개인 키에 대한 올바른 공개 키가 있는지 확인합니다:

    # This will print the fingerprint for private keys:
    for file in <ssh_host_key_path>/ssh_host_*_key; do ssh-keygen -lf $file; done
    
    # This will print the fingerprint for public keys:
    for file in <ssh_host_key_path>/ssh_host_*_key.pub; do ssh-keygen -lf $file; done
    

    [!note] 개인 키 및 공개 키 명령의 출력은 동일한 지문을 생성해야 합니다.

  7. 보조 사이트의 각 Rails 노드에서 OpenSSH의 경우 sshd 또는 gitlab-sshd 서비스를 재시작합니다:

    • OpenSSH의 경우:

      # Debian or Ubuntu installations
      sudo service ssh reload
      
      # CentOS installations
      sudo service sshd reload
      
    • gitlab-sshd의 경우:

      sudo gitlab-ctl restart gitlab-sshd
      
  8. SSH가 여전히 작동하는지 확인합니다.

    새 터미널에서 GitLab 보조 서버에 SSH 접속합니다. 연결할 수 없는 경우 이전 단계에 따라 권한이 올바른지 확인합니다.

3단계. 보조 사이트 추가#

  1. 보조 사이트의 각 Rails 및 Sidekiq 노드에 SSH 접속하고 root로 로그인합니다:

    sudo -i
    
  2. /etc/gitlab/gitlab.rb를 편집하고 사이트에 대한 고유한 이름을 추가합니다. 다음 단계에서 필요합니다:

    ##
    ## The unique identifier for the Geo site. See
    ## https://docs.gitlab.com/administration/geo_sites/#common-settings
    ##
    gitlab_rails['geo_node_name'] = '<site_name_here>'
    
  3. 변경 사항이 적용되도록 보조 사이트의 각 Rails 및 Sidekiq 노드를 재구성합니다:

    gitlab-ctl reconfigure
    
  4. 기본 노드 GitLab 인스턴스로 이동합니다:

    1. 오른쪽 상단 모서리에서 Admin을 선택합니다.
    2. 왼쪽 사이드바에서 Geo > Sites를 선택합니다.
    3. Add site를 선택합니다. Geo 구성 인터페이스에서 보조 사이트 추가
    4. Name/etc/gitlab/gitlab.rbgitlab_rails['geo_node_name'] 값을 입력합니다. 이 값은 문자 단위로 정확히 일치해야 합니다.
    5. External URL/etc/gitlab/gitlab.rbexternal_url 값을 입력합니다. 이 값은 항상 일치해야 하지만, 하나가 /로 끝나고 다른 하나가 그렇지 않아도 상관없습니다.
    6. 선택 사항. **Internal URL (optional)**에 보조 사이트의 내부 URL을 입력합니다.
    7. 선택 사항. 보조 사이트에서 복제할 그룹 또는 스토리지 샤드를 선택합니다. 비워두면 모두 복제합니다. 자세한 내용은 선택적 동기화를 참조하세요.
    8. Save changes를 선택하여 보조 사이트를 추가합니다.
  5. 보조 사이트의 각 Rails, Sidekiq 노드에 SSH 접속하고 서비스를 재시작합니다:

    gitlab-ctl restart
    

    다음을 실행하여 Geo 설정에 일반적인 문제가 있는지 확인합니다:

    gitlab-rake gitlab:geo:check
    

    검사가 실패하면 문제 해결 문서를 확인합니다.

  6. 기본 사이트의 Rails 또는 Sidekiq 서버에 SSH 접속하고 root로 로그인하여 보조 사이트에 접근 가능한지 또는 Geo 설정에 일반적인 문제가 있는지 확인합니다:

    gitlab-rake gitlab:geo:check
    

    검사가 실패하면 문제 해결 문서를 확인합니다.

보조 사이트가 Geo 관리 페이지에 추가되고 재시작된 후, 사이트는 백필이라고 알려진 프로세스에서 기본 사이트의 누락된 데이터를 자동으로 복제하기 시작합니다. 한편, 기본 사이트는 모든 변경 사항을 각 보조 사이트에 알리기 시작하여 보조 사이트가 해당 알림에 즉시 행동할 수 있도록 합니다.

보조 사이트가 실행 중이고 접근 가능한지 확인합니다. 기본 사이트에 사용된 것과 동일한 자격 증명으로 보조 사이트에 로그인할 수 있습니다.

허용된 ActionCable 원본으로 기본 및 보조 URL 추가#

이 단계를 통해 기본 및 보조 사이트에서 WebSocket이 원활하게 작동합니다.

  1. 사이트(기본 및 보조)의 외부 URL을 수집합니다. 위 섹션에서 언급한 대로 Admin 영역의 사이트 페이지에서 찾을 수 있습니다.

  2. 기본 사이트의 각 Rails 및 Sidekiq 노드에 SSH 접속하고 root로 로그인합니다:

    sudo -i
    
  3. /etc/gitlab/gitlab.rb를 편집하여 1단계에서 수집한 URL을 action_cable_allowed_origins 설정에 추가합니다:

    gitlab_rails['action_cable_allowed_origins'] = ['https://secondary.example.com', 'https://primary.example.com']
    
  4. 변경 사항을 적용하려면 각 Rails 및 Sidekiq 노드를 재구성하고 서비스를 재시작합니다:

    gitlab-ctl reconfigure
    gitlab-ctl restart
    

4단계. (선택 사항) 사용자 정의 인증서 사용#

다음 경우 이 단계를 안전하게 건너뛸 수 있습니다:

  • 기본 사이트가 공개 CA에서 발급한 HTTPS 인증서를 사용합니다.
  • 기본 사이트가 CA에서 발급한(자체 서명이 아닌) HTTPS 인증서로만 외부 서비스에 연결합니다.

인바운드 연결을 위한 사용자 정의 또는 자체 서명 인증서#

GitLab Geo 기본 사이트가 인바운드 HTTPS 연결을 보호하기 위해 사용자 정의 또는 자체 서명 인증서를 사용하는 경우 이는 단일 도메인 또는 다중 도메인 인증서일 수 있습니다.

인증서 유형에 따라 올바른 인증서를 설치합니다:

  • 기본 및 보조 사이트 도메인을 모두 포함하는 다중 도메인 인증서: 보조 사이트의 모든 Rails, Sidekiq, Gitaly 노드에서 /etc/gitlab/ssl에 인증서를 설치합니다.
  • 각 Geo 사이트 도메인에 특정한 인증서의 단일 도메인 인증서: 보조 사이트 도메인에 대한 유효한 인증서를 생성하고 다음 지침에 따라 보조 사이트의 모든 Rails, Sidekiq, Gitaly 노드에 /etc/gitlab/ssl에 설치합니다.

사용자 정의 인증서를 사용하는 외부 서비스에 연결#

외부 서비스의 자체 서명 인증서 복사본은 서비스에 대한 액세스가 필요한 모든 기본 사이트 노드의 신뢰 저장소에 추가해야 합니다.

보조 사이트가 동일한 외부 서비스에 액세스할 수 있으려면 이러한 인증서를 보조 사이트의 신뢰 저장소에 추가해야 합니다.

기본 사이트가 인바운드 HTTPS 연결을 위한 사용자 정의 또는 자체 서명 인증서를 사용하는 경우, 기본 사이트의 인증서를 보조 사이트의 신뢰 저장소에 추가해야 합니다:

  1. 보조 사이트의 각 Rails, Sidekiq, Gitaly 노드에 SSH 접속하고 root로 로그인합니다:

    sudo -i
    
  2. 기본 사이트에서 신뢰할 수 있는 인증서를 복사합니다:

    root 사용자를 사용하여 SSH 트래픽을 제공하는 기본 사이트의 노드 중 하나에 액세스할 수 있는 경우:

    scp root@<primary_site_node_fqdn>:/etc/gitlab/trusted-certs/* /etc/gitlab/trusted-certs
    

    sudo 권한이 있는 사용자를 통해서만 액세스할 수 있는 경우:

    # Run this from the node on your primary site:
    sudo tar --transform 's/.*\///g' -zcvf ~/geo-trusted-certs.tar.gz /etc/gitlab/trusted-certs/*
    
    # Run this on each node on your secondary site:
    scp <user_with_sudo>@<primary_site_node_fqdn>:geo-trusted-certs.tar.gz .
    tar zxvf ~/geo-trusted-certs.tar.gz -C /etc/gitlab/trusted-certs
    
  3. 보조 사이트의 업데이트된 각 Rails, Sidekiq, Gitaly 노드를 재구성합니다:

    sudo gitlab-ctl reconfigure
    

5단계. 보조 사이트의 올바른 기능 확인#

기본 사이트에 사용한 것과 동일한 자격 증명으로 보조 사이트에 로그인할 수 있습니다. 로그인 후:

  1. 오른쪽 상단 모서리에서 Admin을 선택합니다.
  2. 왼쪽 사이드바에서 Geo > Sites를 선택합니다.
  3. 보조 Geo 사이트로 올바르게 식별되는지, Geo가 활성화되어 있는지 확인합니다.

초기 복제에는 시간이 걸릴 수 있습니다. 사이트 상태 또는 '백필'은 여전히 진행 중일 수 있습니다. 브라우저의 기본 사이트 Geo Sites 대시보드에서 각 Geo 사이트의 동기화 프로세스를 모니터링할 수 있습니다.

보조 사이트의 Geo 대시보드

설치가 제대로 작동하지 않으면 문제 해결 문서를 확인합니다.

대시보드에서 나타날 수 있는 두 가지 가장 명백한 문제는 다음과 같습니다:

  1. 데이터베이스 복제가 잘 작동하지 않음.
  2. 인스턴스 간 알림이 작동하지 않음. 이 경우 다음 중 하나일 수 있습니다:
    • 사용자 정의 인증서 또는 사용자 정의 CA를 사용하고 있습니다(문제 해결 문서 참조).
    • 인스턴스가 방화벽 처리되어 있습니다(방화벽 규칙 확인).

보조 사이트를 비활성화하면 동기화 프로세스가 중지됩니다.

여러 리포지토리 샤드에 대해 기본 사이트에서 리포지토리 스토리지가 사용자 정의된 경우 각 보조 사이트에서 동일한 구성을 복제해야 합니다.

사용자에게 Geo 사이트 사용 가이드를 안내합니다.

현재 동기화되는 항목:

  • Git 리포지토리.
  • Wiki.
  • LFS 객체.
  • 이슈, 머지 리퀘스트, 스니펫, 댓글 첨부 파일.
  • 사용자, 그룹, 프로젝트 아바타.

문제 해결#

문제 해결 문서를 참조하세요.

새 **보조** 사이트 구성

Tier: Premium, Ultimate
Offering: GitLab Self-Managed
원문 보기
요약

이것은 보조 Geo 사이트 설정의 최종 단계입니다. 보조 사이트 구성의 기본 단계는 다음과 같습니다: 이 문서는 첫 번째 항목에 중점을 둡니다. 기본 사이트와 보조 사이트 모두에 대한 필수 조건: 보조 사이트에 대한 사용자 정의 인증을 설정하지 마세요.

Note

이것은 보조 Geo 사이트 설정의 최종 단계입니다. 설정 프로세스의 단계는 문서화된 순서에 따라 완료해야 합니다. 그렇지 않은 경우 계속하기 전에 모든 이전 단계를 완료하세요.

보조 사이트 구성의 기본 단계는 다음과 같습니다:

  1. 기본 사이트와 보조 사이트 간에 필요한 구성 복제.
  2. 보조 사이트에서 추적 데이터베이스 구성.
  3. 보조 사이트에서 GitLab 시작.

이 문서는 첫 번째 항목에 중점을 둡니다. 테스트/프로덕션 환경에서 실행하기 전에 먼저 모든 단계를 읽는 것이 좋습니다.

기본 사이트와 보조 사이트 모두에 대한 필수 조건:

Note

보조 사이트에 대한 사용자 정의 인증을 설정하지 마세요. 이는 기본 사이트에서 처리됩니다. Admin 영역에 대한 액세스가 필요한 모든 변경은 보조 사이트가 읽기 전용 복제본이므로 기본 사이트에서 수행해야 합니다.

1단계. GitLab 비밀 값 수동 복제#

GitLab은 사이트의 모든 노드에서 동일해야 하는 여러 비밀 값을 /etc/gitlab/gitlab-secrets.json 파일에 저장합니다. 사이트 간에 이를 자동으로 복제하는 방법이 생길 때까지(이슈 #3789 참조), 보조 사이트의 모든 노드에 수동으로 복제해야 합니다.

  1. 기본 사이트의 Rails 노드에 SSH 접속하고 아래 명령을 실행합니다:

    sudo cat /etc/gitlab/gitlab-secrets.json
    

    이렇게 하면 JSON 형식으로 복제해야 하는 비밀이 표시됩니다.

  2. 보조 Geo 사이트의 각 노드에 SSH 접속하고 root 사용자로 로그인합니다:

    sudo -i
    
  3. 기존 비밀을 백업합니다:

    mv /etc/gitlab/gitlab-secrets.json /etc/gitlab/gitlab-secrets.json.`date +%F`
    
  4. 기본 사이트의 Rails 노드에서 보조 사이트의 각 노드/etc/gitlab/gitlab-secrets.json을 복사하거나 노드 간에 파일 내용을 복사하여 붙여넣습니다:

    sudo editor /etc/gitlab/gitlab-secrets.json
    
    # paste the output of the `cat` command you ran on the primary
    # save and exit
    
  5. 파일 권한이 올바른지 확인합니다:

    chown root:root /etc/gitlab/gitlab-secrets.json
    chmod 0600 /etc/gitlab/gitlab-secrets.json
    
  6. 변경 사항이 적용되도록 보조 사이트의 각 Rails, Sidekiq, Gitaly 노드를 재구성합니다:

    gitlab-ctl reconfigure
    gitlab-ctl restart
    

2단계. 기본 사이트의 SSH 호스트 키 수동 복제#

GitLab은 모든 액세스 요청이 처리되는 사용자(일반적으로 git이라는 이름)를 지정하여 시스템 설치된 SSH 데몬과 통합됩니다.

재해 복구 상황에서 GitLab 시스템 관리자는 보조 사이트를 기본 사이트로 승격합니다. 기본 도메인의 DNS 레코드도 새 기본 사이트(이전 보조 사이트)를 가리키도록 업데이트해야 합니다. 이렇게 하면 Git 원격 및 API URL을 업데이트할 필요가 없습니다.

이로 인해 SSH 호스트 키 불일치로 인해 새로 승격된 기본 사이트에 대한 모든 SSH 요청이 실패합니다. 이를 방지하려면 기본 SSH 호스트 키를 보조 사이트에 수동으로 복제해야 합니다.

SSH 호스트 키 경로는 사용된 소프트웨어에 따라 다릅니다:

  • OpenSSH를 사용하는 경우 경로는 /etc/ssh입니다.
  • gitlab-sshd를 사용하는 경우 경로는 /var/opt/gitlab/gitlab-sshd입니다.

다음 단계에서 <ssh_host_key_path>를 사용 중인 경로로 교체합니다:

  1. 보조 사이트의 각 Rails 노드에 SSH 접속하고 root 사용자로 로그인합니다:

    sudo -i
    
  2. 기존 SSH 호스트 키를 백업합니다:

    find <ssh_host_key_path> -iname 'ssh_host_*' -exec cp {} {}.backup.`date +%F` \;
    
  3. 기본 사이트에서 SSH 호스트 키를 복사합니다:

    SSH 트래픽을 제공하는 기본 사이트의 노드 중 하나root 사용자로 액세스할 수 있는 경우(일반적으로 메인 GitLab Rails 애플리케이션 노드):

    # Run this from the secondary site, change `<primary_site_fqdn>` for the IP or FQDN of the server
    scp root@<primary_node_fqdn>:<ssh_host_key_path>/ssh_host_*_key* <ssh_host_key_path>
    

    sudo 권한이 있는 사용자를 통해서만 액세스할 수 있는 경우:

    # Run this from the node on your primary site:
    sudo tar --transform 's/.*\///g' -zcvf ~/geo-host-key.tar.gz <ssh_host_key_path>/ssh_host_*_key*
    
    # Run this on each node on your secondary site:
    scp <user_with_sudo>@<primary_site_fqdn>:geo-host-key.tar.gz .
    tar zxvf ~/geo-host-key.tar.gz -C <ssh_host_key_path>
    
  4. 보조 사이트의 각 Rails 노드에서 파일 권한이 올바른지 확인합니다:

    chown root:root <ssh_host_key_path>/ssh_host_*_key*
    chmod 0600 <ssh_host_key_path>/ssh_host_*_key
    
  5. 키 지문이 일치하는지 확인하려면 각 사이트의 기본 및 보조 노드 모두에서 다음 명령을 실행합니다:

    for file in <ssh_host_key_path>/ssh_host_*_key; do ssh-keygen -lf $file; done
    

    다음과 유사한 출력을 받아야 하며 두 노드에서 동일해야 합니다:

    1024 SHA256:FEZX2jQa2bcsd/fn/uxBzxhKdx4Imc4raXrHwsbtP0M root@serverhostname (DSA)
    256 SHA256:uw98R35Uf+fYEQ/UnJD9Br4NXUFPv7JAUln5uHlgSeY root@serverhostname (ECDSA)
    256 SHA256:sqOUWcraZQKd89y/QQv/iynPTOGQxcOTIXU/LsoPmnM root@serverhostname (ED25519)
    2048 SHA256:qwa+rgir2Oy86QI+PZi/QVR+MSmrdrpsuH7YyKknC+s root@serverhostname (RSA)
    
  6. 기존 개인 키에 대한 올바른 공개 키가 있는지 확인합니다:

    # This will print the fingerprint for private keys:
    for file in <ssh_host_key_path>/ssh_host_*_key; do ssh-keygen -lf $file; done
    
    # This will print the fingerprint for public keys:
    for file in <ssh_host_key_path>/ssh_host_*_key.pub; do ssh-keygen -lf $file; done
    

    [!note] 개인 키 및 공개 키 명령의 출력은 동일한 지문을 생성해야 합니다.

  7. 보조 사이트의 각 Rails 노드에서 OpenSSH의 경우 sshd 또는 gitlab-sshd 서비스를 재시작합니다:

    • OpenSSH의 경우:

      # Debian or Ubuntu installations
      sudo service ssh reload
      
      # CentOS installations
      sudo service sshd reload
      
    • gitlab-sshd의 경우:

      sudo gitlab-ctl restart gitlab-sshd
      
  8. SSH가 여전히 작동하는지 확인합니다.

    새 터미널에서 GitLab 보조 서버에 SSH 접속합니다. 연결할 수 없는 경우 이전 단계에 따라 권한이 올바른지 확인합니다.

3단계. 보조 사이트 추가#

  1. 보조 사이트의 각 Rails 및 Sidekiq 노드에 SSH 접속하고 root로 로그인합니다:

    sudo -i
    
  2. /etc/gitlab/gitlab.rb를 편집하고 사이트에 대한 고유한 이름을 추가합니다. 다음 단계에서 필요합니다:

    ##
    ## The unique identifier for the Geo site. See
    ## https://docs.gitlab.com/administration/geo_sites/#common-settings
    ##
    gitlab_rails['geo_node_name'] = '<site_name_here>'
    
  3. 변경 사항이 적용되도록 보조 사이트의 각 Rails 및 Sidekiq 노드를 재구성합니다:

    gitlab-ctl reconfigure
    
  4. 기본 노드 GitLab 인스턴스로 이동합니다:

    1. 오른쪽 상단 모서리에서 Admin을 선택합니다.
    2. 왼쪽 사이드바에서 Geo > Sites를 선택합니다.
    3. Add site를 선택합니다. Geo 구성 인터페이스에서 보조 사이트 추가
    4. Name/etc/gitlab/gitlab.rbgitlab_rails['geo_node_name'] 값을 입력합니다. 이 값은 문자 단위로 정확히 일치해야 합니다.
    5. External URL/etc/gitlab/gitlab.rbexternal_url 값을 입력합니다. 이 값은 항상 일치해야 하지만, 하나가 /로 끝나고 다른 하나가 그렇지 않아도 상관없습니다.
    6. 선택 사항. **Internal URL (optional)**에 보조 사이트의 내부 URL을 입력합니다.
    7. 선택 사항. 보조 사이트에서 복제할 그룹 또는 스토리지 샤드를 선택합니다. 비워두면 모두 복제합니다. 자세한 내용은 선택적 동기화를 참조하세요.
    8. Save changes를 선택하여 보조 사이트를 추가합니다.
  5. 보조 사이트의 각 Rails, Sidekiq 노드에 SSH 접속하고 서비스를 재시작합니다:

    gitlab-ctl restart
    

    다음을 실행하여 Geo 설정에 일반적인 문제가 있는지 확인합니다:

    gitlab-rake gitlab:geo:check
    

    검사가 실패하면 문제 해결 문서를 확인합니다.

  6. 기본 사이트의 Rails 또는 Sidekiq 서버에 SSH 접속하고 root로 로그인하여 보조 사이트에 접근 가능한지 또는 Geo 설정에 일반적인 문제가 있는지 확인합니다:

    gitlab-rake gitlab:geo:check
    

    검사가 실패하면 문제 해결 문서를 확인합니다.

보조 사이트가 Geo 관리 페이지에 추가되고 재시작된 후, 사이트는 백필이라고 알려진 프로세스에서 기본 사이트의 누락된 데이터를 자동으로 복제하기 시작합니다. 한편, 기본 사이트는 모든 변경 사항을 각 보조 사이트에 알리기 시작하여 보조 사이트가 해당 알림에 즉시 행동할 수 있도록 합니다.

보조 사이트가 실행 중이고 접근 가능한지 확인합니다. 기본 사이트에 사용된 것과 동일한 자격 증명으로 보조 사이트에 로그인할 수 있습니다.

허용된 ActionCable 원본으로 기본 및 보조 URL 추가#

이 단계를 통해 기본 및 보조 사이트에서 WebSocket이 원활하게 작동합니다.

  1. 사이트(기본 및 보조)의 외부 URL을 수집합니다. 위 섹션에서 언급한 대로 Admin 영역의 사이트 페이지에서 찾을 수 있습니다.

  2. 기본 사이트의 각 Rails 및 Sidekiq 노드에 SSH 접속하고 root로 로그인합니다:

    sudo -i
    
  3. /etc/gitlab/gitlab.rb를 편집하여 1단계에서 수집한 URL을 action_cable_allowed_origins 설정에 추가합니다:

    gitlab_rails['action_cable_allowed_origins'] = ['https://secondary.example.com', 'https://primary.example.com']
    
  4. 변경 사항을 적용하려면 각 Rails 및 Sidekiq 노드를 재구성하고 서비스를 재시작합니다:

    gitlab-ctl reconfigure
    gitlab-ctl restart
    

4단계. (선택 사항) 사용자 정의 인증서 사용#

다음 경우 이 단계를 안전하게 건너뛸 수 있습니다:

  • 기본 사이트가 공개 CA에서 발급한 HTTPS 인증서를 사용합니다.
  • 기본 사이트가 CA에서 발급한(자체 서명이 아닌) HTTPS 인증서로만 외부 서비스에 연결합니다.

인바운드 연결을 위한 사용자 정의 또는 자체 서명 인증서#

GitLab Geo 기본 사이트가 인바운드 HTTPS 연결을 보호하기 위해 사용자 정의 또는 자체 서명 인증서를 사용하는 경우 이는 단일 도메인 또는 다중 도메인 인증서일 수 있습니다.

인증서 유형에 따라 올바른 인증서를 설치합니다:

  • 기본 및 보조 사이트 도메인을 모두 포함하는 다중 도메인 인증서: 보조 사이트의 모든 Rails, Sidekiq, Gitaly 노드에서 /etc/gitlab/ssl에 인증서를 설치합니다.
  • 각 Geo 사이트 도메인에 특정한 인증서의 단일 도메인 인증서: 보조 사이트 도메인에 대한 유효한 인증서를 생성하고 다음 지침에 따라 보조 사이트의 모든 Rails, Sidekiq, Gitaly 노드에 /etc/gitlab/ssl에 설치합니다.

사용자 정의 인증서를 사용하는 외부 서비스에 연결#

외부 서비스의 자체 서명 인증서 복사본은 서비스에 대한 액세스가 필요한 모든 기본 사이트 노드의 신뢰 저장소에 추가해야 합니다.

보조 사이트가 동일한 외부 서비스에 액세스할 수 있으려면 이러한 인증서를 보조 사이트의 신뢰 저장소에 추가해야 합니다.

기본 사이트가 인바운드 HTTPS 연결을 위한 사용자 정의 또는 자체 서명 인증서를 사용하는 경우, 기본 사이트의 인증서를 보조 사이트의 신뢰 저장소에 추가해야 합니다:

  1. 보조 사이트의 각 Rails, Sidekiq, Gitaly 노드에 SSH 접속하고 root로 로그인합니다:

    sudo -i
    
  2. 기본 사이트에서 신뢰할 수 있는 인증서를 복사합니다:

    root 사용자를 사용하여 SSH 트래픽을 제공하는 기본 사이트의 노드 중 하나에 액세스할 수 있는 경우:

    scp root@<primary_site_node_fqdn>:/etc/gitlab/trusted-certs/* /etc/gitlab/trusted-certs
    

    sudo 권한이 있는 사용자를 통해서만 액세스할 수 있는 경우:

    # Run this from the node on your primary site:
    sudo tar --transform 's/.*\///g' -zcvf ~/geo-trusted-certs.tar.gz /etc/gitlab/trusted-certs/*
    
    # Run this on each node on your secondary site:
    scp <user_with_sudo>@<primary_site_node_fqdn>:geo-trusted-certs.tar.gz .
    tar zxvf ~/geo-trusted-certs.tar.gz -C /etc/gitlab/trusted-certs
    
  3. 보조 사이트의 업데이트된 각 Rails, Sidekiq, Gitaly 노드를 재구성합니다:

    sudo gitlab-ctl reconfigure
    

5단계. 보조 사이트의 올바른 기능 확인#

기본 사이트에 사용한 것과 동일한 자격 증명으로 보조 사이트에 로그인할 수 있습니다. 로그인 후:

  1. 오른쪽 상단 모서리에서 Admin을 선택합니다.
  2. 왼쪽 사이드바에서 Geo > Sites를 선택합니다.
  3. 보조 Geo 사이트로 올바르게 식별되는지, Geo가 활성화되어 있는지 확인합니다.

초기 복제에는 시간이 걸릴 수 있습니다. 사이트 상태 또는 '백필'은 여전히 진행 중일 수 있습니다. 브라우저의 기본 사이트 Geo Sites 대시보드에서 각 Geo 사이트의 동기화 프로세스를 모니터링할 수 있습니다.

보조 사이트의 Geo 대시보드

설치가 제대로 작동하지 않으면 문제 해결 문서를 확인합니다.

대시보드에서 나타날 수 있는 두 가지 가장 명백한 문제는 다음과 같습니다:

  1. 데이터베이스 복제가 잘 작동하지 않음.
  2. 인스턴스 간 알림이 작동하지 않음. 이 경우 다음 중 하나일 수 있습니다:
    • 사용자 정의 인증서 또는 사용자 정의 CA를 사용하고 있습니다(문제 해결 문서 참조).
    • 인스턴스가 방화벽 처리되어 있습니다(방화벽 규칙 확인).

보조 사이트를 비활성화하면 동기화 프로세스가 중지됩니다.

여러 리포지토리 샤드에 대해 기본 사이트에서 리포지토리 스토리지가 사용자 정의된 경우 각 보조 사이트에서 동일한 구성을 복제해야 합니다.

사용자에게 Geo 사이트 사용 가이드를 안내합니다.

현재 동기화되는 항목:

  • Git 리포지토리.
  • Wiki.
  • LFS 객체.
  • 이슈, 머지 리퀘스트, 스니펫, 댓글 첨부 파일.
  • 사용자, 그룹, 프로젝트 아바타.

문제 해결#

문제 해결 문서를 참조하세요.