MySQL Database Service를 이용해 Oracle Linux에서 Joomla CMS 배포

Joomla를 MySQL Database Service와 함께 Oracle Linux에 구축하면 확장 가능하고 강력한 아키텍처, 구현 및 유지 관리, 그리고 대규모 커뮤니티 주도 지식 기반에 대한 액세스를 제공할 수 있습니다.

LAMP 스택 기반의 Joomla는 가장 널리 사용되는 컨텐츠 관리 시스템 중 하나입니다. GNU Public License에 따라 무료 오픈 소스이며 설정 및 사용을 위한 고급 기술 기술이 필요하지 않습니다.

구조

Joomla는 단일 노드 구성이나 고가용성 다중 노드 구성의 일부로 배포할 수 있습니다. 이 참조 아키텍처에는 두 구성 모두와 호환되는 Terraform 자동화가 포함되어 있습니다.

프로덕션급 고가용성 아키텍처의 경우 다중 노드 시나리오를 보여주는 다음 다이어그램을 참조하십시오.

다음은 joomla-mds-multi.png에 대한 설명입니다.
그림 joomla-mds-multi.png에 대한 설명

joomla-mds-multi-oracle.zip

앞의 다이어그램은 로드 밸런서 뒤의 가상 머신 인스턴스 2개에 초점을 맞춰 OCI에서 간소화된 고가용성 애플리케이션 환경을 보여줍니다. 이러한 인스턴스는 가용성 도메인 내 두 개의 개별 장애 도메인에 있습니다. 이 구조는 OCI 파일 스토리지 서비스를 사용합니다. Joomla는 NFS(공유 네트워크 파일 시스템)에 설치되어 있습니다. 파일 시스템은 모든 인스턴스에서 마운트 대상에 액세스할 수 있도록 해주는 NSG(네트워크 보안 그룹)가 포함된 전용 전용 서브넷에 있습니다.

다음 다이어그램은 간단한 단일 노드 구조를 보여줍니다. 경량 배포로 구성되며, 학습용으로 적합하거나 개념 증명 역할을 할 수 있습니다.

다음은 joomla-mds-single.png에 대한 설명입니다.
joomla-mds-single.png에 대한 설명

joomla-mds-single-oracle.zip

이 단일 노드 구조는 경량 배포의 예로, 학습용으로 적합하거나 개념 증명으로 사용할 수 있습니다. 단일 VM 인스턴스와 독립형 MySQL DB 시스템을 제공합니다. 인스턴스는 공용 서브넷에 위치하며 인터넷에서 액세스할 수 있는 반면 MySQL DB 시스템은 전용 서브넷에 배치됩니다. 보안 목록 및 경로 테이블은 트래픽을 제한하고 경로를 지정하는 데 사용됩니다.

다중 노드 구조에는 다음과 같은 OCI 구성요소가 포함됩니다.
  • 테넌시

    테넌시는 Oracle Cloud Infrastructure 등록 시 Oracle이 Oracle Cloud에서 설정하는 안전하게 격리된 파티션입니다. 테넌시 내 Oracle Cloud에서 리소스를 생성, 구성 및 관리할 수 있습니다. 테넌시는 회사 또는 조직과 동의어입니다.

  • 정책

    Oracle Cloud Infrastructure Identity and Access Management 정책은 어떤 리소스에 액세스할 수 있는 사람과 방법을 지정합니다. 그룹 및 구획 레벨에서 액세스 권한이 부여되므로 특정 구획 또는 테넌시에서 그룹에 특정 유형의 액세스 권한을 부여하는 정책을 작성할 수 있습니다.

  • 구획

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

  • VCN(가상 클라우드 네트워크)

    OCI의 첫 번째 단계 중 하나는 클라우드 리소스에 대한 VCN(가상 클라우드 네트워크)을 설정하는 것입니다. VCN은 OCI 지역에 설정한 소프트웨어 정의 네트워크입니다. VCN은 특정 지역 또는 가용성 도메인에 고유할 수 있는 서브넷으로 나눌 수 있습니다. 영역별 서브넷과 가용성 도메인별 서브넷 모두 동일한 VCN에 공존할 수 있습니다. 서브넷은 공용 또는 전용일 수 있습니다.

  • 가용성 도메인

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

  • 로드 밸런서

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

  • Compute Instance

    Oracle Cloud Infrastructure Compute를 통해 컴퓨트 호스트를 프로비저닝하고 관리할 수 있습니다. 리소스 요구사항(CPU, 메모리, 네트워크 대역폭, 스토리지)을 충족하는 구성으로 컴퓨트 인스턴스를 실행할 수 있습니다. 컴퓨트 인스턴스를 만든 후 안전하게 접근하여 다시 시작하고, 볼륨을 연결 및 분리하고, 필요하지 않을 경우 종료할 수 있습니다.

  • 인터넷 게이트웨이

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

  • DRG(Dynamic Routing Gateway)

    DRG는 온프레미스 네트워크와 VCN 간의 전용 네트워크 트래픽 경로를 제공하는 가상 라우터이며 동일한 지역 또는 지역 간 VCN 간 트래픽 경로를 지정하는 데 사용될 수도 있습니다.

  • NSG(네트워크 보안 그룹)

    NSG는 클라우드 리소스에 대한 가상 방화벽 역할을 합니다. Oracle Cloud Infrastructure의 신뢰할 수 없는 보안 모델을 사용하면 모든 트래픽이 거부되며 VCN 내에서 네트워크 트래픽을 제어할 수 있습니다. NSG는 단일 VCN의 지정된 VNIC 집합에만 적용되는 일련의 수신 및 송신 보안 규칙으로 구성됩니다.

  • 파일 저장 영역

    Oracle Cloud Infrastructure File Storage 서비스는 내구성과 확장성이 뛰어나고 안전한 엔터프라이즈급 네트워크 파일 시스템을 제공합니다. VCN의 베어메탈, 가상 머신 또는 컨테이너 인스턴스에서 파일 스토리지 서비스 파일 시스템에 연결할 수 있습니다. Oracle Cloud Infrastructure FastConnect 및 IPSec VPN을 사용하여 VCN 외부에서 파일 시스템에 접근할 수도 있습니다.

권장사항

다음 권장 사항을 MySQL Database Service와 함께 Oracle Linux에 Joomla를 배포하는 시작점으로 사용합니다. 요구 사항은 여기에 설명된 아키텍처와 다를 수 있습니다.
  • VCN

    VCN을 생성할 때 각 서브넷의 클라우드 리소스에 필요한 IP 주소 수를 확인하십시오. CIDR(Classless Inter-Domain Routing) 표기법을 사용하여 필요한 IP 주소에 충분히 큰 서브넷 마스크 및 네트워크 주소 범위를 지정합니다. 표준 전용 IP 주소 공간 내에 있는 주소 범위를 사용합니다.

    필요한 경우 VCN과 온프레미스 네트워크 간의 연결을 설정할 수 있도록 온프레미스 네트워크 또는 다른 네트워크와 겹치지 않는 주소 범위를 선택하십시오.

    서브넷을 설계할 때는 트래픽 플로우와 보안 요구사항을 고려하십시오. 동일한 계층 또는 역할 내의 모든 컴퓨트 인스턴스를 동일한 서브넷에 연결하며 이는 보안 경계 역할을 합니다.

  • 보안

    정책을 사용하여 기업이 OCI 리소스에 액세스할 수 있는 사용자 및 액세스 방법을 제한합니다. Vault를 사용하여 키, 인증서 및 암호를 추가로 보호합니다.

    네트워킹 서비스는 보안 규칙을 사용하여 패킷 레벨에서 트래픽을 제어하는 두 가지 가상 방화벽 기능(보안 목록 및 NSG(네트워크 보안 그룹)을 제공합니다. NSG는 단일 VCN에서 선택한 VNIC 집합에만 적용되는 수신 및 송신 보안 규칙 집합으로 구성됩니다. 예를 들어, VCN의 다중 계층 애플리케이션의 웹 계층에서 웹 서버로 작동하는 컴퓨트 인스턴스를 모두 선택할 수 있습니다.

    NSG 보안 규칙은 보안 목록 규칙과 동일하게 작동합니다. 그러나 NSG 보안 규칙의 소스 또는 대상의 경우 CIDR 블록 대신 NSG를 지정할 수 있습니다. 따라서 동일한 VCN의 두 NSG 또는 단일 NSG 내의 트래픽 간에 트래픽을 제어하는 보안 규칙을 쉽게 작성할 수 있습니다. 데이터베이스 시스템을 생성할 때 하나 이상의 NSG를 지정할 수 있습니다. 하나 이상의 NSG를 사용하도록 기존 데이터베이스 시스템을 업데이트할 수도 있습니다.

  • 컴퓨트

    각 인스턴스에 대해 적절한 OCPU 및 메모리 조합을 선택하고 필요에 따라 로컬 NVMe 및/또는 블록 스토리지를 프로비저닝합니다. OCPU와 메모리 결합 시 더 많은 유연성을 제공하는 사용 가능한 유연한 구성을 사용하는 것이 좋습니다.

  • 데이터베이스

    계획된 작업 로드에 따라 Oracle MySQL Database Service 구성을 선택합니다. 3개의 중복 노드에 대해 MySQL High Availability를 사용으로 설정합니다.

고려 사항

MySQL Database Service를 사용하여 Oracle Linux에 Joomla를 배포할 때 다음 구현 요인을 고려하십시오.

  • 애플리케이션 가용성 및 확장성

    이 예에서 고가용성 아키텍처에서는 동일한 가용성 도메인 내 서로 다른 장애 도메인에 두 개의 인스턴스를 보여줍니다. 다른 가용성 도메인(사용 가능한 지역)에 인스턴스를 배치하여 내결함성까지 높일 수 있습니다.

    인스턴스 풀과 자동 크기 조정을 사용하여 요구량이 많은 경우에 보다 동적으로 조정 및 성능 요구 사항에 맞게 조정할 수 있는 대체 접근 방법입니다.

    • 인스턴스 풀을 사용하면 동일한 지역 내의 동일한 구성을 기반으로 여러 컴퓨트 인스턴스를 프로비저닝하고 생성할 수 있습니다.
    • 자동 크기 조정을 사용하면 CPU 사용률과 같은 성능 측정지표를 기반으로 인스턴스 풀의 컴퓨트 인스턴스 수를 자동으로 조정할 수 있습니다. 자동 크기 조정을 통해 높은 수요 기간 동안 사용자에게 일관된 성능을 제공하고 낮은 수요 기간 동안 비용을 절감할 수 있습니다.
  • 데이터베이스 가용성 및 확장성

    고가용성 아키텍처에 표시되는 MySQL Database 시스템은 기본 제공 MySQL 고가용성 옵션을 사용하므로 세 개의 인스턴스를 생성하고 다른 장애 도메인에 배치합니다.

  • 데이터베이스 백업
    MySQL Database Service는 두 가지 백업 유형, 즉 데이터베이스 시스템에 포함된 모든 데이터의 전체 백업과 마지막 전체 백업 이후에 추가되거나 변경된 데이터만 증분 백업을 지원합니다. 백업은 다음과 같은 방식으로 실행됩니다.
    • 수동: 콘솔의 작업 또는 API를 통한 요청이 백업을 시작합니다. 수동 백업은 최소 1일, 최대 365일 동안 보존할 수 있습니다. 자동: 사용자가 선택할 때 필요한 상호 작용 없이 자동으로 예약된 백업이 실행됩니다.
    • 자동 백업은 1-35일 동안 보존됩니다. 기본 보존 값은 7일입니다. 정의된 경우 자동 백업의 보존 기간을 편집할 수 없습니다.
  • 컴퓨팅 백업

    Oracle Cloud Infrastructure Block Volumes 서비스를 사용하면 블록 볼륨에 데이터 포인트 인 타임 백업을 수행할 수 있습니다. 그런 다음 이러한 백업을 즉시 또는 나중에 새 볼륨으로 복원할 수 있습니다. 또한 이 서비스를 사용하여 애플리케이션 중단이나 다운타임 없이 부팅 볼륨의 특정 시점, 충돌 시 정합성이 보장되는 백업을 만들 수 있습니다. 부트 볼륨 백업 기능은 블록 볼륨 백업 기능과 동일합니다.

  • 보안 정책

    정책을 사용하여 기업이 보유한 OCI 리소스 및 방법에 액세스할 수 있는 사용자를 제한합니다.

  • 네트워크 보안

    네트워킹 서비스는 보안 규칙을 사용하여 패킷 레벨에서 트래픽을 제어하는 두 가지 가상 방화벽 기능(보안 목록 및 NSG(네트워크 보안 그룹)을 제공합니다. NSG는 단일 VCN에서 선택한 VNIC 집합에만 적용되는 수신 및 송신 보안 규칙 집합으로 구성됩니다. 예를 들어, VCN에 있는 다계층 애플리케이션의 웹 계층에서 웹 서버로 작동하는 컴퓨트 인스턴스를 모두 선택할 수 있습니다.

    NSG 보안 규칙은 보안 목록 규칙과 동일하게 작동합니다. 그러나 NSG 보안 규칙의 소스 또는 대상의 경우 CIDR 블록 대신 NSG를 지정할 수 있습니다. 따라서 동일한 VCN의 두 NSG 또는 단일 NSG 내의 트래픽 간에 트래픽을 제어하는 보안 규칙을 쉽게 작성할 수 있습니다. 데이터베이스 시스템을 생성할 때 하나 이상의 NSG를 지정할 수 있습니다. 하나 이상의 NSG를 사용하도록 기존 데이터베이스 시스템을 업데이트할 수도 있습니다.

    이 예에서는 인스턴스가 공용 서브넷에 존재하는 것으로 표시됩니다. 보안을 강화하려면 전용 서브넷에 배치하는 것이 좋습니다. 이 경우 인스턴스에 액세스하려면 배스천이 필요합니다.

배치

이 참조 아키텍처에 대한 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 문서의 지침을 따릅니다.

감사의 글

  • 작성자: Nuno Gonçalves
  • 기여자: Lukasz Feldman