다음을 통해 공유


Azure Kubernetes Service의 WordPress

Azure Managed Redis
Azure Front Door
AKS(Azure Kubernetes Service)
Azure Load Balancer
Azure NetApp Files

이 문서에서는 Azure에서 스토리지 집약적인 대규모 WordPress 설치를 호스트하는 컨테이너 솔루션에 대해 설명합니다. 솔루션은 확장성 및 보안을 최대화합니다. 주요 구성 요소로는 Azure Front Door, AKS(Azure Kubernetes Service)Azure NetApp Files가 있습니다.

아키텍처

AKS WordPress 배포의 아키텍처 다이어그램. Azure NetApp Files는 정적 콘텐츠를 저장합니다. 프라이빗 엔드포인트는 다른 서비스에 대한 액세스를 제공합니다.

이 아키텍처의 Visio 파일을 다운로드합니다.

참고 항목

WordPress 호스팅 방법에 적용되는 팁과 권장 사항을 구현하여 이 솔루션을 확장할 수 있습니다. WordPress 설치를 배포하는 방법에 대한 일반적인 팁은 Azure의 WordPress를 참조하세요.

데이터 흐름

다음 데이터 흐름은 이전 다이어그램에 해당합니다.

  1. 사용자는 Azure Web Application Firewall을 사용하도록 설정된 Azure Front Door를 통해 프런트 엔드 웹 사이트에 액세스합니다.

  2. Azure Front Door는 Azure Load Balancer의 내부 인스턴스를 원본으로 사용합니다. 내부 부하 분산 장치는 AKS의 숨겨진 구성 요소입니다. Azure Front Door는 캐시되지 않은 모든 데이터를 검색합니다.

  3. 내부 부하 분산 장치는 AKS 내의 Pod에 수신 트래픽을 분산합니다.

  4. Azure Key Vault는 X.509 인증서인 프라이빗 키를 포함한 비밀을 저장합니다.

  5. WordPress 애플리케이션은 프라이빗 엔드포인트를 사용하여 Azure Database for MySQL의 유연한 서버 인스턴스에 액세스합니다. WordPress 애플리케이션은 이 관리되는 데이터베이스 서비스에서 동적 정보를 검색합니다.

  6. 모든 정적 콘텐츠는 Azure NetApp Files에서 호스트됩니다. 이 솔루션은 NFS(네트워크 파일 시스템) 프로토콜과 함께 Astra Trident CSI(Container Storage Interface) 드라이버를 사용합니다.

구성 요소

  • AKS 는 컨테이너화된 애플리케이션을 배포, 관리 및 확장하는 데 사용할 수 있는 관리되는 Kubernetes 서비스입니다. 이 아키텍처에서 AKS는 WordPress 컨테이너를 호스트하고 고가용성 및 확장성을 보장하기 위해 컨테이너화된 WordPress 애플리케이션을 실행하는 오케스트레이션 플랫폼을 제공합니다.

  • Azure Cache for Redis 는 관리되는 메모리 내 데이터 저장소 및 캐싱 서비스입니다. 이 아키텍처에서 Azure Cache for Redis는 모든 Pod가 공유하는 키-값 캐시를 호스트합니다. WordPress 성능 최적화 플러그 인은 캐시를 사용하여 응답 시간을 개선합니다.

  • Azure Database for MySQL - 유연한 서버 는 오픈 소스 MySQL 데이터베이스 엔진을 기반으로 하는 관리형 관계형 데이터베이스 서비스입니다. 이 아키텍처에서 이 데이터베이스는 WordPress 데이터를 저장합니다.

  • Azure DDoS Protection 은 향상된 DDoS(분산 서비스 거부) 완화 기능을 제공하는 네트워크 보안 서비스입니다. 이 아키텍처에서 DDoS Protection은 애플리케이션 디자인 모범 사례와 결합되고 경계 네트워크에서 사용하도록 설정된 경우 DDoS 공격을 방어하는 데 도움이 됩니다.

  • Azure Front Door 는 최신 클라우드 콘텐츠 배달 네트워크 및 글로벌 부하 분산 장치입니다. 이 아키텍처에서 Azure Front Door는 WordPress 배포의 공개 진입점입니다.

  • Azure NetApp Files 는 관리형, 성능 집약적 및 대기 시간에 민감한 스토리지 솔루션입니다. 이 아키텍처에서 Azure NetApp Files는 모든 Pod가 고성능 파일 스토리지를 통해 공유 데이터에 액세스할 수 있도록 WordPress 콘텐츠를 호스트합니다.

  • Azure Virtual Network 는 배포된 리소스가 서로, 인터넷 및 온-프레미스 네트워크와 통신할 수 있도록 하는 네트워킹 서비스입니다. 이 아키텍처에서 가상 네트워크는 격리 및 구분을 제공합니다.

  • Key Vault 는 비밀, 인증서, 키 및 암호에 대한 액세스를 저장하고 제어하는 클라우드 서비스입니다. 이 아키텍처에서 Key Vault는 Pod에 필요한 경우 AKS 클러스터에 비밀을 제공합니다.

  • Load Balancer 는 규칙 및 상태 프로브 결과에 따라 인바운드 트래픽을 분산하는 계층 4 부하 분산 장치입니다. 이 아키텍처에서 부하 분산 장치는 대기 시간이 짧고 처리량이 높은 Azure Front Door에서 수신 컨트롤러 Pod로 트래픽을 분산합니다.

  • NSG(네트워크 보안 그룹) 는 원본 또는 대상 IP 주소, 포트 및 프로토콜에 따라 인바운드 또는 아웃바운드 네트워크 트래픽을 허용하거나 거부하는 보안 규칙을 사용하는 보안 기능입니다. 이 아키텍처에서 NSG 규칙은 서브넷의 애플리케이션 구성 요소 간에 트래픽 흐름을 제한합니다.

대안

  • Azure Cache for Redis 관리형 서비스를 사용하는 대신 AKS 클러스터 내에서 자체 호스팅 Pod를 캐시로 사용할 수 있습니다.

  • Azure NetApp Files와 같은 관리되는 스토리지 솔루션을 사용하는 대신 Rook-Ceph 스토리지와 같은 자체 호스팅 솔루션을 사용할 수 있습니다. 자세한 내용은 AKS에서 Rook Ceph 사용을 참조하세요.

  • AKS를 사용하는 대신 Azure Container Apps 를 사용하여 컨테이너화된 WordPress 워크로드를 호스트할 수 있습니다. Container Apps는 더 간단하거나 규모가 작은 시나리오에 적합한 관리형 서버리스 컨테이너 서비스입니다. 스토리지를 많이 사용하고 사용자 지정이 용이한 대규모 배포의 경우 AKS를 사용합니다.

시나리오 정보

이 예제 시나리오는 스토리지 집약적인 대규모 WordPress 설치에 가장 적합합니다. 이 배포 모델은 사이트로의 트래픽 급증에 맞게 확장할 수 있습니다.

잠재적인 사용 사례

  • WordPress를 콘텐츠 관리 시스템으로 사용하는 트래픽이 많은 블로그
  • WordPress를 사용하는 비즈니스 또는 전자 상거래 웹 사이트

고려 사항

이러한 고려 사항은 워크로드의 품질을 향상시키는 데 사용할 수 있는 일련의 기본 원칙인 Azure Well-Architected Framework의 핵심 요소를 구현합니다. 자세한 내용은 Well-Architected Framework를 참조하세요.

안정성

안정성은 애플리케이션이 고객에 대한 약정을 충족할 수 있도록 하는 데 도움이 됩니다. 자세한 내용은 안정성에 대한 디자인 검토 검사 목록을 참조하세요.

이 솔루션을 배포할 때 다음 권장 사항을 고려합니다.

  • AKS의 Pod 및 부하 분산 장치를 사용하여 수신 트래픽을 분산합니다. 이 방법은 Pod 오류가 발생하더라도 고가용성을 제공합니다.

  • 모든 네트워킹 구성 요소를 Azure Front Door 뒤에 배치합니다. 이 접근 방식을 사용하면 네트워킹 리소스와 애플리케이션이 트래픽을 방해하고 사용자 액세스에 영향을 줄 수 있는 문제에 대해 복원력을 줍니다.

  • Azure Front Door를 사용하여 모든 응답을 캐시하여 작은 가용성 이점을 얻을 수 있습니다. 특히 원본이 응답하지 않는 경우 콘텐츠에 계속 액세스할 수 있습니다. 그러나 캐싱은 완전한 가용성 솔루션을 제공하지 않습니다.

  • 쌍을 이루는 지역 간에 Azure NetApp Files 스토리지를 복제하여 가용성을 높입니다. 자세한 내용은 Azure NetApp Files 복제 이해를 참조하세요.

  • Azure Database for MySQL 가용성을 높이기 위해 요구 사항을 충족하는 고가용성 옵션을 따릅니다.

  • 솔루션은 여러 지역, 데이터 복제 및 자동 크기 조정을 지원합니다. 구성 요소는 Pod에 트래픽을 분산합니다. 상태 프로브는 정상 Pod만 트래픽을 수신하도록 합니다.

  • Azure Front Door는 다른 지역에 배포된 가상 머신 확장 집합을 지원하는 글로벌 서비스입니다.

보안

보안은 의도적인 공격 및 중요한 데이터 및 시스템의 오용에 대한 보증을 제공합니다. 자세한 내용은 보안성에 대한 디자인 검토 검사 목록을 참조하세요.

이 솔루션을 배포할 때 다음 모범 사례를 고려합니다.

  • Azure Front Door의 웹 애플리케이션 방화벽을 사용하여 프런트 엔드 애플리케이션 계층으로 이동하는 가상 네트워크 트래픽을 보호합니다. 자세한 내용은 Azure Front Door의 웹 애플리케이션 방화벽을 참조하세요.

  • 아웃바운드 인터넷 트래픽이 데이터베이스 계층에서 흐르는 것을 허용하지 않습니다.

  • 프라이빗 스토리지에 대한 공용 액세스를 허용하지 않고 리소스에 대한 공용 액세스를 사용하지 않도록 설정합니다. Azure Database for MySQL, Azure Cache for Redis, Key Vault 및 Azure Container Registry에 프라이빗 엔드포인트를 사용합니다. 자세한 내용은 Azure Private Link를 참조하세요.

자세한 내용은 일반 WordPress 보안 및 성능 팁 및Azure 보안 설명서를 참조하세요.

비용 최적화

비용 최적화는 불필요한 비용을 줄이고 운영 효율성을 개선하는 방법에 중점을 둡니다. 자세한 내용은 비용 최적화를 위한 디자인 검토 검사 목록을 참조하세요.

이 솔루션을 배포할 때 다음 비용 고려 사항을 검토합니다.

  • 트래픽 기대치(GB/월): 트래픽 볼륨이 비용에 가장 큰 영향을 줍니다. 수신하는 트래픽 양에 따라 필요한 AKS 노드 수와 아웃바운드 데이터 전송 가격이 결정됩니다. 트래픽 볼륨은 또한 아웃바운드 데이터 전송 비용이 더 저렴한 콘텐츠 배달 네트워크에서 제공하는 데이터의 양과 직접적인 상관 관계가 있습니다.

  • 호스트된 데이터의 양: Azure NetApp Files 가격 책정은 예약된 용량을 기반으로 하므로 호스팅하는 데이터의 양을 고려합니다. 비용을 최적화하려면 데이터에 필요한 최소 용량을 예약합니다.

  • 쓰기 백분율: 웹 사이트에 작성하는 새 데이터의 양과 저장하는 비용을 고려합니다. 다중 지역 배포의 경우 웹 사이트에 쓰는 새 데이터의 양은 지역 전체에서 미러된 데이터의 양과 상관 관계가 있습니다.

  • 정적 및 동적 콘텐츠: 데이터베이스 스토리지 성능 및 용량을 모니터링하여 저렴한 SKU가 사이트를 지원할 수 있는지 여부를 확인합니다. 데이터베이스는 동적 콘텐츠를 저장하고 콘텐츠 배달 네트워크는 정적 콘텐츠를 캐시합니다.

  • AKS 클러스터 최적화: AKS 클러스터 비용을 최적화하려면 VM(가상 머신) 크기 및 Azure 예약에 대한 지침과 같은 AKS에 대한 일반적인 팁을 따릅니다. 자세한 내용은 AKS 비용 최적화를 참조하세요.

성능 효율성

성능 효율성은 사용자 요구를 효율적으로 충족하기 위해 워크로드의 크기를 조정하는 기능을 의미합니다. 자세한 내용은 성능 효율성에 대한 디자인 검토 검사 목록을 참조하세요.

이 시나리오에서는 AKS의 Pod를 사용하여 프런트 엔드를 호스트합니다. 자동 크기 조정 기능을 사용하면 프런트 엔드 애플리케이션 계층을 실행하는 Pod 수가 고객의 요구에 따라 자동으로 확장할 수 있습니다. 정의된 일정에 따라 크기를 조정할 수도 있습니다. 자세한 내용은 AKS의 애플리케이션에 대한 크기 조정 옵션을 참조하세요.

중요합니다

최상의 성능을 위해 NFS 프로토콜 버전 4.1을 사용하는 영구 볼륨을 탑재합니다. 다음 YAML 예제에서는 이 목적을 위해 개체를 PersistentVolume 구성하는 방법을 보여 있습니다. 필드 값을 확인합니다 mountOptions .

kind: PersistentVolume
...
    accessModes:
    - ReadWriteMany
    mountOptions:
    - vers=4.1
    nfs:
      server: xx.xx.xx.xx

참가자

Microsoft는 이 문서를 유지 관리합니다. 다음 기여자는 이 문서를 작성했습니다.

보안 주체 작성자:

기타 기여자:

  • Adrian Calinescu | 선임 클라우드 솔루션 아키텍트

LinkedIn 비공개 프로필을 보려면, LinkedIn에 로그인하세요.

다음 단계

제품 설명서:

Microsoft 학습 모듈: