외부 PostgreSQL 인스턴스를 사용한 Geo
이 문서는 Linux 패키지로 관리되지 않는 PostgreSQL 인스턴스를 사용하는 경우에 관련됩니다. 이는 클라우드 관리형 인스턴스, 또는 매뉴얼으로 설치하고 구성한 PostgreSQL 인스턴스를 포함합니다.
Geo 사이트를 다시 구축해야 할 경우 버전 불일치를 피하기 위하여 Linux 패키지가 제공하는 PostgreSQL 버전 중 하나를 사용하는지 확인하세요.
기본 사이트
-
기본 사이트의 Rails 노드에 SSH로 root로 로그인하세요:
sudo -i
-
/etc/gitlab/gitlab.rb
파일을 편집하고 다음을 추가하세요:## ## Geo 기본 역할 ## - 종속 플래그를 자동으로 구성하여 Geo를 활성화합니다. ## roles ['geo_primary_role'] ## ## Geo 사이트에 대한 고유 식별자. 자세한 내용은 ## https://docs.gitlab.com/ee/administration/geo_sites.html#common-settings를 참조하세요. ## gitlab_rails['geo_node_name'] = '<사이트_이름_여기에>'
-
변경 사항이 적용되려면 Rails 노드를 다시 구성하세요:
gitlab-ctl reconfigure
-
다음 명령을 Rails 노드에서 실행하여 사이트를 기본 사이트로 정의하세요:
gitlab-ctl set-geo-primary-node
이 명령은
/etc/gitlab/gitlab.rb
에서 정의된external_url
을 사용합니다.
외부 데이터베이스를 복제하도록 구성
외부 데이터베이스를 설정하는 방법은 다음 중 하나를 선택할 수 있습니다:
- 직접 스트리밍 복제를 설정합니다(예: Amazon RDS 또는 Linux 패키지로 관리되지 않는 베어 메탈).
- Linux 패키지 설치를 매뉴얼으로 구성합니다.
클라우드 제공 업체의 도구를 활용하여 기본 데이터베이스를 복제하세요
AWS EC2에서 RDS를 사용하는 기본 사이트가 설정되어 있다고 가정합니다. 이제 다른 지역에서 읽기 전용 레플리카를 만들면 AWS에서 복제 프로세스가 관리됩니다. 보안 그룹, 서브넷 및 네트워크 ACL을 필요에 따라 설정하여 보조 Rails 노드가 데이터베이스에 액세스할 수 있도록 하세요.
다음 지침은 일반적인 클라우드 공급 업체의 읽기 전용 레플리카를 만드는 방법에 대해 설명합니다:
- Amazon RDS - 읽기 전용 레플리카 만들기
- Azure Database for PostgreSQL - Azure Database for PostgreSQL에서 읽기 전용 레플리카 생성 및 관리
- Google Cloud SQL - 읽기 전용 레플리카 만들기
읽기 전용 레플리카가 설정되면 보조 사이트를 구성할 수 있습니다.
기본 데이터베이스를 매뉴얼으로 구성
geo_primary_role
는 기본 노드의 데이터베이스를 pg_hba.conf
및 postgresql.conf
를 변경하여 복제하도록 설정합니다. 외부 데이터베이스 구성을 위해 다음 구성을 매뉴얼으로 변경하고 이후에 PostgreSQL을 다시 시작하여 변경 사항이 적용되도록하세요:
##
## Geo 기본 역할
## - pg_hba.conf
##
host all all <신뢰할 수 있는 기본 IP>/32 md5
host replication gitlab_replicator <신뢰할 수 있는 기본 IP>/32 md5
host all all <신뢰할 수 있는 보조 IP>/32 md5
host replication gitlab_replicator <신뢰할 수 있는 보조 IP>/32 md5
##
## Geo 기본 역할
## - postgresql.conf
##
wal_level = hot_standby
max_wal_senders = 10
wal_keep_segments = 50
max_replication_slots = 1 # 보조 인스턴스 수
hot_standby = on
보조 사이트
복제 데이터베이스를 매뉴얼으로 구성
외부 레플리카 데이터베이스의 pg_hba.conf
및 postgresql.conf
를 매뉴얼으로 다음과 같이 변경하고 이후에 PostgreSQL을 다시 시작하여 변경 사항이 적용되도록하세요:
##
## Geo 보조 역할
## - pg_hba.conf
##
host all all <신뢰할 수 있는 보조 IP>/32 md5
host replication gitlab_replicator <신뢰할 수 있는 보조 IP>/32 md5
host all all <신뢰할 수 있는 기본 IP>/24 md5
##
## Geo 보조 역할
## - postgresql.conf
##
wal_level = hot_standby
max_wal_senders = 10
wal_keep_segments = 10
hot_standby = on
보조 사이트를 외부 읽기 전용 레플리카로 구성하세요
Linux 패키지 설치에서 geo_secondary_role
는 다음과 같은 세 가지 주요 기능을 갖습니다:
- 복제 데이터베이스 구성
- 트래킹 데이터베이스 구성
- Geo Log Cursor 활성화 (이 섹션에서 다루지 않음)
외부 읽기 전용 레플리카 데이터베이스에 대한 연결을 구성하고 로그 커서를 활성화하려면:
-
보조 사이트의 각 Rails, Sidekiq 및 Geo Log Cursor 노드로 SSH하여 root로 로그인하세요:
sudo -i
-
/etc/gitlab/gitlab.rb
파일을 편집하고 다음을 추가하세요:## ## Geo 보조 역할 ## - 종속 플래그를 자동으로 구성하여 Geo를 활성화합니다. ## roles ['geo_secondary_role'] # 이것은 두 데이터베이스 간에 공유됩니다. # 두 데이터베이스에 동일한 암호를 정의하세요. gitlab_rails['db_password'] = '<여기_기본_데이터베이스_암호_입력하세요>' gitlab_rails['db_username'] = 'gitlab' gitlab_rails['db_host'] = '<데이터베이스_읽기_레플리카_호스트>' # 번들된 Omnibus PostgreSQL은 비활성화합니다. # 외부 PostgreSQL을 사용하기 때문입니다. postgresql['enable'] = false
-
파일을 저장하고 GitLab을 다시 구성합니다
트래킹 데이터베이스 구성
보조 사이트는 복제 상태를 추적하고 잠재적인 복제 문제에서 자동으로 복구하기 위해 별도의 PostgreSQL 설치를 트래킹 데이터베이스로 사용합니다. Linux 패키지는 roles ['geo_secondary_role']
를 설정하면 자동으로 트래킹 데이터베이스를 구성합니다.
Linux 패키지 설치 외부에서 이 데이터베이스를 실행하려면 다음 지침을 사용하세요.
클라우드 관리형 데이터베이스 서비스
트래킹 데이터베이스에 클라우드 관리형 서비스를 사용하는 경우 트래킹 데이터베이스 사용자에게 추가 역할을 부여해야 할 수 있습니다(기본적으로 gitlab_geo
입니다):
- Amazon RDS에서는
rds_superuser
역할이 필요합니다. - Azure Database for PostgreSQL에서는
azure_pg_admin
역할이 필요합니다. - Google Cloud SQL에서는
cloudsqlsuperuser
역할이 필요합니다.
이것은 설치 및 업그레이드 중에 확장을 설치하는 것과 관련이 있습니다. 대안으로, 확장을 매뉴얼으로 설치하고 나중에 GitLab 업그레이드 중에 나타날 수 있는 문제에 대해 알아보세요.
추적 데이터베이스 생성
귀하의 PostgreSQL 인스턴스에 추적 데이터베이스를 생성하고 구성하세요:
- 데이터베이스 요구 사항 문서에 따라 PostgreSQL을 설정합니다.
-
gitlab_geo
사용자를 설정하고 패스워드를 선택하여gitlabhq_geo_production
데이터베이스를 만들고, 해당 사용자를 데이터베이스의 소유자로 지정하세요. 이 설정에 대한 예시는 자체 컴파일 설치 문서에서 확인할 수 있습니다. -
클라우드 관리형 PostgreSQL 데이터베이스를 사용하지 않는 경우, 보조 사이트가 추적 데이터베이스와 매뉴얼으로 통신할 수 있도록
pg_hba.conf
를 변경하세요. 변경 사항이 적용되려면 PostgreSQL을 재시작해야 합니다:## ## Geo 추적 데이터베이스 역할 ## - pg_hba.conf ## host all all <trusted tracking IP>/32 md5 host all all <trusted secondary IP>/32 md5
GitLab 구성
GitLab을 이 데이터베이스를 사용하도록 구성하세요. 이 단계는 리눅스 패키지 및 도커 배포용입니다.
-
GitLab 보조 서버에 SSH로 로그인하세요.
sudo -i
-
PostgreSQL 인스턴스가 있는 컴퓨터 연결 매개변수와 자격 증명을
/etc/gitlab/gitlab.rb
파일에서 편집하세요.geo_secondary['db_username'] = 'gitlab_geo' geo_secondary['db_password'] = '<your_tracking_db_password_here>' geo_secondary['db_host'] = '<tracking_database_host>' geo_secondary['db_port'] = <tracking_database_port> # 올바른 포트로 변경 geo_postgresql['enable'] = false # 내부 관리형 인스턴스를 사용하지 않음
-
파일을 저장하고 GitLab 재구성을 수행하세요.
데이터베이스 스키마 설정
리눅스 패키지 및 도커 배포용으로 위의 단계에서의 재구성은 이러한 단계를 자동으로 처리해야 합니다.
-
이 작업은 데이터베이스 스키마를 생성합니다. 데이터베이스 사용자가 슈퍼유저여야 합니다.
sudo gitlab-rake db:create:geo
-
Rails 데이터베이스 마이그레이션(스키마 및 데이터 업데이트)은 재구성에 의해 수행됩니다.
geo_secondary['auto_migrate'] = false
로 설정되어 있거나 스키마가 매뉴얼으로 생성된 경우, 이 단계가 필요합니다:sudo gitlab-rake db:migrate:geo