다중 노드/HA 배포
한 번에 하나의 부 릴리스만 업그레이드할 수 있습니다. 따라서 13.6에서 13.7로, 13.8에서는 아닙니다. 부 릴리스를 두 개 이상 시도하면 업그레이드가 실패할 수 있습니다.
웹(Puma) 노드 앞에서 로드 밸런서 사용
Puma를 사용하면 단일 노드 제로 다운타임 업데이트가 더 이상 불가능합니다. 다운타임 없는 업데이트로 HA를 달성하려면 두 노드에 연결을 적절하게 분배하는 로드 밸런서와 함께 최소 두 개의 노드를 사용해야 합니다.
애플리케이션 노드 앞의 로드 밸런서는 서비스가 트래픽을 수락하는지 여부를 확인하기 위해 적절한 상태 확인 엔드포인트를 확인하도록 구성되어야 합니다. Puma의 경우 /-/readiness엔드포인트를 사용해야 하며 /readinessSidekiq 및 기타 서비스에는 엔드포인트를 사용할 수 있습니다.
웹(Puma) 노드의 업그레이드는 하나 이상의 노드가 항상 트래픽을 처리할 수 있도록 롤링 방식으로 수행되어야 합니다. 이는 제로 다운타임을 보장하기 위해 필요합니다.
Puma는 업그레이드의 일부로 블랙아웃 기간에 들어갑니다. 이 기간 동안 노드는 계속 연결을 수락하지만 해당 상태 확인 엔드포인트를 비정상으로 표시합니다. 이를 본 로드 밸런서는 이들을 정상적으로 연결 해제해야 합니다.
현재 처리 중인 모든 요청을 완료한 후에만 Puma가 다시 시작됩니다. 이는 데이터 및 서비스 무결성을 보장합니다. 다시 시작되면 상태 확인 엔드포인트가 정상으로 표시됩니다.
로드 밸런서를 사용하여 HA 인스턴스를 최신 GitLab 버전으로 업데이트하려면 다음 순서로 노드를 업데이트해야 합니다.
- 하나의 애플리케이션 노드를 배포 노드로 선택하고 다음 단계를 완료하십시오.
- 에 빈 파일을 만듭니다 /etc/gitlab/skip-auto-reconfigure. 이렇게 하면 gitlab-ctl reconfigure기본적으로 GitLab을 자동으로 중지하고, 모든 데이터베이스 마이그레이션을 실행하고, GitLab을 다시 시작하는 업그레이드가 실행되지 않습니다.
-
sudo touch /etc/gitlab/skip-auto-reconfigure
- GitLab 패키지를 업데이트합니다.Community Edition 사용자인 경우 위 명령에서 로 바꿉니다 gitlab-ee. gitlab-ce
-
# Debian/Ubuntu sudo apt-get update && sudo apt-get install gitlab-ee # Centos/RHEL sudo yum install gitlab-ee
- 정기적인 마이그레이션과 최신 코드를 제자리에 두십시오. 이 단계를 실행하기 전에 배포 노드의 /etc/gitlab/gitlab.rb구성 파일이 gitlab_rails['auto_migrate'] = true정기적인 마이그레이션을 허용해야 합니다.
-
sudo SKIP_POST_DEPLOYMENT_MIGRATIONS=true gitlab-ctl reconfigure
- 서비스가 최신 코드를 사용하는지 확인합니다.
-
sudo gitlab-ctl hup puma sudo gitlab-ctl restart sidekiq
- 다른 Puma/Sidekiq 노드에서 다음 단계를 차례로 완료하십시오. 다음 노드로 진행하기 전에 항상 이러한 노드 중 하나 이상이 작동 및 실행 중이고 로드 밸런서에 연결되어 있는지 확인하십시오.
- GitLab 패키지를 업데이트하고 패키지의 reconfigure일부로 실행 되는지 확인 하십시오. 그렇지 않은 경우( /etc/gitlab/skip-auto-reconfigure파일이 있기 때문에 ) sudo gitlab-ctl reconfigure수동으로 실행 합니다.
- 서비스가 최신 코드를 사용하는지 확인:
-
sudo gitlab-ctl hup puma sudo gitlab-ctl restart sidekiq
- 배포 노드에서 배포 후 마이그레이션을 실행합니다.
-
sudo gitlab-rake db:migrate
지탈리 클러스터
Gitaly Cluster 는 Gitaly와 Praefect 구성 요소를 사용하여 구축됩니다. 애플리케이션의 나머지 부분과 별개로 자체 PostgreSQL 데이터베이스가 있습니다.
메인 애플리케이션을 업데이트하기 전에 Praefect를 업데이트해야 합니다. Praefect 노드 중 하나를 Praefect 배포 노드로 선택하십시오. 여기에서 새로운 Omnibus 패키지를 먼저 설치하고 데이터베이스 마이그레이션을 실행합니다.
Praefect 배포 노드
- 에 빈 파일을 만듭니다 /etc/gitlab/skip-auto-reconfigure. 이렇게 하면 gitlab-ctl reconfigure기본적으로 GitLab을 자동으로 중지하고, 모든 데이터베이스 마이그레이션을 실행하고, GitLab을 다시 시작하는 업그레이드가 실행되지 않습니다.
-
sudo touch /etc/gitlab/skip-auto-reconfigure
- praefect['auto_migrate'] = true에 설정되어 있는지 확인하십시오 ./etc/gitlab/gitlab.rb
Praefect 배포 노드 를 제외한 모든 Praefect 노드
- reconfigure데이터베이스 마이그레이션이 자동으로 실행 되지 않도록 하려면 praefect['auto_migrate'] = false이 에 설정되어 있는지 확인 /etc/gitlab/gitlab.rb하십시오.
Praefect 배포 노드
- GitLab 패키지를 업데이트합니다.Community Edition 사용자인 경우 위 명령에서 로 바꿉니다 gitlab-ee.gitlab-ce
-
# Debian/Ubuntu sudo apt-get update && sudo apt-get install gitlab-ee # Centos/RHEL sudo yum install gitlab-ee
- Praefect 데이터베이스 마이그레이션을 적용하고 Praefect를 다시 시작하려면 다음을 실행하십시오.
-
sudo gitlab-ctl reconfigure
Praefect 배포 노드 를 제외한 모든 Praefect 노드
- GitLab 패키지를 업데이트합니다.Community Edition 사용자인 경우 위 명령에서 로 바꿉니다 gitlab-ee.gitlab-ce
-
sudo apt-get update && sudo apt-get install gitlab-ee
- 노드가 최신 코드를 실행 중인지 확인하십시오.
-
sudo gitlab-ctl reconfigure
'GitLab_가이드' 카테고리의 다른 글
Redis HA 사용(Sentinel 사용) (0) | 2022.08.02 |
---|---|
PostgreSQL HA 사용 (0) | 2022.08.02 |
다운타임 없는 업그레이드 (0) | 2022.08.01 |
소스에서 Community Edition 및 Enterprise Edition 업그레이드 (0) | 2022.08.01 |
비 Omnibus 설치에서 Omnibus 설치로 업그레이드 (0) | 2022.08.01 |