외부 PostgreSQL 인스턴스를 사용한 Geo
이 문서는 Linux 패키지로 관리되지 않는 PostgreSQL 인스턴스를 사용하는 경우에 관련됩니다. 이에는 클라우드 관리형 인스턴스, 또는 매뉴얼으로 설치 및 구성된 PostgreSQL 인스턴스가 포함됩니다.
Linux 패키지가 제공하는 PostgreSQL 버전 중 하나를 사용하여, Geo 사이트를 다시 구축해야 하는 경우에 버전 불일치를 피하십시오. (requirements-for-running-geo)
Primary 사이트
-
Primary 사이트의 **Rails 노드에 SSH로 로그인하고 루트로 전환하세요:
sudo -i
-
/etc/gitlab/gitlab.rb
파일을 편집하고 다음을 추가하세요:## ## Geo Primary role ## - configure dependent flags automatically to enable Geo ## roles ['geo_primary_role'] ## ## Geo 사이트의 고유 식별자. 자세한 내용은 ## https://docs.gitlab.com/ee/administration/geo_sites.html#common-settings ## gitlab_rails['geo_node_name'] = '<site_name_here>'
-
변경 사항이 적용되도록 Rails 노드를 다시 구성하세요:
gitlab-ctl reconfigure
-
정의된 사이트를 primary 사이트로 지정하려면 Rails 노드에서 아래 명령을 실행하세요:
gitlab-ctl set-geo-primary-node
이 명령은
/etc/gitlab/gitlab.rb
의 정의된external_url
을 사용합니다.
외부 데이터베이스를 복제하도록 설정하세요
외부 데이터베이스를 설정하기 위해, 다음 중 하나를 수행할 수 있습니다:
- 본인이 스트리밍 복제를 설정 (예: Amazon RDS 또는 Linux 패키지로 관리되지 않는 베어메탈).
- Linux 패키지 설치의 구성을 매뉴얼으로 수행하세요.
클라우드 제공업체의 도구를 활용하여 주 데이터베이스를 복제하세요
예를 들어 AWS EC2에 기본 사이트가 설정되어 있고 RDS를 사용하고 있다고 가정해봅시다. 다른 지역에 읽기 전용 레플리카를 만들고 복제 프로세스는 AWS에서 관리합니다. 보안 그룹, 서브넷 및 네트워크 ACL을 필요에 따라 설정하여, 별도의 지역에서 해당 데이터베이스에 접근할 수 있도록 하십시오.
다음 지침은 각 클라우드 제공업체에 대한 읽기 전용 레플리카를 만드는 방법을 상세히 설명합니다:
- Amazon RDS - Read Replica 만들기
- Azure Database for PostgreSQL - Azure Database for PostgreSQL에서 읽기 레플리카 만들고 관리하기
- Google Cloud SQL - 읽기 레플리카 만들기
읽기 전용 레플리카가 설정되면 secondary 사이트를 구성 할 수 있습니다.
주 데이터베이스를 매뉴얼으로 구성하세요
geo_primary_role
는 primary 노드의 데이터베이스를
pg_hba.conf
및 postgresql.conf
를 변경하여 복제되도록 구성합니다.
외부 데이터베이스 구성에 대한 다음 구성 변경을 매뉴얼으로하고, 변경 사항이 적용되도록 PostgreSQL을 재시작하세요:
##
## Geo Primary Role
## - pg_hba.conf
##
host all all <trusted primary IP>/32 md5
host replication gitlab_replicator <trusted primary IP>/32 md5
host all all <trusted secondary IP>/32 md5
host replication gitlab_replicator <trusted secondary IP>/32 md5
##
## Geo Primary Role
## - postgresql.conf
##
wal_level = hot_standby
max_wal_senders = 10
wal_keep_segments = 50
max_replication_slots = 1 # secondary 인스턴스 수
hot_standby = on
Secondary 사이트
매뉴얼으로 레플리카 데이터베이스 구성
외부 레플리카 데이터베이스의 pg_hba.conf
및 postgresql.conf
를 다음과 같이 매뉴얼으로 구성하고,
변경 사항이 적용되도록 PostgreSQL을 재시작하세요:
##
## Geo Secondary Role
## - pg_hba.conf
##
host all all <trusted secondary IP>/32 md5
host replication gitlab_replicator <trusted secondary IP>/32 md5
host all all <trusted primary IP>/24 md5
##
## Geo Secondary Role
## - postgresql.conf
##
wal_level = hot_standby
max_wal_senders = 10
wal_keep_segments = 10
hot_standby = on
Secondary 사이트를 외부 읽기 전용 레플리카 사용하도록 구성하세요
Linux 패키지 설치에서,
geo_secondary_role
에는 세 가지 주요 기능이 있습니다:
- 레플리카 데이터베이스 구성.
- 추적 데이터베이스 구성.
- Geo Log Cursor 활성화 (이 섹션에서 다루지 않음).
외부 읽기 전용 레플리카 데이터베이스에 연결하고 로그 커서를 활성화하려면:
-
Secondary 사이트의 각 Rails, Sidekiq 및 Geo Log Cursor 노드에 SSH로 로그인하고 루트로 전환하세요:
sudo -i
-
/etc/gitlab/gitlab.rb
파일을 편집하고 다음을 추가하세요:## ## Geo Secondary role ## - configure dependent flags automatically to enable Geo ## roles ['geo_secondary_role'] # 두 데이터베이스 모두에 공유되는 것임에 유의하십시오. 두 곳에서 동일한 암호를 정의해야 합니다. gitlab_rails['db_password'] = '<your_password_here>' gitlab_rails['db_username'] = 'gitlab' gitlab_rails['db_host'] = '<database_read_replica_host>' # 번들된 Omnibus PostgreSQL을 비활성화하십시오. 외부 PostgreSQL을 사용하므로 postgresql['enable'] = false
-
파일을 저장하고 GitLab을 다시 구성하십시오.
추적 데이터베이스 구성
Secondary 사이트는 복제 상태를 추적하고 잠재적인 복제 문제로부터 자동으로 복구하기 위해 별도의 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 Tracking Database Role ## - pg_hba.conf ## host all all <trusted tracking IP>/32 md5 host all all <trusted secondary IP>/32 md5
GitLab 구성
GitLab을 이 데이터베이스를 사용하도록 구성하세요. 이 단계는 Linux 패키지 및 Docker 배포용입니다.
-
GitLab secondary 서버로 SSH로 로그인하여 루트로 전환합니다:
sudo -i
-
PostgreSQL 인스턴스를 사용하는 연결 매개변수 및 자격 증명을 담은
/etc/gitlab/gitlab.rb
파일을 수정하세요:geo_secondary['db_username'] = 'gitlab_geo' geo_secondary['db_password'] = '<your_password_here>' geo_secondary['db_host'] = '<tracking_database_host>' geo_secondary['db_port'] = <tracking_database_port> # 올바른 포트로 변경하세요 geo_postgresql['enable'] = false # 내부 관리형 인스턴스를 사용하지 않음
-
파일을 저장하고 GitLab을 다시 구성하세요.
데이터베이스 스키마 설정
Linux 패키지 및 Docker 배포를 위한 위의 단계에서 reconfigure이 이 단계를 자동으로 처리해야합니다.
-
이 작업은 데이터베이스 사용자가 슈퍼 사용자 여야 합니다. 데이터베이스 스키마를 생성합니다.
sudo gitlab-rake db:create:geo
-
Rails 데이터베이스 마이그레이션(스키마 및 데이터 업데이트)을 다시 구성으로 수행합니다.
geo_secondary['auto_migrate'] = false
로 설정되어 있거나, 스키마가 매뉴얼으로 생성된 경우, 이 단계가 필요합니다.sudo gitlab-rake db:migrate:geo