OCI에서 StackGres를 사용하여 PostgreSQL 배포

StackGres는 Kubernetes를 위한 전체 스택 PostgreSQL 배포로, 간편한 배포 단위로 제공됩니다. StackGres에는 연결 풀링, 자동화된 백업, 모니터링, 중앙 집중식 로깅 및 완전한 기능을 갖춘 관리 웹 콘솔이 포함되어 있습니다.

StackGres는 Postgres: Patroni에서 가장 유명한 프로덕션 테스트 고가용성 소프트웨어를 통합합니다.

  • 완전히 통합되었습니다. 오류가 발생하면 클러스터가 사람의 개입 없이 자동으로 복구됩니다.
  • StackGres는 애플리케이션에 대해 하나의 읽기/쓰기 및 하나의 읽기 전용 연결을 제공합니다. 이 연결은 중단 이벤트가 발생한 후 자동으로 업데이트됩니다.

엔터프라이즈급 PostgreSQL 스택에는 다른 여러 에코시스템 구성 요소와 상당한 튜닝이 필요합니다. 연결 풀링, 자동 페일오버 및 HA, 모니터링, 백업 및 DR이 필요합니다. 이 참조 아키텍처에 표시된 StackGres 패키지 및 Oracle Cloud Infrastructure(OCI) 구성요소는 저효율적이고 확장 가능하며 고가용성 배포를 제공합니다.

구조

이 아키텍처는 Oracle Container Engine for Kubernetes 클러스터에 PostgreSQL을 배포하는 방법을 보여줍니다. PostgreSQL 기능을 활용하는 프로덕션 지원 환경에 이 아키텍처를 사용합니다.

  • 벤더 종속성 없음: PostgreSQL는 모든 Kubernetes 환경에서 작동합니다.
  • 완전한 기능을 갖춘 웹 콘솔이 포함되어 있습니다.
  • Postgres 플랫폼은 세계에서 가장 많은 확장을 가지고 있습니다.
  • x86-64 및 ARM64 Kubernetes 작업자 노드에서 실행됩니다.
  • 전체 오픈 소스(무료 "커뮤니티"와 값비싼 "엔터프라이즈" 버전 사이에 분리되지 않음).
  • 사용된 코어를 기반으로 지원 및 업데이트에 대한 가격 책정
  • "vanilla" Postgres 및 Babelfish(SQL Server 호환성 제공)를 포함합니다.

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



아키텍처에는 다음과 같은 구성 요소가 있습니다.

스택그레스-oci-arch-oracle.zip

  • 테넌시

    테넌시는 Oracle Cloud Infrastructure에 등록할 때 Oracle이 Oracle Cloud 내에서 설정하는 격리된 보안 파티션입니다. 테넌시 내 Oracle Cloud에서 리소스를 생성, 구성 및 관리할 수 있습니다. 테넌시는 회사 또는 조직과 동의어입니다. 일반적으로 회사는 단일 테넌시를 갖고 해당 테넌시 내의 조직 구조를 반영합니다. 일반적으로 단일 테넌시는 단일 구독에 연결되며, 단일 구독에는 일반적으로 하나의 테넌시만 있습니다.

  • 지역

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

  • 구획

    구획은 Oracle Cloud Infrastructure 테넌시 내의 영역 간 논리적 파티션입니다. 구획을 사용하여 Oracle Cloud에서 리소스를 구성하고, 리소스에 대한 액세스를 제어하고, 사용 할당량을 설정할 수 있습니다. 지정된 구획의 리소스에 대한 액세스를 제어하기 위해 리소스에 액세스할 수 있는 사용자 및 수행할 수 있는 작업을 지정하는 정책을 정의합니다.

  • 가용성 도메인

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

    하나의 가용성 도메인이 표시되지만, 운용 요구사항에 따라 여러 가용성 도메인에 배치할 수 있습니다.

  • 결함 도메인

    장애 도메인은 가용성 도메인 내 하드웨어와 인프라의 그룹입니다. 가용성 도메인마다 별도의 전원 및 하드웨어가 있는 장애 도메인 3개가 있습니다. 여러 장애 도메인에 리소스를 분배할 때 응용 프로그램은 물리적 서버 실패, 시스템 유지 관리 및 결함 도메인 내의 전원 실패를 허용할 수 있습니다.

    하나의 결함 도메인이 표시되지만, 운용 요구사항에 따라 여러 장애 도메인에 배치할 수 있습니다.

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

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

  • 로드 밸런서

    Oracle Cloud Infrastructure Load Balancing 서비스는 단일 시작점에서 백엔드의 다중 서버로 트래픽을 자동으로 배포합니다.

  • 배스천 서비스

    Oracle Cloud Infrastructure Bastion은 퍼블릭 엔드포인트가 없고 베어메탈 및 가상 머신, Oracle MySQL Database Service, Autonomous Transaction Processing(ATP), Oracle Container Engine for Kubernetes(OKE) 및 SSH(Secure Shell Protocol) 액세스를 허용하는 기타 리소스와 같은 엄격한 리소스 액세스 제어가 필요한 리소스에 제한적이고 시간 제한적인 보안 액세스를 제공합니다. Oracle Cloud Infrastructure Bastion 서비스를 사용하면 점프 호스트를 배포하고 유지 관리하지 않고도 전용 호스트에 액세스할 수 있습니다. 또한 ID 기반 권한과 중앙 집중식, 감사 및 시간 제한 SSH 세션을 통해 보안 상태를 개선할 수 있습니다. Oracle Cloud Infrastructure Bastion은 배스천 액세스를 위해 공용 IP가 필요하지 않으므로 원격 액세스를 제공할 때 번거롭고 잠재적인 공격 영역을 제거합니다.

  • 보안 목록

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

  • NAT(네트워크 주소 변환) 게이트웨이

    NAT 게이트웨이를 사용하면 VCN의 개인 리소스가 수신 인터넷 연결에 이러한 리소스를 노출하지 않고 인터넷의 호스트에 접근할 수 있습니다.

  • 서비스 게이트웨이

    서비스 게이트웨이는 VCN에서 Oracle Cloud Infrastructure Object Storage와 같은 다른 서비스로의 액세스를 제공합니다. VCN에서 Oracle 서비스로의 트래픽은 Oracle 네트워크 패브릭을 통해 이동하며 인터넷을 경유하지 않습니다.

  • DRG(동적 경로 지정 게이트웨이)

    DRG는 동일한 지역의 VCN과 지역 외부의 네트워크(예: 다른 Oracle Cloud Infrastructure 지역의 VCN, 온프레미스 네트워크 또는 다른 클라우드 공급자의 네트워크) 간에 전용 네트워크 트래픽 경로를 제공하는 가상 라우터입니다.

  • 객체 스토리지

    객체 스토리지를 사용하면 데이터베이스 백업, 분석 데이터, 이미지 및 비디오와 같은 리치 콘텐츠 등 모든 콘텐츠 유형의 대량의 구조적 및 비구조적 데이터에 빠르게 액세스할 수 있습니다. 인터넷 또는 클라우드 플랫폼 내에서 직접 안전하고 안전하게 데이터를 저장하고 검색할 수 있습니다. 성능 또는 서비스 안정성의 저하 없이 스토리지를 원활하게 확장할 수 있습니다. 빠르고 즉각적이며 자주 액세스하는 데 필요한 "핫" 스토리지에 표준 스토리지를 사용합니다. 장기간 보존하고 거의 액세스하지 않는 "콜드" 스토리지에 아카이브 스토리지를 사용합니다.

  • 인터넷 게이트웨이

    인터넷 게이트웨이는 VCN의 공용 서브넷과 공용 인터넷 사이의 트래픽을 허용합니다.

  • FastConnect

    Oracle Cloud Infrastructure FastConnect는 데이터 센터 및 Oracle Cloud Infrastructure 간 전용 개인 연결을 생성할 수 있는 쉬운 방법을 제공합니다. FastConnect는 인터넷 기반 연결과 비교할 때 더 높은 대역폭 옵션과 보다 안정적인 네트워킹 환경을 제공합니다.

  • LPG(로컬 피어링 게이트웨이)

    LPG를 사용하면 한 VCN을 동일한 지역의 다른 VCN과 피어링할 수 있습니다. 피어링은 VCN이 인터넷을 통과하는 트래픽이나 온프레미스 네트워크를 통한 라우팅 없이 전용 IP 주소를 사용하여 통신한다는 것을 의미합니다.

  • Kubernetes용 컨테이너 엔진

    Oracle Cloud Infrastructure Container Engine for Kubernetes는 컨테이너화된 애플리케이션을 클라우드에 배포하는 데 사용할 수 있는 확장 가능한 고가용성 완전 관리형 서비스입니다. 애플리케이션에 필요한 컴퓨트 리소스를 지정하면 Container Engine for Kubernetes가 기존 테넌시의 Oracle Cloud Infrastructure에서 프로비저닝합니다. Container Engine for Kubernetes는 Kubernetes를 사용하여 호스트 클러스터 전반에서 컨테이너화된 애플리케이션의 배포, 확장 및 관리를 자동화합니다.

  • PostgreSQL

    PostgreSQL는 확장성이 뛰어나고 확장성이 뛰어난 오픈 소스 RDBMS(관계형 데이터베이스 관리 시스템)입니다. SQL(관계형) 및 JSON(비관계형) 쿼리를 지원합니다.

  • StackGres

    StackGres는 Kubernetes를 위한 전체 스택 PostgreSQL 배포로, 간편한 배포 단위로 제공됩니다. 여기에는 주의 깊게 선택되고 조정된 주변 PostgreSQL 구성요소 세트가 포함됩니다.

  • 클라우드 가드

    Oracle Cloud Guard를 사용하여 Oracle Cloud Infrastructure에서 리소스의 보안을 모니터링하고 유지할 수 있습니다. Cloud Guard는 리소스에서 보안 취약점을 검사하고 운영자 및 사용자가 위험한 작업을 모니터하도록 정의할 수 있는 감지자 레시피를 사용합니다. 잘못된 구성이나 안전하지 않은 작업이 감지되면 Cloud Guard는 사용자가 정의할 수 있는 응답자 레시피에 따라 수정 조치를 권장하고 해당 조치를 취할 수 있도록 지원합니다.

  • 분산 서비스 거부(DDoS) 보호

    분산 서비스 거부(DDoS) 공격은 회사 서버에 엄청난 양의 유입 트래픽이 발생하는 공격자가 저지르는 심각한 사이버 범죄입니다. 엄청난 양의 트래픽은 수많은 소스와 지리적 위치에서 발생하므로 사용자가 회사의 서비스 및 사이트에 액세스할 수 없습니다. 모든 Oracle Cloud 데이터 센터는 대용량 계층 3 또는 4 DDoS 공격에 대한 DDoS 공격 감지 및 완화를 제공합니다. Oracle Cloud의 이러한 DDoS 보호 서비스는 지속적인 계층 3 또는 4 공격에서도 Oracle 네트워크 리소스의 가용성을 보장합니다.

  • IAM(ID 및 액세스) 관리

    Oracle Cloud Infrastructure Identity and Access Management(IAM)는 Oracle Cloud Infrastructure(OCI) 및 Oracle Cloud Applications의 액세스 제어 플레인입니다. IAM API 및 사용자 인터페이스를 통해 ID 도메인 및 ID 도메인 내의 리소스를 관리할 수 있습니다. 각 OCI IAM ID 도메인은 독립형 ID 및 액세스 관리 솔루션 또는 다른 사용자 모집단을 나타냅니다.

  • 로깅
    Logging은 확장성이 뛰어난 완전 관리형 서비스로, 클라우드의 리소스에서 다음 유형의 로그에 액세스할 수 있습니다.
    • 감사 로그: 감사 서비스에서 내보낸 이벤트와 관련된 로그입니다.
    • 서비스 로그: API 게이트웨이, 이벤트, 함수, 로드 밸런싱, 오브젝트 스토리지, VCN 플로우 로그와 같은 개별 서비스에서 발행하는 로그입니다.
    • 사용자정의 로그: 사용자정의 애플리케이션, 다른 클라우드 공급자 또는 온프레미스 환경의 진단 정보를 포함하는 로그입니다.
  • 감사

    Oracle Cloud Infrastructure Audit 서비스는 지원되는 모든 Oracle Cloud Infrastructure API(공용 애플리케이션 프로그래밍 인터페이스) 끝점에 대한 호출을 로그 이벤트로 자동 기록합니다. 현재 모든 서비스는 Oracle Cloud Infrastructure Audit의 로깅을 지원합니다.

권장 사항

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

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

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

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

    서브넷을 설계할 때 트래픽 흐름 및 보안 요구 사항을 고려합니다. 특정 계층 또는 역할 내의 모든 리소스를 보안 경계로 사용할 수 있는 동일한 서브넷에 연결합니다.

    지역별 서브넷을 사용합니다.

  • 클라우드 가드

    사용자정의 감지기 및 응답기 레시피를 생성하기 위해 Oracle에서 제공하는 기본 레시피를 복제하고 사용자정의합니다. 이러한 레시피를 통해 경고를 발생시키는 보안 위반 유형과 이 유형에 대해 수행할 수 있는 작업을 지정할 수 있습니다. 예를 들어 가시성이 공용으로 설정된 오브젝트 스토리지 버킷을 감지할 수 있습니다.

    테넌시 레벨에서 Cloud Guard를 적용하여 가장 광범위한 범위를 다루고 여러 구성을 유지 관리하는 관리 부담을 줄이십시오.

    관리 목록 기능을 사용하여 특정 구성을 감지기에 적용할 수도 있습니다.

  • 보안 영역

    최대 보안이 필요한 리소스의 경우 Oracle은 보안 영역을 사용할 것을 권장합니다. 보안 영역은 모범 사례를 기반으로 하는 Oracle 정의 보안 정책 레시피와 연관된 구획입니다. 예를 들어, 보안 영역의 리소스는 공용 인터넷에서 액세스할 수 없어야 하며 고객 관리 키를 사용하여 암호화해야 합니다. 보안 영역에서 리소스를 만들고 업데이트할 때 Oracle Cloud Infrastructure는 보안 영역 레시피의 정책에 대한 작업을 검증하고 정책을 위반하는 작업을 거부합니다.

  • NSG(Network Security Group)

    NSG를 사용하여 특정 VNIC에 적용되는 수신 및 송신 규칙 집합을 정의할 수 있습니다. NSG를 사용하면 VCN의 서브넷 아키텍처와 애플리케이션의 보안 요구사항을 분리할 수 있으므로 보안 목록이 아닌 NSG를 사용하는 것이 좋습니다.

  • 로드 밸런서 대역폭

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

고려 사항

이 구조를 배치할 때는 다음 옵션을 고려하십시오.

  • ARM 프로세서와의 동질학

    StackGres는 ARM(Ampere A1 Compute)을 사용하여 실행할 수 있습니다.

  • 아키텍처 옵션

    이 문서의 구조는 제안 사항이며 프로젝트의 필요에 따라 변경할 수 있습니다.

  • Postgres 확장 기능

    StackGres는 사용할 수있는 130 Postgres 확장 이상의 소스를 제공합니다.

  • 사용자 권한

    최소 권한의 보안 모범 사례 사용: 루트 또는 수퍼 유저 권한에 대한 계정 액세스를 실제로 필요한 경우에만 제한합니다.

  • 모니터링

    OCI 이벤트, OCI 로깅, OCI 모니터링과 같은 OCI 서비스 외에도 Prometheus 또는 Grafana를 사용하여 모니터링할 수 있습니다.

  • 백업

    StackGres에는 데이터 손실 없이 복구할 수 있는 지속적인 아카이브 기반 백업이 포함되어 있습니다.

    백업은 현재 사용 가능한 가장 내구성이 뛰어난 미디어인 OCI Object Storage에 항상 저장됩니다.

다음 최적의 사용법을 따릅니다.

  • 데이터베이스를 인터넷에 노출되지 않도록 합니다.
  • 가능하면 Stackgres에서 사용하는 클러스터에서 응용 프로그램 클러스터를 분리합니다.
  • 동일한 클러스터에서 애플리케이션을 생성하려면 Oracle에서 애플리케이션에 대해 다른 네임스페이스를 생성할 것을 적극 권장합니다.
  • Intel, AMD 또는 ARM 프로세서를 선택할 때 Postgres 환경의 크기를 낮추지 않도록 워크로드 크기를 고려합니다.

추가 탐색

OCI에 PostgreSQL를 배포하는 방법에 대해 자세히 알아보십시오.

다음 추가 리소스를 검토하십시오.

수락

작성자:

  • Luís Eduardo Lannes Silva

기여자:

  • 조슈아 스탠리