MySQL을 사용하는 클라우드 전용 앱을 Oracle Cloud Infrastructure에 배포
Oracle Container Engine for Kubernetes(OKE), Oracle Cloud Infrastructure Registry 및 Oracle MySQL Database Service(MDS)를 사용하여 클라우드 전용 애플리케이션을 개발 및 배포하고 레거시 애플리케이션을 클라우드로 마이그레이션할 수 있습니다.
OKE는 확장 가능한 완전 관리형 고가용성 서비스로, 컨테이너화된 애플리케이션을 클라우드에 배포하는 데 사용할 수 있습니다. 개발 팀이 클라우드 전용 애플리케이션을 안정적으로 구축, 배포 및 관리하려는 경우 OKE를 사용하십시오.
Oracle Cloud Infrastructure Registry를 내부 전용 Docker 레지스트리로 사용하여 Docker V2 API 및 표준 Docker 명령행 인터페이스(CLI)를 통해 레지스트리에서 Docker 이미지를 푸시 및 풀링할 수 있습니다.
MDS는 백업 및 복구와 같은 작업과 데이터베이스 및 운영 체제 패치 작업을 자동화하는 전담 관리 Oracle Cloud Infrastructure 네이티브 서비스입니다.
Oracle Cloud Infrastructure Compute에서 MDS를 사용하면 다음과 같은 이점이 있습니다.
- 몇 분 만에 MySQL을 배포할 수 있습니다.
- 전담 관리 OCI 서비스의 이점을 누릴 수 있습니다.
- 인프라 관리가 아닌 개발에 집중합니다.
- 최신 앱에 도구와 최신 기능을 사용합니다.
- 필요에 따라 확장합니다.
- 그림자 IT를 피하십시오.
구조
이 참조 아키텍처에는 MDS 및 OKE 클러스터로 작성된 고가용성 데이터베이스 계층이 포함되어 있습니다.
다음 다이어그램은 이 참조 구조를 보여 줍니다.

그림 architecture-kubernetes-mysql-oci.png에 대한 설명
architecture-kubernetes-mysql-oci-oracle.zip의 약어입니다.
활성 도메인 서브넷에 MDS를 배치하는 경우 MDS는 중복성을 제공하기 위해 각 결함 도메인에 하나의 인스턴스가 있는 MySQL 인스턴스 클러스터를 배치합니다. 한 인스턴스는 기본 인스턴스이고 다른 두 인스턴스는 보조 인스턴스입니다. 기본에는 데이터베이스에 대한 읽기 및 쓰기를 사용으로 설정하는 단일 끝점이 포함되며 보조 대상은 기본 데이터베이스에서 복제된 데이터를 수신합니다. 보조 노드에는 직접 액세스할 수 없습니다.
실패 또는 수동 스위치오버의 경우 보조 노드 중 하나가 새 기본 노드가 되고 끝점이 해당 노드로 재지정됩니다. 즉, 끝점 IP 주소가 변경되지 않고 애플리케이션을 업데이트할 필요가 없습니다. OCI가 데이터베이스의 고가용성 측면을 관리합니다.
이 아키텍처에는 개발 및 배포 가능한 클라우드 전용 앱을 수용하기 위해 Oracle Cloud Infrastructure Registry와 함께 작동하는 OKE 클러스터가 포함되어 있습니다.
구조에는 다음과 같은 구성 요소가 있습니다.
- Bastion 호스트
배스천 호스트는 클라우드 외부에서 토폴로지에 대한 보안 제어 시작점 역할을 하는 컴퓨트 인스턴스입니다. 배스천 호스트는 일반적으로 DMZ(Demilitarized Zone)에서 프로비저닝됩니다. 이를 통해 클라우드 외부에서 직접 액세스할 수 없는 개인 네트워크에 중요한 리소스를 배치하여 보호할 수 있습니다. 토폴로지에는 정기적으로 모니터하고 감사할 수 있는 알려진 단일 시작점이 있습니다. 따라서 액세스 권한을 손상시키지 않으면서 토폴로지의 보다 중요한 구성 요소가 노출되지 않도록 할 수 있습니다.
- Container Engine for Kubernetes
Oracle Cloud Infrastructure Container Engine for Kubernetes는 컨테이너화된 애플리케이션을 클라우드에 배포하는 데 사용할 수 있는 전담 관리 및 확장 가능하며 고가용성 서비스입니다. 애플리케이션에 필요한 컴퓨트 리소스를 지정하면 Container Engine for Kubernetes가 기존 테넌시의 Oracle Cloud Infrastructure에서 리소스를 프로비저닝합니다. Container Engine for Kubernetes는 Kubernetes를 사용하여 호스트 클러스터 전체에서 컨테이너화된 애플리케이션의 배포, 확장 및 관리를 자동화합니다.
- Oracle MySQL 데이터베이스 서비스
Oracle MySQL Database Service는 개발자가 안전한 클라우드 전용 애플리케이션을 신속하게 개발하고 배포할 수 있도록 해주는 전담 관리 OCI(Oracle Cloud Infrastructure) 데이터베이스 서비스입니다. OCI에 최적화되고 독점적으로 사용할 수 있도록 Oracle MySQL Database Service는 OCI 및 MySQL 엔지니어링 팀이 100% 구축, 관리 및 지원합니다.
Oracle MySQL Database Service에는 운영 중인 MySQL 데이터베이스에 대해 정교한 실시간 분석을 직접 실행할 수 있는 통합 고성능 분석 엔진(HeatWave)이 있습니다.
- 레지스트리
Oracle Cloud Infrastructure Registry는 개발-운영 워크플로우를 간소화하는 Oracle 관리 레지스트리입니다. 레지스트리를 통해 Docker 이미지 등의 개발 아티팩트 저장, 공유 및 관리를 쉽게 수행할 수 있습니다. 확장성이 뛰어난 Oracle Cloud Infrastructure 아키텍처는 애플리케이션을 안정적으로 배포하고 관리할 수 있도록 지원합니다.
- 지역
Oracle Cloud Infrastructure 지역은 가용성 도메인이라고 하는 하나 이상의 데이터 센터를 포함하는 지역화된 지리적 영역입니다. 지역은 다른 지역과 독립적이며, 방대한 거리로 이들을 분리할 수 있습니다(국가 또는 대륙 간).
- VCN(가상 클라우드 네트워크) 및 서브넷
VCN은 Oracle Cloud Infrastructure 영역에서 설정하는 커스터마이징 가능한 소프트웨어 정의 네트워크입니다. 기존의 데이터 센터 네트워크와 마찬가지로 VCN도 네트워크 환경을 완벽하게 제어할 수 있습니다. VCN에는 VCN을 생성한 후 변경할 수 있는 겹치지 않는 여러 CIDR 블록이 있을 수 있습니다. VCN을 서브넷으로 분할할 수 있으며, 지역 또는 가용성 도메인으로 범위가 지정될 수 있습니다. 각 서브넷은 VCN의 다른 서브넷과 겹치지 않는 연속적인 주소 범위로 구성됩니다. 서브넷을 생성한 후 크기를 변경할 수 있습니다. 서브넷은 공용 또는 전용일 수 있습니다.
- 가용성 도메인
가용성 도메인은 한 지역 내의 독립형 데이터 센터입니다. 각 가용성 도메인의 물리적 리소스는 내결함성을 제공하는 다른 가용성 도메인의 리소스와 분리됩니다. 가용성 도메인은 전원, 냉각 또는 내부 가용성 도메인 네트워크와 같은 인프라를 공유하지 않습니다. 따라서 하나의 가용성 도메인에서 장애가 발생하면 해당 영역의 다른 가용성 도메인에 영향을 주지 않습니다.
- 결함 도메인
장애 도메인은 한 가용성 도메인 내 하드웨어 및 인프라의 그룹입니다. 각 가용성 도메인은 3개의 장애 도메인과 독립적인 전원 및 하드웨어를 제공합니다. 여러 장애 도메인에 리소스를 분산하면 애플리케이션은 장애 도메인 내에서 물리적 서버 장애, 시스템 유지보수 및 전원 장애를 허용할 수 있습니다.
- DRG(동적 경로 지정 게이트웨이)
DRG는 VCN과 지역 외부의 네트워크(예: 다른 Oracle Cloud Infrastructure 지역의 VCN, 온프레미스 네트워크 또는 다른 클라우드 제공업체의 네트워크) 간 전용 네트워크 트래픽의 경로를 제공하는 가상 라우터입니다.
- 서비스 게이트웨이
서비스 게이트웨이는 VCN에서 Oracle Cloud Infrastructure Object Storage와 같은 다른 서비스에 대한 접근을 제공합니다. VCN에서 Oracle 서비스로의 트래픽은 Oracle 네트워크 패브릭을 통해 이동하며 인터넷을 경유하지 않습니다.
- 인터넷 게이트웨이
인터넷 게이트웨이는 VCN의 공용 서브넷과 공용 인터넷 사이의 트래픽을 허용합니다.
- 보안 목록
각 서브넷에 대해 서브넷에 들어오고 나가야 하는 트래픽의 소스, 대상, 유형을 지정하는 보안 규칙을 생성할 수 있습니다.
- 경로 테이블
가상 라우트 테이블에는 일반적으로 게이트웨이를 통해 서브넷에서 VCN 외부의 대상으로 트래픽을 라우팅하는 규칙이 포함됩니다.
권장 사항
요구 사항은 여기에 설명된 아키텍처와 다를 수 있습니다. 다음 권장 사항을 시작점으로 사용합니다.
- Bastion 호스트
CPU 1개와 1GB 메모리, 최신 Oracle Linux 운영체제에서는 VM.Standard.E4.Flex 구성을 사용합니다.
- OKE 클러스터
배치할 VCN 및 서브넷을 지정할 수 있도록 콘솔에서 Custom Create 옵션을 사용합니다. 3노드 클러스터를 생성하고 초기 구성으로 VM.Standard.E4.Flex을 선택합니다. 대규모 배포의 경우 컴퓨트 구성이 더 높은 더 큰 클러스터 크기를 사용할 수 있습니다.
- DB 시스템 구성
이 구조는 MDS에서 고가용성을 사용하여 장애 도메인에 분산된 세 개의 MySQL 서버를 제공합니다. 작업 로드가 적은 경우 MySQL.VM.Standard.E3.1.8GB.HA를 사용하는 것이 좋습니다. 더 까다로운 워크로드에 더 큰 구성을 사용할 수 있습니다.
- MDS에 접속
MySQL 클라이언트 또는 애플리케이션 VM 또는 컨테이너에 설치된 MySQL 셸을 사용하여 MDS에 직접 액세스할 수 있습니다.
- MDS 데이터베이스 저장 영역
MDS 데이터베이스 스토리지 성능은 DB 시스템에 대해 선택된 스토리지 크기로 확장됩니다. MDS 저장 영역 IOPS는 제한하거나 편집할 수 없습니다. 데이터 크기 및 성능 요구 사항에 따라 스토리지 크기를 프로비저닝해야 합니다. MDS는 iSCSI를 통해 Block Volume Service Higher Performance 옵션을 사용합니다. 최종 성능 결과는 다양한 형태와 시나리오에 따라 달라질 수 있습니다.
- 컨테이너 레지스트리
Oracle은 레지스트리를 관리하므로 크기나 다른 옵션을 선택할 필요가 없습니다. 최적의 보안 방법을 위해 전용 레지스트리를 생성하는 것이 좋습니다.
- VCN
VCN을 생성할 때 VCN의 서브넷에 연결할 리소스의 수에 따라 필요한 CIDR 블록 수 및 각 블록의 크기를 결정합니다. 표준 전용 IP 주소 공간 내에 있는 CIDR 블록을 사용합니다.
전용 접속을 설정하려는 다른 네트워크(Oracle Cloud Infrastructure, 온프레미스 데이터 센터 또는 다른 클라우드 제공자)와 겹치지 않는 CIDR 블록을 선택합니다.
VCN을 생성한 후 해당 CIDR 블록을 변경, 추가 및 제거할 수 있습니다.
서브넷을 설계할 때는 트래픽 플로우와 보안 요구사항을 고려하십시오. 특정 계층 또는 역할 내의 모든 리소스를 보안 경계로 사용할 수 있는 동일한 서브넷에 연결합니다.
고려 사항
- 확장성
각 컴퓨트 노드의 VM 구성을 변경하여 MySQL의 수직 확장을 수행할 수 있습니다. 코어 수의 구성을 높게 사용하면 컴퓨트 인스턴스에 할당된 메모리 및 네트워크 대역폭이 증가합니다.
- 애플리케이션 가용성
이 구조는 MDS에서 고가용성을 사용하여 여러 장애 도메인에 걸쳐 컴퓨트 인스턴스를 분산하므로 단일 장애 지점이 제거되고 중복성을 제공합니다.
- 비용
데이터베이스에 필요한 코어, 메모리 및 네트워크 대역폭을 기반으로 VM 구성을 선택합니다. 1코어 모양으로 시작할 수 있습니다. 애플리케이션 또는 데이터베이스 노드에 대해 더 많은 성능, 메모리 또는 네트워크 대역폭이 필요한 경우 나중에 VM 구성을 변경할 수 있습니다.
배치
이 참조 아키텍처의 Terraform 코드는 Oracle Cloud Infrastructure Resource Manager에서 샘플 스택으로 사용할 수 있습니다. GitHub에서 코드를 다운로드하고 특정 요구 사항에 맞게 사용자 정의할 수도 있습니다.
- Oracle Cloud Infrastructure Resource Manager의 샘플 스택을 사용하여 배포합니다.
을 누릅니다.
아직 사인인하지 않은 경우 테넌시 및 사용자 인증서를 입력합니다.
- 조건 및 조항을 검토하고 수락합니다.
- 스택을 배치할 영역을 선택합니다.
- 화면의 프롬프트와 지침에 따라 스택을 생성합니다.
- 스택을 생성한 후 Terraform 작업을 누르고 계획을 선택합니다.
- 작업이 완료될 때까지 기다린 후 계획을 검토합니다.
내용을 변경하려면 [스택 세부정보] 페이지로 돌아가서 스택 편집을 누르고 필요에 따라 변경합니다. 그런 다음 계획 작업을 다시 실행합니다.
- 추가 변경이 필요하지 않은 경우 스택 세부정보 페이지로 돌아가서 Terraform 작업을 누르고 적용을 선택합니다.
- GitHub에서 Terraform 코드를 사용하여 배포합니다.
- GitHub로 이동하십시오.
- 저장소를 로컬 컴퓨터에 복제하거나 다운로드합니다.
README
문서의 지침을 따릅니다.