Infograb logo
데이터베이스 접근 고가용성 (HA)

Teleport 데이터베이스 서비스를 고가용성 (HA) 구성으로 배포할 수 있는 방법은 두 가지가 있으며, 두 방법 모두 여러 데이터베이스 서비스 인스턴스를 동일한 데이터베이스 인스턴스에 포인팅하는 방식을 사용합니다:

  • 동일한 동적 리소스 감시자를 가진 여러 데이터베이스 서비스 인스턴스를 배포합니다.
  • 동일한 데이터베이스 인스턴스를 프록시하도록 구성된 여러 데이터베이스 서비스 인스턴스를 배포합니다.

동적 리소스 감시자

여러 데이터베이스 서비스 복제를 구성하여 동일한 동적 db 리소스를 감시할 수 있습니다.

동적 리소스를 감시하도록 데이터베이스 서비스를 구성하려면 resources 구성에 labels 필드를 추가하십시오:

db_service:
  enabled: "yes"
  resources:
    - labels:
        "region": "us-east-1"

동적 db 리소스를 생성하면, 해당 db 리소스의 레이블을 감시하도록 구성된 모든 데이터베이스 서비스 복제본이 해당 데이터베이스 인스턴스를 프록시합니다. 예를 들어, 위의 db_service 구성은 데이터베이스 서비스에게 region:us-east-1 레이블을 가진 모든 db 리소스를 프록시하도록 지시합니다.

연결 시 Teleport는 부하 균형을 제공하기 위해 무작위로 데이터베이스 서비스 인스턴스를 선택합니다. 선택된 인스턴스가 다운된 경우(예: 데이터 센터 장애 발생 시), Teleport는 다른 인스턴스를 통해 연결을 시도합니다.

동적 데이터베이스 리소스 설정에 대한 정보는 동적 데이터베이스 등록을 참조하십시오.

정적 데이터베이스 서비스 구성

데이터베이스 서비스의 정적 구성을 사용하여 데이터베이스 인스턴스에 연결하도록 데이터베이스 서비스 복제를 명시적으로 구성할 수 있습니다. 이 접근 방식은 Teleport를 통해 프록시할 데이터베이스가 시간이 지남에 따라 안정적일 것으로 예상되는 경우에 유용합니다.

정적 구성을 사용하여 데이터베이스 서비스를 고가용성으로 배포하는 두 가지 접근 방식이 있으며, 아래에서 설명하겠습니다:

  • 결합된 복제본: Teleport는 데이터베이스 트래픽을 데이터베이스 서비스 복제본에서 부하 균형을 합니다.
  • 별도의 복제본: 클라이언트가 데이터베이스에 연결하는 데 사용할 에이전트를 선택합니다.

결합된 복제본

동일한 데이터베이스를 프록시하는 두 개의 데이터베이스 서비스가 있는 경우, 두 에이전트의 구성은 동일합니다:

# 두 에이전트에 대한 동일한 구성.
db_service:
  enabled: "yes"
  databases:
    - name: "postgres"
      protocol: "postgres"
      uri: "postgres.example.com:5432"

이 구성으로 tsh db ls 에서 데이터베이스에 대한 단일 항목만 표시됩니다:

tsh db ls

이름

--------

postgres


tsh db connect postgres

동적 리소스와 마찬가지로, Teleport는 데이터베이스에 연결할 때 무작위로 데이터베이스 서비스 인스턴스를 선택합니다.

별도의 복제본

별도의 복제본을 사용하면, 각 데이터베이스 서비스 인스턴스가 데이터베이스에 대해 서로 다른 이름을 할당합니다. 이를 통해 데이터베이스에 연결할 때 사용할 에이전트를 명시적으로 선택할 수 있습니다:

# 데이터베이스 서비스 인스턴스 #1.
db_service:
  enabled: "yes"
  databases:
    # 인스턴스 #2와 이름이 다르지만 URI는 동일합니다.
    - name: "postgres-us-east-1a"
      protocol: "postgres"
      uri: "postgres.example.com:5432"
# 데이터베이스 서비스 인스턴스 #2.
db_service:
  enabled: "yes"
  databases:
    # 인스턴스 #1과 이름이 다르지만 URI는 동일합니다.
    - name: "postgres-us-east-1b"
      protocol: "postgres"
      uri: "postgres.example.com:5432"

이 구성으로 두 서비스는 tsh db ls 출력에서 두 개의 개별 항목으로 나타나며, 연결할 때 하나를 명시적으로 선택해야 합니다:

tsh db ls

이름

-------------------

postgres-us-east-1a

postgres-us-east-1b


tsh db connect postgres-us-east-1a

이 접근 방식은 연결할 복제본을 선택하려는 경우에 유용합니다.

다음 단계

  • 연결하기 데이터베이스를 시작하세요.
  • Teleport 데이터베이스 서비스와 Teleport 에이전트에서 실행되는 기타 서비스의 아키텍처를 검토하세요.
Teleport 원문 보기