MySQL Database Service에 연결된 Apache Tomcat 배포

Apache Tomcat ® 은 오픈 소스 Java 애플리케이션 서버입니다. Java 서블릿, JavaServer Pages, Java 표현식 언어 및 Java WebSocket 기술을 구현합니다.

MySQL Database Service는 완전히 관리되는 Oracle Cloud Infrastructure 고유 서비스입니다. Oracle의 MySQL 팀에서 개발, 관리 및 지원합니다. 백업 및 복구, 데이터베이스 및 운영 체제 패치 적용 등과 같은 작업은 자동화됩니다. 데이터, 스키마 설계 및 액세스 정책 관리만 담당합니다.

구조

참조 아키텍처에는 로드 밸런서, Apache Tomcat이 있는 애플리케이션 계층 및 HA가 사용으로 설정된 MySQL Database Service가 포함된 데이터베이스 계층이 포함됩니다.

구성요소가 다른 서브넷에 있습니다. 로드 밸런서가 공용 서브넷에 있습니다. Tomcat 서버는 전용 서브넷을 공유하며 데이터베이스는 자체 전용 서브넷에 있습니다. 모든 외부 액세스는 인터넷 게이트웨이를 통해 로드 밸런서를 통해 이루어집니다.

HA가 사용으로 설정된 MySQL Database 서비스는 클러스터의 추상화입니다. 여기에는 세 개의 MySQL 인스턴스가 있지만 단일 끝점이 있습니다. 한 인스턴스는 기본 인스턴스이고 다른 두 인스턴스는 보조 인스턴스입니다. Primary에는 데이터베이스에 대한 읽기 및 쓰기를 허용하는 단일 끝점이 있습니다. 보조 서버는 기본 데이터베이스에서 복제된 데이터를 수신합니다. 보조 서버에 대한 직접 액세스는 허용되지 않습니다.

실패 또는 수동 스위치오버의 경우 보조 노드 중 하나가 새 기본 서버가 되고 끝점이 해당 기본 노드로 재지정됩니다. 즉, 끝점 IP 주소는 변경되지 않으며 응용 프로그램을 업데이트할 필요가 없습니다.

데이터베이스를 사용한 응용 프로그램 세션 관리를 보여 주는 샘플 응용 프로그램이 포함되어 있습니다.

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

아래 링크를 누르면 Architecture-deploy-tomcat-mds-ha.png에 대한 설명을 볼 수 있습니다.
그림 Architecture-deploy-tomcat-mds-ha.png에 대한 설명

architecture-deploy-tomcat-mds-oracle.zip

서브넷이 지역별 서브넷인 경우 세 개의 MySQL 인스턴스가 서로 다른 가용성 도메인과 결함 도메인에 배치됩니다. 단일 가용성 도메인이 있는 영역에서 MySQL 인스턴스는 동일한 가용성 도메인 내의 서로 다른 결함 도메인에 배치됩니다.

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

  • 지역

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

  • 가용성 도메인

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

  • 결함 도메인

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

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

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

  • 로드 밸런서

    Oracle Cloud Infrastructure Load Balancing 서비스는 단일 시작점에서 백엔드의 여러 서버로 자동화된 트래픽 분배를 제공합니다.

  • 보안 목록

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

  • 경로 테이블

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

  • 인터넷 게이트웨이

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

  • Tomcat 서버

    Tomcat 서버는 Java 서블릿, JavaServer Pages, Java 표현식 언어 및 Java WebSockets를 호스트합니다. 애플리케이션이 이 층에 존재합니다.

  • 데이터베이스 서버

    Tomcat은 JDBC(Java Database Connectivity) 를 제공하는 모든 데이터베이스에 연결할 수 있습니다. 이 구조는 MySQL Database 서비스를 사용합니다.

  • 배스천 호스트

    배스천 호스트는 클라우드 외부의 토폴로지에 대한 안전한 제어된 시작점 역할을 하는 컴퓨트 인스턴스입니다. 배스천 호스트는 일반적으로 DMZ(완충 영역) 에서 프로비전됩니다. 클라우드 외부에서 직접 액세스할 수 없는 전용 네트워크에 중요한 리소스를 배치하여 보호할 수 있습니다. 토폴로지에는 정기적으로 모니터하고 감사할 수 있는 알려진 단일 시작점이 있습니다. 따라서 위상에 대한 액세스를 손상시키지 않고 위상의 보다 민감한 구성요소가 노출되지 않도록 할 수 있습니다.

권장 사항

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

  • VCN

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

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

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

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

  • 로드 밸런서

    이 아키텍처는 Always Free 계층에 포함된 10Mbps 로드 밸런서를 사용합니다. 필요한 동시 연결 수와 총 처리량에 따라 더 큰 모양을 사용할 수 있습니다. 처리량은 언제든지 편집할 수 있습니다.

    로드 밸런서의 IP 주소는 예약할 수 없으므로 DNS 이름을 사용하는 것이 좋습니다.

  • 인스턴스

    모든 테넌시는 Tomcat 서버에 이 아키텍처가 사용하는 두 개의 항상 무료 컴퓨트 VM(가상 머신) 인스턴스를 가져옵니다.

    더 많은 처리 능력이 필요한 경우 다른 구성을 선택할 수 있습니다.

  • 데이터베이스 시스템

    MySQL에 접속: 최신 MySQL 클라이언트를 설치하고 MySQL Yum 저장소에서 MySQL 셸도 설치합니다. MySQL Yum 저장소 사용에 대한 링크는 추가 정보 섹션을 참조하십시오.

  • 저장 영역

    이 구조의 Instance는 일반 블록 저장 영역을 사용하므로 추가 성능이 필요하지 않습니다.

  • 네트워크 접속

    사이트 간 VPN 또는 FastConnect 전용 접속을 사용하여 기존 온-프레미스 기반 구조에 접속하여 환경을 관리할 수 있습니다.

    환경을 기존 인프라와 분리하거나 외부에 액세스해야 하는 경우 배스천 호스트가 관리 연결을 보호할 수 있습니다. 배스천 호스트는 일반적으로 DMZ(완충 영역) 에서 프로비전됩니다. 클라우드 외부에서 직접 액세스할 수 없는 개인 네트워크에 배치하여 민감한 리소스를 보호합니다. 구조에 대한 액세스를 손상시키지 않고 아키텍처의 보다 민감한 구성 요소가 노출되지 않도록 할 수 있습니다.

고려 사항

이 참조 구조를 배치할 때는 다음 사항을 고려하십시오.

  • 성능

    인스턴스 구성(Intel 시리즈를 사용하는 경우) 또는 OCPU 및 메모리(AMD 시리즈를 사용하는 경우) 를 개별적으로 변경하여 애플리케이션별 요구에 맞게 성능을 조정할 수 있습니다.

    지금은 데이터베이스 인스턴스를 변경할 수 없습니다. 작성할 때 적절한 크기를 선택합니다.

  • 보안

    배스천 호스트(있는 경우) 및 로드 밸런서를 제외하고 모든 구성요소는 전용 서브넷에 배치되어야 합니다.

    엄격한 보안이 필요한 경우 Oracle 보안 영역을 활용하십시오. 추가 비용 없이 포함됩니다.

  • 가용성

    로드 밸런서는 대기 인스턴스와 함께 제공되며 페일오버가 발생하는 경우 개입이 필요하지 않습니다.

    Tomcat 서버는 쌍으로 배포되며 로드 밸런서에 의해 균형이 조정됩니다. 각 Tomcat 인스턴스는 서로 다른 결함 도메인에 있습니다.

    원하는 RPO(복구 지점 목표) 에 맞게 필요한 만큼 데이터베이스를 백업합니다.

    가끔 사용하지 않지만 조직의 요구에 맞게 MySQL Database Service의 유지 관리 창을 조정합니다.

  • 비용

    이 아키텍처의 비용은 인스턴스, 데이터베이스 및 로드 밸런서의 크기와 구성에 따라 달라집니다. 변동 원가가 있는 구성품이 없습니다.

배치

이 참조 구조를 배치하는 데 필요한 코드는 GitHub에서 사용할 수 있습니다. 한 번의 클릭으로 코드를 Oracle Cloud Infrastructure Resource Manager로 가져와서 스택을 생성하고 배치할 수 있습니다. 또는 Terraform CLI를 사용하여 GitHub에서 컴퓨터로 코드를 다운로드하고, 코드를 사용자정의하고, 구조를 배치합니다.

  • Oracle Cloud Infrastructure Resource Manager를 사용하여 배치:
    1. Oracle Cloud에 배치 누릅니다.

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

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

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

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

변경 로그

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