가상 머신의 WordPress

Azure Front Door
Azure Key Vault
Azure Load Balancer
Azure Virtual Network
Azure Virtual Machine Scale Sets

이 문서에서는 Azure에서 WordPress의 스토리지 집약적인 대규모 설치를 호스팅하는 솔루션을 설명합니다. 솔루션은 확장성과 보안을 최대화합니다. 주요 솔루션 구성 요소에는 Azure Front Door, Azure Virtual MachinesAzure NetApp Files 포함됩니다.

아키텍처

Azure Virtual Machine Scale Sets WordPress 배포의 아키텍처 다이어그램 Azure NetApp Files 정적 콘텐츠를 저장합니다.

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

참고

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

데이터 흐름

  • 사용자는 Azure Web Application Firewall 사용하도록 설정된 Azure Front Door를 통해 프런트 엔드 웹 사이트에 액세스합니다.
  • Azure Front Door는 Azure Load Balancer 내부 instance 원본으로 사용합니다. Azure Front Door는 캐시되지 않은 모든 데이터를 검색합니다.
  • 내부 부하 분산 장치는 Azure Virtual Machine Scale Sets 요청을 배포합니다. 확장 집합은 Ubuntu 웹 서버로 구성됩니다.
  • 키 및 기타 비밀은 Azure Key Vault 저장됩니다.
  • WordPress 애플리케이션은 프라이빗 엔드포인트를 사용하여 Azure Database for MySQL 유연한 서버 instance 액세스합니다. WordPress 애플리케이션은 데이터베이스에서 동적 정보를 검색합니다.
  • 모든 정적 콘텐츠는 Azure NetApp Files 호스트되고 NFS 프로토콜을 통해 VM(가상 머신)에 탑재됩니다.

구성 요소

  • Azure Front Door 는 최신 클라우드 콘텐츠 배달 네트워크입니다. Azure Front Door는 분산 서버 네트워크로서 사용자에게 웹 콘텐츠를 효율적으로 제공합니다. 콘텐츠 배달 네트워크는 최종 사용자 근처의 현재 상태 위치에 에지 서버에 캐시된 콘텐츠를 저장하여 대기 시간을 최소화합니다.
  • Azure Virtual Network 배포된 리소스가 인터넷 및 온-프레미스 네트워크와 통신할 수 있는 방법을 제공합니다. 가상 네트워크는 격리 및 구분을 제공합니다. 또한 트래픽을 필터링 및 라우팅하고 다양한 위치 간에 연결을 설정할 수 있습니다. 이 솔루션에서 두 네트워크는 가상 네트워크 피어링을 통해 연결됩니다.
  • Azure DDoS Protection 은 향상된 DDoS 완화 기능을 제공합니다. 이러한 기능을 애플리케이션 디자인 모범 사례와 결합하면 DDoS 공격 방어에 도움이 됩니다. 경계 가상 네트워크에서 DDoS Protection을 사용하도록 설정해야 합니다.
  • 네트워크 보안 그룹은 보안 규칙 목록을 사용하여 원본 또는 대상 IP 주소, 포트 및 프로토콜에 따라 인바운드 또는 아웃바운드 네트워크 트래픽을 허용하거나 거부합니다. 이 시나리오의 서브넷에서 네트워크 보안 그룹 규칙은 애플리케이션 구성 요소 간의 트래픽 흐름을 제한합니다.
  • Load Balancer 규칙 및 상태 프로브 결과에 따라 인바운드 트래픽을 분산합니다. 부하 분산 장치는 짧은 대기 시간과 높은 처리량을 제공합니다. 부하 분산 장치는 여러 서버에 트래픽을 분산하여 TCP(Transmission Control Protocol) 및 UDP(사용자 데이터그램 프로토콜) 애플리케이션에 확장성을 추가합니다. 이 시나리오에서 부하 분산 장치는 콘텐츠 배달 네트워크에서 프런트 엔드 웹 서버로 트래픽을 분산합니다.
  • Virtual Machine Scale Sets 동일한 부하 분산 VM 그룹을 만들고 관리하는 방법을 제공합니다. VM 인스턴스의 수는 요구 또는 정의된 일정에 따라 자동으로 늘리거나 줄일 수 있습니다. 이 시나리오에서는 두 개의 개별 확장 집합이 사용됩니다. 하나는 콘텐츠를 제공하는 프런트 엔드 웹 서버용이고, 하나는 새 콘텐츠를 만드는 데 사용되는 프런트 엔드 웹 서버용입니다.
  • 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 관리되는 서비스를 사용하는 대신 VM 내에서 자체 호스팅 Pod를 캐시로 사용할 수 있습니다.

시나리오 정보

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

잠재적인 사용 사례

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

고려 사항

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

안정성

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

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

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

보안

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

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

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

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

비용 최적화

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

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

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

성능 효율성

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

이 시나리오에서는 각 지역의 두 프런트 엔드 웹 서버 클러스터에 Virtual Machine Scale Sets 사용합니다. 확장 집합을 사용하면 프런트 엔드 애플리케이션 계층을 실행하는 VM 인스턴스 수가 고객의 요구에 따라 자동으로 스케일링할 수 있습니다. VM은 정의된 일정에 따라 확장할 수도 있습니다. 자세한 내용은 Virtual Machine Scale Sets 자동 크기 조정 개요를 참조하세요.

중요

최상의 성능을 위해서는 NFS 프로토콜 버전 4.1을 통해 스토리지를 탑재해야 합니다. Ubuntu에 대한 다음 bash 예제에서는 옵션을 구성하는 vers 방법을 보여줍니다.

# Install an NFS driver and create a directory.
$ apt-get install -y nfs-common && mkdir -p /var/www/html
# Add auto-mount on startup. (Replace the following code with
# instructions from the Azure portal, but change the vers value to 4.1.)
$ echo '<netapp_private_ip>:/<volume_name> /var/www/html nfs rw,hard,rsize=262144,wsize=262144,sec=sys,vers=4.1,tcp 0 0' >> /etc/fstab
# Mount the storage.
$ mount -a

참가자

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

보안 주체 작성자:

기타 기여자:

  • Adrian Calinescu | 선임 클라우드 솔루션 설계자

비공개 LinkedIn 프로필을 보려면 LinkedIn에 로그인합니다.

다음 단계

제품 설명서:

Microsoft 학습 모듈: