GitLab_가이드

Geo를 사용한 다중 노드/HA 배포

구일칠구 2022. 8. 2. 12:27

Geo를 사용한 다중 노드/HA 배포

이 섹션에서는 Geo로 다중 노드/HA 배포를 업그레이드하는 데 필요한 단계를 설명합니다. 특정 노드에서 일부 단계를 수행해야 합니다. 이 노드는 "배포 노드"로 알려져 있으며 다음 지침을 통해 표시됩니다.

업데이트는 다음 순서로 수행해야 합니다.

  1. Geo 기본 다중 노드 배포를 업데이트합니다.
  2. Geo 보조 다중 노드 배포를 업데이트합니다.
  3. 배포 후 마이그레이션 및 확인.

1단계: 각 배포에 대해 "배포 노드" 선택

이제 다음을 선택해야 합니다.

  • Geo 기본 다중 노드 배포 에서 기본 "배포 노드" 로 사용하기 위한 하나의 인스턴스 .
  • 각 Geo 보조 다중 노드 배포 에서 보조 "배포 노드" 로 사용할 인스턴스 하나 .

geo-logcursor배포 노드는 Puma, Sidekiq 또는 데몬 을 실행하도록 구성해야 합니다 . 다운타임을 방지하려면 업데이트 중에 사용하지 않아야 합니다.

  • Puma를 실행하는 경우 로드 밸런서에서 배포 노드를 제거합니다.
  • Sidekiq를 실행하는 경우 배포 노드가 작업을 처리하고 있지 않은지 확인합니다.
  • sudo gitlab-ctl stop sidekiq
          
  • 데몬을 실행하는 경우 geo-logcursor배포 노드가 이벤트를 처리하지 않는지 확인합니다.
  • sudo gitlab-ctl stop geo-logcursor
          

제로 다운타임을 위해 Puma, Sidekiq 및 geo-logcursor업데이트 중에 다른 노드에서 실행 중이어야 합니다.

2단계: Geo 기본 다중 노드 배포 업데이트

기본 "배포 노드" 를 포함한 모든 기본 노드 에서

  1. 에 빈 파일을 만듭니다 /etc/gitlab/skip-auto-reconfigure. 이렇게 하면 gitlab-ctl reconfigure기본적으로 GitLab을 자동으로 중지하고, 모든 데이터베이스 마이그레이션을 실행하고, GitLab을 다시 시작하는 업그레이드가 실행되지 않습니다.
sudo touch /etc/gitlab/skip-auto-reconfigure
    
  1. reconfigure데이터베이스 마이그레이션이 자동으로 실행 되지 않도록 하려면 gitlab_rails['auto_migrate'] = false이 에 설정되어 있는지 확인 /etc/gitlab/gitlab.rb하십시오.
  2. 노드가 최신 코드를 실행 중인지 확인
  3. sudo gitlab-ctl reconfigure
          

기본 Gitaly 전용 노드에서

  1. GitLab 패키지 업데이트
  2. # Debian/Ubuntu
          sudo apt-get update && sudo apt-get install gitlab-ee
          
          # Centos/RHEL
          sudo yum install gitlab-ee
          
  3. 노드가 최신 코드를 실행 중인지 확인
  4. sudo gitlab-ctl reconfigure
          

기본 "배포 노드"에서

  1. GitLab 패키지 업데이트
  2. # Debian/Ubuntu
          sudo apt-get update && sudo apt-get install gitlab-ee
          
          # Centos/RHEL
          sudo yum install gitlab-ee
          
  3. PgBouncer를 사용하는 경우:Rails는 동일한 데이터베이스에서 동시 마이그레이션이 실행되는 것을 방지하기 위해 마이그레이션을 실행할 때 권고 잠금을 사용합니다. 이러한 잠금은 트랜잭션 간에 공유되지 않으므로 ActiveRecord::ConcurrentMigrationError 트랜잭션 풀링 모드에서 PgBouncer를 사용하여 데이터베이스 마이그레이션을 실행할 때 및 기타 문제가 발생합니다.
    sudo gitlab-ctl patroni members
            
    그런 다음 gitlab.rb배포 노드의 파일에서 데이터베이스 마스터의 호스트 및 포트로 gitlab_rails['db_host']업데이트 합니다.gitlab_rails['db_port']
  4. 마스터 노드를 찾으려면 데이터베이스 노드에서 다음을 실행합니다.
  5. 마이그레이션을 실행하기 전에 PgBouncer를 우회하고 데이터베이스 마스터에 직접 연결해야 합니다.
  6. 정기적인 데이터베이스 마이그레이션 및 최신 코드를 얻으려면 다음을 실행하십시오.
  7. sudo gitlab-ctl reconfigure
          sudo SKIP_POST_DEPLOYMENT_MIGRATIONS=true gitlab-rake db:migrate
          
  8. 이 배포 노드가 일반적으로 요청을 처리하거나 작업을 처리하는 데 사용되는 경우 이 시점에서 서비스로 되돌릴 수 있습니다.
    • 요청을 처리하려면 로드 밸런서에 배포 노드를 추가하십시오.
    • Sidekiq 작업을 다시 처리하려면 Sidekiq를 시작하십시오.
    • sudo gitlab-ctl start sidekiq
                

기본 "배포 노드" 를 제외한 모든 기본 노드 에서

  1. GitLab 패키지 업데이트
  2. # Debian/Ubuntu
          sudo apt-get update && sudo apt-get install gitlab-ee
          
          # Centos/RHEL
          sudo yum install gitlab-ee
          
  3. 노드가 최신 코드를 실행 중인지 확인
  4. sudo gitlab-ctl reconfigure
          

기본 "배포 노드" 를 포함 하여 Puma 또는 Sidekiq를 실행하는 모든 기본 노드 의 경우

핫 리로드 puma및 sidekiq서비스:

sudo gitlab-ctl hup puma
    sudo gitlab-ctl restart sidekiq
    

3단계: 각 Geo 보조 다중 노드 배포 업데이트

Geo 기본 다중 노드 배포 의 모든 단계를 성공적으로 완료한 경우에만 진행하십시오 .

보조 "배포 노드" 를 포함한 모든 보조 노드 에서

  1. 에 빈 파일을 만듭니다 /etc/gitlab/skip-auto-reconfigure. 이렇게 하면 gitlab-ctl reconfigure기본적으로 GitLab을 자동으로 중지하고, 모든 데이터베이스 마이그레이션을 실행하고, GitLab을 다시 시작하는 업그레이드가 실행되지 않습니다.
sudo touch /etc/gitlab/skip-auto-reconfigure
    
  1. reconfigure데이터베이스 마이그레이션이 자동으로 실행 되지 않도록 하려면 geo_secondary['auto_migrate'] = false이 에 설정되어 있는지 확인 /etc/gitlab/gitlab.rb하십시오.
  2. 노드가 최신 코드를 실행 중인지 확인
  3. sudo gitlab-ctl reconfigure
          

보조 Gitaly 전용 노드에서

  1. GitLab 패키지 업데이트
  2. # Debian/Ubuntu
          sudo apt-get update && sudo apt-get install gitlab-ee
          
          # Centos/RHEL
          sudo yum install gitlab-ee
          
  3. 노드가 최신 코드를 실행 중인지 확인
  4. sudo gitlab-ctl reconfigure
          

보조 "배포 노드"에서

  1. GitLab 패키지 업데이트
  2. # Debian/Ubuntu
          sudo apt-get update && sudo apt-get install gitlab-ee
          
          # Centos/RHEL
          sudo yum install gitlab-ee
          
  3. 정기적인 데이터베이스 마이그레이션 및 최신 코드를 얻으려면 다음을 실행하십시오.
  4. sudo gitlab-ctl reconfigure
          sudo SKIP_POST_DEPLOYMENT_MIGRATIONS=true gitlab-rake geo:db:migrate
          
  5. 이 배포 노드가 일반적으로 요청을 처리하거나 백그라운드 처리를 수행하는 데 사용되는 경우 이 시점에서 서비스로 되돌릴 수 있습니다.
    • 요청을 처리하려면 로드 밸런서에 배포 노드를 추가하십시오.
    • Sidekiq 작업을 다시 처리하려면 Sidekiq를 시작하십시오.
    • sudo gitlab-ctl start sidekiq
                
    • Geo 이벤트를 다시 처리하려면 geo-logcursor데몬 을 시작하십시오.
    • sudo gitlab-ctl start geo-logcursor
                

보조 "배포 노드" 를 제외한 모든 보조 노드 에서

  1. GitLab 패키지 업데이트
  2. # Debian/Ubuntu
          sudo apt-get update && sudo apt-get install gitlab-ee
          
          # Centos/RHEL
          sudo yum install gitlab-ee
          
  3. 노드가 최신 코드를 실행 중인지 확인
  4. sudo gitlab-ctl reconfigure
          

Puma, Sidekiq 또는 보조 "배포 노드" 를 포함한geo-logcursor 데몬 을 실행하는 모든 보조 노드의 경우

리로드 puma및 서비스: sidekiqgeo-logcursor

sudo gitlab-ctl hup puma
    sudo gitlab-ctl restart sidekiq
    sudo gitlab-ctl restart geo-logcursor
    

4단계: 배포 후 마이그레이션 및 확인 실행

기본 "배포 노드"에서

  1. 배포 후 데이터베이스 마이그레이션 실행:
  2. sudo gitlab-rake db:migrate
          
  3. 지리적 구성 및 종속성 확인
  4. sudo gitlab-rake gitlab:geo:check
          
  5. PgBouncer를 사용하는 경우:
    sudo gitlab-ctl reconfigure
            
  6. gitlab.rbPgBouncer를 다시 가리키도록 변경하고 다음을 실행합니다 .

모든 보조 "배포 노드"에서

  1. Geo 데이터베이스와 관련된 배포 후 데이터베이스 마이그레이션을 실행합니다.
  2. sudo gitlab-rake geo:db:migrate
          
  3. 지리적 구성 및 종속성 확인
  4. sudo gitlab-rake gitlab:geo:check
          
  5. 지역 상태 확인
  6. sudo gitlab-rake geo:status

'GitLab_가이드' 카테고리의 다른 글

FreeBSD에 GitLab Runner 설치  (0) 2022.08.02
컨테이너에서 GitLab Runner 실행  (0) 2022.08.02
Redis HA 사용(Sentinel 사용)  (0) 2022.08.02
PostgreSQL HA 사용  (0) 2022.08.02
다중 노드/HA 배포  (0) 2022.08.02