Geo를 사용한 다중 노드/HA 배포
이 섹션에서는 Geo로 다중 노드/HA 배포를 업그레이드하는 데 필요한 단계를 설명합니다. 특정 노드에서 일부 단계를 수행해야 합니다. 이 노드는 "배포 노드"로 알려져 있으며 다음 지침을 통해 표시됩니다.
업데이트는 다음 순서로 수행해야 합니다.
- Geo 기본 다중 노드 배포를 업데이트합니다.
- Geo 보조 다중 노드 배포를 업데이트합니다.
- 배포 후 마이그레이션 및 확인.
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 기본 다중 노드 배포 업데이트
기본 "배포 노드" 를 포함한 모든 기본 노드 에서
- 에 빈 파일을 만듭니다 /etc/gitlab/skip-auto-reconfigure. 이렇게 하면 gitlab-ctl reconfigure기본적으로 GitLab을 자동으로 중지하고, 모든 데이터베이스 마이그레이션을 실행하고, GitLab을 다시 시작하는 업그레이드가 실행되지 않습니다.
sudo touch /etc/gitlab/skip-auto-reconfigure
- reconfigure데이터베이스 마이그레이션이 자동으로 실행 되지 않도록 하려면 gitlab_rails['auto_migrate'] = false이 에 설정되어 있는지 확인 /etc/gitlab/gitlab.rb하십시오.
- 노드가 최신 코드를 실행 중인지 확인
-
sudo gitlab-ctl reconfigure
기본 Gitaly 전용 노드에서
- GitLab 패키지 업데이트
-
# Debian/Ubuntu sudo apt-get update && sudo apt-get install gitlab-ee # Centos/RHEL sudo yum install gitlab-ee
- 노드가 최신 코드를 실행 중인지 확인
-
sudo gitlab-ctl reconfigure
기본 "배포 노드"에서
- GitLab 패키지 업데이트
-
# Debian/Ubuntu sudo apt-get update && sudo apt-get install gitlab-ee # Centos/RHEL sudo yum install gitlab-ee
- PgBouncer를 사용하는 경우:Rails는 동일한 데이터베이스에서 동시 마이그레이션이 실행되는 것을 방지하기 위해 마이그레이션을 실행할 때 권고 잠금을 사용합니다. 이러한 잠금은 트랜잭션 간에 공유되지 않으므로 ActiveRecord::ConcurrentMigrationError 트랜잭션 풀링 모드에서 PgBouncer를 사용하여 데이터베이스 마이그레이션을 실행할 때 및 기타 문제가 발생합니다.
sudo gitlab-ctl patroni members
- 마스터 노드를 찾으려면 데이터베이스 노드에서 다음을 실행합니다.
- 마이그레이션을 실행하기 전에 PgBouncer를 우회하고 데이터베이스 마스터에 직접 연결해야 합니다.
- 정기적인 데이터베이스 마이그레이션 및 최신 코드를 얻으려면 다음을 실행하십시오.
-
sudo gitlab-ctl reconfigure sudo SKIP_POST_DEPLOYMENT_MIGRATIONS=true gitlab-rake db:migrate
- 이 배포 노드가 일반적으로 요청을 처리하거나 작업을 처리하는 데 사용되는 경우 이 시점에서 서비스로 되돌릴 수 있습니다.
- 요청을 처리하려면 로드 밸런서에 배포 노드를 추가하십시오.
- Sidekiq 작업을 다시 처리하려면 Sidekiq를 시작하십시오.
-
sudo gitlab-ctl start sidekiq
기본 "배포 노드" 를 제외한 모든 기본 노드 에서
- GitLab 패키지 업데이트
-
# Debian/Ubuntu sudo apt-get update && sudo apt-get install gitlab-ee # Centos/RHEL sudo yum install gitlab-ee
- 노드가 최신 코드를 실행 중인지 확인
-
sudo gitlab-ctl reconfigure
기본 "배포 노드" 를 포함 하여 Puma 또는 Sidekiq를 실행하는 모든 기본 노드 의 경우
핫 리로드 puma및 sidekiq서비스:
sudo gitlab-ctl hup puma
sudo gitlab-ctl restart sidekiq
3단계: 각 Geo 보조 다중 노드 배포 업데이트
Geo 기본 다중 노드 배포 의 모든 단계를 성공적으로 완료한 경우에만 진행하십시오 .
보조 "배포 노드" 를 포함한 모든 보조 노드 에서
- 에 빈 파일을 만듭니다 /etc/gitlab/skip-auto-reconfigure. 이렇게 하면 gitlab-ctl reconfigure기본적으로 GitLab을 자동으로 중지하고, 모든 데이터베이스 마이그레이션을 실행하고, GitLab을 다시 시작하는 업그레이드가 실행되지 않습니다.
sudo touch /etc/gitlab/skip-auto-reconfigure
- reconfigure데이터베이스 마이그레이션이 자동으로 실행 되지 않도록 하려면 geo_secondary['auto_migrate'] = false이 에 설정되어 있는지 확인 /etc/gitlab/gitlab.rb하십시오.
- 노드가 최신 코드를 실행 중인지 확인
-
sudo gitlab-ctl reconfigure
보조 Gitaly 전용 노드에서
- GitLab 패키지 업데이트
-
# Debian/Ubuntu sudo apt-get update && sudo apt-get install gitlab-ee # Centos/RHEL sudo yum install gitlab-ee
- 노드가 최신 코드를 실행 중인지 확인
-
sudo gitlab-ctl reconfigure
보조 "배포 노드"에서
- GitLab 패키지 업데이트
-
# Debian/Ubuntu sudo apt-get update && sudo apt-get install gitlab-ee # Centos/RHEL sudo yum install gitlab-ee
- 정기적인 데이터베이스 마이그레이션 및 최신 코드를 얻으려면 다음을 실행하십시오.
-
sudo gitlab-ctl reconfigure sudo SKIP_POST_DEPLOYMENT_MIGRATIONS=true gitlab-rake geo:db:migrate
- 이 배포 노드가 일반적으로 요청을 처리하거나 백그라운드 처리를 수행하는 데 사용되는 경우 이 시점에서 서비스로 되돌릴 수 있습니다.
- 요청을 처리하려면 로드 밸런서에 배포 노드를 추가하십시오.
- Sidekiq 작업을 다시 처리하려면 Sidekiq를 시작하십시오.
-
sudo gitlab-ctl start sidekiq
- Geo 이벤트를 다시 처리하려면 geo-logcursor데몬 을 시작하십시오.
-
sudo gitlab-ctl start geo-logcursor
보조 "배포 노드" 를 제외한 모든 보조 노드 에서
- GitLab 패키지 업데이트
-
# Debian/Ubuntu sudo apt-get update && sudo apt-get install gitlab-ee # Centos/RHEL sudo yum install gitlab-ee
- 노드가 최신 코드를 실행 중인지 확인
-
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단계: 배포 후 마이그레이션 및 확인 실행
기본 "배포 노드"에서
- 배포 후 데이터베이스 마이그레이션 실행:
-
sudo gitlab-rake db:migrate
- 지리적 구성 및 종속성 확인
-
sudo gitlab-rake gitlab:geo:check
- PgBouncer를 사용하는 경우:
sudo gitlab-ctl reconfigure
- gitlab.rbPgBouncer를 다시 가리키도록 변경하고 다음을 실행합니다 .
모든 보조 "배포 노드"에서
- Geo 데이터베이스와 관련된 배포 후 데이터베이스 마이그레이션을 실행합니다.
-
sudo gitlab-rake geo:db:migrate
- 지리적 구성 및 종속성 확인
-
sudo gitlab-rake gitlab:geo:check
- 지역 상태 확인
-
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 |