Oracle Cloud Infrastructure Kubernetes Engine 클러스터에 고가용성 MySQL Database 시스템 배포

Oracle MySQL Database Service는 Oracle Cloud Infrastructure(OCI) 내에 배포된 완전 관리형 데이터베이스 서비스로, 안전한 클라우드 전용 애플리케이션을 신속하게 배포하려는 운영자와 개발자를 지원합니다. OSOK(Kubernetes)용 OCI 서비스 운영자를 사용하여 Oracle Cloud Infrastructure Kubernetes Engine 클러스터(OCI Kubernetes Engine 또는 OKE) 클러스터의 고가용성 MySQL Database 시스템 배포에 배포된 애플리케이션에 대해 MySQL Database 시스템을 프로비저닝하고 관리할 수 있습니다.

OSOK를 사용하면 OKE 관리자를 위한 MySQL Database 시스템 관리가 간소화되고, Kubernetes 패키지 관리 도구인 Helm을 사용하여 MySQL Database System 인스턴스를 애플리케이션과 함께 배치할 수 있습니다.

구조

이 참조 아키텍처는 해당 데이터베이스에 고가용성 MySQL Database 시스템을 활용하는 OKE 클러스터에 배치된 애플리케이션을 보여줍니다. MySQL Database System은 OSOK를 사용하여 OKE 클러스터 내에서 전적으로 배포 및 관리됩니다.

OSOK를 사용하면 표준 Kubernetes CLI - kubectl을 사용하여 다른 Kubernetes 리소스처럼 MySQL Database 시스템을 관리할 수 있습니다. MySQL Database 시스템을 CRD(사용자정의 리소스 정의)로 모델링하고 해당 정의를 OKE 클러스터에 적용하면 됩니다.

MySQL Database System은 독립형 시스템 또는 HA(고가용성)로 배포할 수 있습니다. HA 지원 MySQL Database 시스템에는 여러 가용성 도메인 또는 결함 도메인에 배포된 3개의 인스턴스가 포함되어 있습니다. 응용 프로그램은 단일 끝점에 연결하여 데이터베이스를 읽고 씁니다. 장애 발생 시 데이터베이스 시스템은 애플리케이션을 재구성하지 않고 자동으로 보조 인스턴스로 페일오버합니다.

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

다음은 oci-mysql-oke-ha-arch.png에 대한 설명입니다.
그림 oci-mysql-oke-ha-arch.png에 대한 설명

oci-mysql-oke-ha-arch-oracle.zip

구조에는 다음과 같은 구성 요소가 있습니다.

  • 지역

    Oracle Cloud Infrastructure 리전은 가용성 도메인이라고 하는 데이터 센터가 하나 이상 포함된 지역화된 지리적 영역입니다. 지역은 다른 지역과 독립적이며, 먼 거리가 그들을 분리 할 수 있습니다 (국가 또는 대륙에 걸쳐).

  • 가용성 도메인

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

  • 결함 도메인

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

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

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

  • OCI Kubernetes 엔진

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

  • Oracle MySQL Database Service

    Oracle MySQL Database Service는 개발자가 안전한 클라우드 네이티브 애플리케이션을 신속하게 개발하고 배포할 수 있는 완전 관리형 Oracle Cloud Infrastructure(OCI) 데이터베이스 서비스입니다. OCI에 최적화되고 독점적으로 제공되는 Oracle MySQL Database Service는 OCI 및 MySQL 엔지니어링 팀이 100% 구축, 관리 및 지원합니다.

    Oracle MySQL Database Service에는 운영 중인 MySQL 데이터베이스에 대해 정교한 실시간 분석을 직접 실행할 수 있는 통합 고성능 분석 엔진(HeatWave)이 있습니다.

  • NAT(Network Address Translation) 게이트웨이

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

  • 서비스 게이트웨이

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

  • 레지스트리

    Oracle Cloud Infrastructure Registry는 개발-운영 워크플로우를 간소화할 수 있는 Oracle 관리 레지스트리입니다. 레지스트리를 사용하면 Docker 이미지와 같은 개발 아티팩트를 쉽게 저장, 공유 및 관리할 수 있습니다. Oracle Cloud Infrastructure의 가용성과 확장성이 뛰어난 아키텍처는 애플리케이션을 안정적으로 배포하고 관리할 수 있도록 보장합니다.

  • 로드 밸런서

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

  • 경로 테이블

    가상 라우팅 테이블에는 일반적으로 게이트웨이를 통해 서브넷에서 VCN 외부의 대상으로 트래픽을 라우팅하는 규칙이 포함되어 있습니다.

  • 보안 목록

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

권장사항

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

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

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

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

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

  • 로드 밸런서 대역폭

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

  • 보안 목록

    보안 목록을 사용하여 전체 서브넷에 적용되는 수신 및 송신 규칙을 정의합니다.

  • Oracle MySQL Database Service

    이 구조에서 응용 프로그램은 관계형 데이터를 Oracle MySQL Database Service에 저장합니다. 최신 버전을 사용하는 것이 좋습니다.

고려사항

Oracle Cloud에서 애플리케이션을 배포하는 경우 가용성을 위해 해당 옵션을 고려해 보십시오.

  • 애플리케이션 가용성

    애플리케이션은 고가용성을 제공하기 위해 배포에 여러 POD와 함께 배포됩니다.

  • My SQL 데이터베이스 서비스 가용성 및 확장성

    고가용성 아키텍처에 표시되는 MySQL Database Service는 내장된 MySQL 고가용성 옵션을 사용합니다. 이 옵션은 세 개의 인스턴스를 생성하여 다른 장애 도메인에 배치합니다.

  • 보안

    사용 가능한 OCI 리소스에 액세스할 수 있는 사용자를 제한하는 정책을 사용합니다. OKE는 OCI IAM(ID 및 액세스 관리)과 통합됩니다. IAM은 네이티브 OCI ID 기능을 통해 손쉬운 인증을 제공합니다.

배치

이 참조 아키텍처는 OCI 콘솔 또는 CLI를 사용하지 않고도 OKE 클러스터에서 배포 및 관리하고, Helm 차트를 통해 자동화할 수 있습니다. 이 참조 아키텍처의 샘플 Helm 차트를 사용하면 OCI에 배포된 Kubernetes 클러스터에서 MySQL Database 시스템을 손쉽게 생성하고 관리할 수 있습니다. GitHub에서 코드를 다운로드하여 특정 요구 사항에 맞게 사용자 정의할 수 있습니다.

  1. GitHub로 이동합니다.
  2. 저장소를 복제하거나 로컬 컴퓨터에 다운로드합니다.
  3. README 문서의 지침을 따릅니다.

감사의 글

작성자: 황 칩