고가용성 CockroachDB 클러스터 배치

CockroachDB는 일관된 트랜잭션 키-값 저장소에 구축된 분산 SQL 데이터베이스입니다.

구조

이 참조 아키텍처는 Oracle Cloud Infrastructure 컴퓨트 인스턴스에 CockroachDB의 일반적인 3노드 배치를 보여줍니다. 공용 로드 밸런서는 이러한 세 노드에 작업 로드를 분산시키는 데 사용됩니다.

다음 다이어그램은 이 참조 아키텍처를 보여 줍니다.

다음은 cockroachdb-oci.png에 대한 설명입니다.
cockroachdb-oci.png에 대한 설명
  • 영역

    Oracle Cloud Infrastructure 지역은 가용성 도메인이라고 하는 하나 이상의 데이터 센터를 포함하는 지역화된 지역입니다. 지역은 다른 지역과 독립적이며, 방대한 거리는 국가 또는 대륙에서 분리할 수 있습니다.

  • 가용성 도메인

    가용성 도메인은 영역 내의 독립적인 독립형 데이터 센터입니다. 각 가용성 도메인의 물리적 리소스는 결함 허용 한도를 제공하는 다른 가용성 도메인의 리소스와 격리됩니다. 가용성 도메인은 전원, 냉각 또는 내부 가용성 도메인 네트워크와 같은 인프라를 공유하지 않습니다. 따라서 한 가용성 도메인의 실패는 영역의 다른 가용성 도메인에 영향을 주지 않을 수 있습니다.

  • 결함 도메인

    결함 도메인은 가용성 도메인 내의 하드웨어와 기반구조를 그룹화한 것입니다. 각 가용성 도메인에는 독립적인 전원 및 하드웨어가 있는 3개의 장애 도메인이 있습니다. 여러 결함 도메인에 리소스를 배포할 경우 응용 프로그램에서 결함 도메인 내의 물리적 서버 오류, 시스템 유지 관리 및 전원 오류를 허용할 수 있습니다.

  • VCN(가상 클라우드 네트워크) 및 서브넷

    VCN는 Oracle Cloud Infrastructure 지역에서 설정하는 사용자정의 가능한 소프트웨어 정의 네트워크입니다. VCN은 기존의 데이터 센터 네트워크와 마찬가지로 네트워크 환경을 완벽하게 제어할 수 있습니다. VCN 에는 VCN를 생성한 후 변경할 수 있는 겹치지 않는 CIDR 블록이 여러 개 있을 수 있습니다. 영역 또는 가용성 도메인으로 범위를 지정할 수 있는 서브넷으로 VCN를 세그먼트화할 수 있습니다. 각 서브넷은 VCN의 다른 서브넷과 겹치지 않는 연속적인 주소 범위로 구성됩니다. 서브넷을 생성한 후 서브넷 크기를 변경할 수 있습니다. 서브넷은 공용 또는 전용일 수 있습니다.

    이 구조는 하나의 공용 서브넷을 사용하여 공용 로드 밸런서와 CockroachDB를 실행하는 세 개의 컴퓨트 인스턴스를 호스트합니다.

  • 로드 밸런서

    Oracle Cloud Infrastructure Load Balancing 서비스는 한 시작점에서 VCN에서 연결 가능한 여러 서버로 자동화된 트래픽 분배를 제공합니다. 이 아키텍처에는 TCP 포트 8080과 TCP 포트 26257에 대해 하나씩 두 개의 리스너가 있습니다. 로드 밸런서에는 이러한 두 리스너에 해당하는 두 개의 백엔드 집합도 있습니다.

  • 보안 목록

    각 서브넷에 대해 서브넷에서 허용되어야 하는 트래픽의 소스, 대상 및 유형을 지정하는 보안 규칙을 생성할 수 있습니다.

    이 아키텍처는 클라이언트가 HTTP 및 CockroachDB 리스너 트래픽에 액세스할 수 있도록 TCP 포트 8080및 26257에 대해 수신 규칙을 사용합니다.

권장 사항

요구 사항은 여기에 설명된 아키텍처와 다를 수 있습니다. 다음 권장 사항을 시작점으로 사용하십시오.

  • 컴퓨트 구성

    이 아키텍처는 VM.Standard. E3. Flex 컴퓨트 구성의 Oracle Linux 7 . 9 OS 이미지를 사용합니다. 응용 프로그램의 경우 메모리, 코어 또는 네트워크 대역폭이 더 필요한 경우 다른 구성을 선택할 수 있습니다.

  • VCN
    • VCN를 생성할 때 VCN의 서브넷에 연결할 리소스 수에 따라 필요한 CIDR 블록 수 및 각 블록 크기를 결정합니다. 표준 전용 IP 주소 공간 내에 있는 CIDR 블록을 사용합니다.

    • 개인 연결을 설정하려는 다른 네트워크(Oracle Cloud Infrastructure, 온프레미스 데이터 센터 또는 다른 클라우드 제공자) 와 겹치지 않는 CIDR 블록을 선택합니다.

    • VCN를 생성한 후 CIDR 블록을 변경, 추가 및 제거할 수 있습니다.

    • 서브넷을 디자인할 때 트래픽 플로우 및 보안 요구사항을 고려하십시오. 보안 경계 역할을 할 수 있는 동일한 서브넷에 특정 계층 또는 역할 내의 모든 리소스를 연결합니다.

    • 지역별 서브넷을 사용합니다.
  • 로드 밸런서 대역폭

    로드 밸런서를 생성하는 동안 고정 대역폭을 제공하는 미리 정의된 구성을 선택하거나, 대역폭 범위를 설정하고 서비스가 트래픽 패턴에 따라 대역폭을 자동으로 확장하도록 하는 사용자 정의(유연한) 구성을 지정할 수 있습니다. 두 방법 중 하나로 로드 밸런서를 생성한 후 언제든지 구성을 변경할 수 있습니다.

고려 사항

  • 확장성

    쿼럼을 얻는 데 필요한 최소 노드 수는 세 개이므로 이 구조는 세 개의 노드를 배치합니다. 응용 프로그램의 성능 또는 고가용성 요구 사항을 충족하기 위해 더 많은 노드가 필요할 수 있습니다.

    계산 노드를 추가하고 로드 밸런서 백엔드 집합에 포함시켜 데이터베이스 클러스터를 가로로 확장할 수 있습니다.

    각 계산 노드의 VM 구성을 변경하여 데이터베이스 클러스터를 세로로 확장할 수 있습니다. 더 높은 코어 수 구성을 사용하면 컴퓨트 인스턴스 및 네트워크 대역폭에 할당된 메모리도 늘어납니다.

  • 가용성

    결함 도메인은 단일 가용성 도메인 내에서 최상의 복원성을 제공합니다. 이 구조에서 응용 프로그램을 하나의 가용성 도메인에 배치하는 대신 여러 가용성 도메인이 있는 영역에서 동일한 작업을 수행하는 컴퓨트 인스턴스를 배치할 수 있습니다. 이 설계는 중복성을 도입하여 단일 실패 지점을 제거합니다. 구조가 배치된 후 로드 밸런서의 공용 IP 주소를 사용하여 내장 SQL 클라이언트를 통해 CockroachDB에 접속합니다.

  • 비용

    데이터베이스에 필요한 코어, 메모리 및 네트워크 대역폭을 기반으로 VM(가상 머신) 구성을 선택합니다. 1코어 구성으로 시작할 수 있으며, 데이터베이스 노드에 대한 성능, 메모리 또는 네트워크 대역폭이 더 필요한 경우 나중에 VM 구성을 변경할 수 있습니다.

배치

이 참조 구조에 대한 Terraform 코드는 Oracle Cloud Infrastructure Resource Manager에서 샘플 스택으로 사용할 수 있습니다. GitHub에서 코드를 다운로드하여 특정 요구 사항에 맞게 사용자 정의할 수도 있습니다.

  • Oracle Cloud Infrastructure Resource Manager의 샘플 스택을 사용하여 배치합니다:
    1. Oracle Cloud에 배치누릅니다.

      아직 사인인하지 않은 경우 테넌시 및 사용자 인증서를 입력합니다.

    2. 스택을 배치할 영역을 선택합니다.
    3. 화면의 프롬프트 및 지침에 따라 스택을 만듭니다.
    4. 스택을 생성한 후 Terraform 작업 을 누르고 계획 을 선택합니다.
    5. 작업이 완료될 때까지 기다렸다가 계획을 검토합니다.

      변경하려면 스택 세부정보 페이지로 돌아가서 스택 편집 을 누르고 필요한 사항을 변경합니다. 그런 다음 계획 작업을 다시 실행합니다.

    6. 추가 변경이 필요하지 않은 경우 스택 세부 정보 페이지로 돌아가서 Terraform 작업 을 누르고 적용 을 선택합니다.
  • GitHub에서 Terraform 코드를 사용하여 배치합니다:
    1. GitHub로 이동합니다.
    2. 저장소를 로컬 컴퓨터에 복제하거나 다운로드합니다.
    3. README 문서의 지침을 따릅니다.

변경 로그

이 로그에는 중요한 변경 사항이 나열됩니다: