편집

다음을 통해 공유


Azure Kubernetes Service의 WordPress

Azure Cache for 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가 있습니다.

아키텍처

Architecture diagram of an AKS WordPress deployment. Azure NetApp Files stores static content. Private endpoints provide access to other services.

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

참고 항목

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

데이터 흐름

  • 사용자는 Azure Web Application Firewall을 사용하도록 설정된 Azure Front Door를 통해 프런트 엔드 웹 사이트에 액세스합니다.
  • Azure Front Door는 Azure Load Balancer의 내부 인스턴스를 원본으로 사용합니다. 내부 부하 분산 장치는 AKS의 숨겨진 구성 요소입니다. Azure Front Door는 캐시되지 않은 모든 데이터를 검색합니다.
  • 내부 부하 분산 장치는 AKS 내의 Pod에 수신 트래픽을 분산합니다.
  • Azure Key Vault는 X.509 인증서인 프라이빗 키와 같은 비밀을 저장합니다.
  • WordPress 애플리케이션은 프라이빗 엔드포인트를 사용하여 Azure Database for MySQL의 유연한 서버 인스턴스에 액세스합니다. WordPress 애플리케이션은 이 관리되는 데이터베이스 서비스에서 동적 정보를 검색합니다.
  • 모든 정적 콘텐츠는 Azure NetApp Files에서 호스트됩니다. 이 솔루션은 NFS 프로토콜과 함께 Astra Trident CSI(Container Storage Interface) 드라이버를 사용합니다.

구성 요소

  • Azure Front Door 는 최신 클라우드 콘텐츠 배달 네트워크입니다. Azure Front Door는 분산 서버 네트워크로서 사용자에게 웹 콘텐츠를 효율적으로 제공합니다. 콘텐츠 배달 네트워크는 최종 사용자 근처의 현재 상태 지점 위치에 에지 서버에 캐시된 콘텐츠를 저장하여 대기 시간을 최소화합니다.
  • Azure Virtual Network 는 배포된 리소스가 서로, 인터넷 및 온-프레미스 네트워크와 통신할 수 있는 방법을 제공합니다. 가상 네트워크는 격리 및 구분을 제공합니다. 또한 트래픽을 필터링 및 라우팅하고 다양한 위치 간에 연결을 설정할 수 있습니다. 이 솔루션에서 두 네트워크는 가상 네트워크 피어링을 통해 연결됩니다.
  • Azure DDoS Protection 은 향상된 DDoS 완화 기능을 제공합니다. 이러한 기능을 애플리케이션 디자인 모범 사례와 결합하면 DDoS 공격 방어에 도움이 됩니다. 경계 가상 네트워크에서 DDoS Protection을 사용하도록 설정해야 합니다.
  • 네트워크 보안 그룹은 보안 규칙 목록을 사용하여 원본 또는 대상 IP 주소, 포트 및 프로토콜에 따라 인바운드 또는 아웃바운드 네트워크 트래픽을 허용하거나 거부합니다. 이 시나리오의 서브넷에서 네트워크 보안 그룹 규칙은 애플리케이션 구성 요소 간의 트래픽 흐름을 제한합니다.
  • Load Balancer 는 규칙 및 상태 프로브 결과에 따라 인바운드 트래픽을 분산합니다. 부하 분산 장치는 짧은 대기 시간과 높은 처리량을 제공합니다. 부하 분산 장치는 여러 서버에 트래픽을 분산하여 TCP(Transmission Control Protocol) 및 UDP(사용자 데이터그램 프로토콜) 애플리케이션에 확장성을 추가합니다. 이 시나리오에서 부하 분산 장치는 콘텐츠 배달 네트워크에서 프런트 엔드 웹 서버로 트래픽을 분산합니다.
  • AKS 는 컨테이너화된 애플리케이션을 배포, 관리 및 확장하는 데 사용할 수 있는 완전히 관리되는 Kubernetes 서비스입니다.
  • Azure NetApp Files 는 완전히 관리되는 성능 집약적이고 대기 시간에 민감한 스토리지 솔루션을 제공합니다. 이 솔루션에서 Azure NetApp Files는 모든 Pod가 데이터에 액세스할 수 있도록 모든 WordPress 콘텐츠를 호스트합니다.
  • Azure Cache for Redis 는 메모리 내 데이터 저장소입니다. Azure Cache for Redis를 사용하여 이 솔루션에서 키-값 캐시를 호스트할 수 있습니다. 이 캐시는 모든 Pod 간에 공유되며 WordPress 성능 최적화 플러그 인에 사용됩니다.
  • Key Vault 는 암호, 인증서 및 키에 대한 액세스를 저장하고 제어합니다.
  • Azure Database for MySQL - 유연한 서버 는 오픈 소스 MySQL 데이터베이스 엔진을 기반으로 하는 관계형 데이터베이스 서비스입니다. 유연한 서버 배포 옵션은 데이터베이스 관리 기능 및 구성 설정에 대한 세부적인 제어 및 유연성을 제공하는 완전 관리형 서비스입니다. 이 시나리오에서 Azure Database for MySQL은 WordPress 데이터를 저장합니다.

대안

  • Azure Cache for Redis 관리형 서비스를 사용하는 대신 AKS 클러스터 내에서 자체 호스팅 Pod를 캐시로 사용할 수 있습니다.
  • Azure NetApp Files와 같은 관리되는 스토리지 솔루션을 사용하는 대신 Rook-Ceph 스토리지와 같은 자체 호스팅 솔루션을 사용할 수 있습니다. 자세한 내용은 Azure Kubernetes Service에서 Rook Ceph를 사용하는 방법을 참조하세요.

시나리오 정보

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

잠재적인 사용 사례

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

고려 사항

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

안정성

안정성은 애플리케이션이 고객에 대한 약속을 충족할 수 있도록 합니다. 자세한 내용은 안정성 핵심 요소 개요를 참조하세요.

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

  • 이 솔루션은 AKS의 Pod 및 부하 분산 장치를 사용하여 수신 트래픽을 분산합니다. 이 방법은 Pod 오류가 발생하더라도 고가용성을 제공합니다.
  • 솔루션은 여러 지역, 데이터 복제본(replica) 및 자동 크기 조정을 지원합니다. 구성 요소는 Pod에 트래픽을 분산합니다. 상태 프로브는 트래픽이 정상 Pod에만 분산되도록 사용됩니다.
  • 모든 네트워킹 구성 요소는 Azure Front Door에 의해 선행됩니다. 이 방법을 사용하면 네트워킹 리소스와 애플리케이션이 트래픽을 방해하고 최종 사용자 액세스에 영향을 주는 문제에 대해 복원력을 줍니다.
  • Azure Front Door는 다른 지역에 배포된 가상 머신 확장 집합을 지원하는 글로벌 서비스입니다.
  • Azure Front Door를 사용하여 모든 응답을 캐시하면 가용성이 약간 향상됩니다. 특히 원본이 응답하지 않는 경우 콘텐츠에 계속 액세스할 수 있습니다. 그러나 캐싱은 완전한 가용성 솔루션을 제공하지 않습니다.
  • 가용성을 높이려면 쌍을 이루는 지역 간에 Azure NetApp Files 스토리지를 복제본(replica). 자세한 내용은 Azure NetApp Files를 사용한 지역 간 복제본(replica)tion을 참조하세요.
  • Azure Database for MySQL 가용성을 높이려면 요구 사항에 맞는 고가용성 옵션을 따릅니다.

보안

우수한 보안은 중요한 데이터 및 시스템에 대한 고의적인 공격과 악용을 방어합니다. 자세한 내용은 보안 요소의 개요를 참조하세요.

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

  • Azure Front Door의 웹 애플리케이션 방화벽을 사용하여 프런트 엔드 애플리케이션 계층으로 이동하는 가상 네트워크 트래픽을 보호합니다. 자세한 내용은 Azure Front Door의 Azure Web Application Firewall을 참조 하세요.
  • 아웃바운드 인터넷 트래픽이 데이터베이스 계층에서 흐르는 것을 허용하지 않습니다.
  • 프라이빗 스토리지에 대한 공용 액세스를 허용하지 않고 리소스에 대한 공용 액세스를 사용하지 않도록 설정합니다. Azure Database for MySQL, Azure Cache for Redis, Key Vault 및 Azure Container Registry에 프라이빗 엔드포인트를 사용합니다. 자세한 내용은 Azure Private Link를 참조 하세요.

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

비용 최적화

비용 최적화는 불필요한 비용을 줄이고 운영 효율성을 높이는 방법을 찾는 것입니다. 자세한 내용은 비용 최적화 핵심 요소 개요를 참조하세요.

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

  • 트래픽 기대치(GB/월). 트래픽 볼륨은 비용에 가장 큰 영향을 주는 요소입니다. 수신하는 트래픽의 양에 따라 필요한 AKS 노드 수와 아웃바운드 데이터 전송 가격이 결정됩니다. 또한 트래픽 볼륨은 아웃바운드 데이터 전송 비용이 더 저렴한 콘텐츠 배달 네트워크에서 제공하는 데이터의 양과 직접적인 상관 관계를 지정합니다.
  • 호스트된 데이터의 양입니다. Azure NetApp Files 가격 책정은 예약된 용량을 기반으로 하기 때문에 호스팅하는 데이터의 양을 고려하는 것이 중요합니다. 비용을 최적화하려면 데이터에 필요한 최소 용량을 예약합니다.
  • 쓰기 백분율입니다. 웹 사이트에 작성하는 새 데이터의 양과 저장 비용을 고려합니다. 다중 지역 배포의 경우 웹 사이트에 작성하는 새 데이터의 양은 지역 전체에서 미러 데이터의 양과 관련이 있습니다.
  • 정적 및 동적 콘텐츠입니다. 데이터베이스 스토리지 성능 및 용량을 모니터링하여 저렴한 SKU가 사이트를 지원할 수 있는지 여부를 확인합니다. 데이터베이스는 동적 콘텐츠를 저장하고 콘텐츠 배달 네트워크는 정적 콘텐츠를 캐시합니다.
  • AKS 클러스터 최적화. AKS 클러스터 비용을 최적화하려면 VM 크기 및 Azure 예약에 대한 지침과 같은 AKS에 대한 일반적인 팁을 따르세요. 자세한 내용은 AKS 비용 최적화를 참조 하세요.

성능 효율성

성능 효율성은 사용자가 배치된 요구 사항을 효율적인 방식으로 충족하기 위해 워크로드의 크기를 조정할 수 있는 기능입니다. 자세한 내용은 성능 효율성 핵심 요소 개요를 참조하세요.

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

Important

최상의 성능을 위해서는 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 학습 모듈: