InfoGrab DocsInfoGrab Docs

데이터베이스 로드 밸런싱

데이터베이스 로드 밸런싱에 대해 설명합니다.

데이터베이스 로드 밸런싱을 사용하면 읽기 쿼리가 여러 PostgreSQL 노드에 분산되어 성능이 향상되고 기본 데이터베이스의 부하가 줄어듭니다. 쓰기 작업은 항상 기본에서 실행됩니다. GitLab은 외부 로드 밸런서 없이 쿼리 라우팅을 자동으로 처리합니다. 요구 사항 # 데이터베이스 로드 밸런싱을 활성화하려면: PostgreSQL에 기본을 복제하는 하나 이상의 보조 노드가 있어야 합니다. 각 노드가 동일한 포트와 동일한 자격 증명으로 접근 가능해야 합니다. 외부 데이터베이스 서비스의 경우 db_load_balancing 구성만 필요합니다. 연결 풀링은 대규모에서 연결 수를 관리하는 데 도움이 될 수 있지만, 올바른 접근 방식은 공급자에 따라 다르며 이 가이드의 범위를 벗어납니다. 연결 관리 지침은 연결 관리 를 참조하세요. Note AWS RDS Proxy 는 GitLab에서 사용하도록 검증되지 않았습니다. Linux 패키지 설치의 경우 데이터베이스 로드 밸런싱을 활성화하기 전에 다중 노드 HA PostgreSQL을 구성해야 합니다. 자세한 내용은 다중 노드 설정 구성 을 참조하세요. 복제본 수 # 복제본 수에는 제한이 없습니다. 실제로는 특히 세 개의 가용 영역에 분산된 환경에서 세 개가 일반적인 시작점입니다. Consul 및 Redis Sentinel을 포함한 여러 GitLab 구성 요소는 정족수(quorum)에 의존하며 홀수 개의 노드를 필요로 합니다. 데이터베이스 복제본 수를 이 패턴에 맞추면 아키텍처가 더 일관되고, 재해 복구 커버리지가 향상되며, 단일 가용 영역 장애의 영향이 제한됩니다. 규모가 작은 환경은 두 개의 복제본으로 시작하여 부하가 증가함에 따라 더 추가할 수 있습니다. 규모별 지침은 참조 아키텍처 문서 를 참조하세요. 데이터베이스 로드 밸런싱 구성 # 데이터베이스 로드 밸런싱은 다음 두 가지 방법 중 하나로 구성할 수 있습니다: 호스트 : PostgreSQL 호스트의 정적 목록. 구성이 더 간단하며 대부분의 환경에 적합합니다. 서비스 디스커버리 : PostgreSQL 호스트 목록을 반환하는 DNS 레코드. Consul을 사용하는 Linux 패키지 HA 설정처럼 복제본 목록이 동적으로 변경될 때 사용합니다. 호스트 # 호스트 목록에 기본을 포함하는 것은 선택 사항입니다. 포함하면 기본이 복제본과 함께 읽기 쿼리의 대상이 되어 보조 서버의 전체 부하가 줄어듭니다. 기본이 이미 지속적으로 높은 부하를 받고 있다면 제외하여 쓰기용 용량을 확보할 수 있습니다. 기본은 이 목록에 포함되는지 여부와 상관없이 항상 쓰기 쿼리를 처리합니다. 호스트 목록을 구성하려면 균형을 조정하려는 각 환경의 모든 GitLab Rails 및 Sidekiq 노드에서 다음 단계를 수행합니다: /etc/gitlab/gitlab.rb 파일을 편집합니다. gitlab_rails['db_load_balancing'] 에서 균형을 조정할 데이터베이스 호스트 배열을 만듭니다. 예를 들어 primary.example.com , secondary1.example.