고 가용성을 위해 두 VM에서 WordPress를 실행하는 방법


12

Microsoft Azure에서는 "고 가용성"SLA를 달성하고 일상적인 유지 관리를 위해 사이트가 다운되지 않도록하려면 여러 데이터 센터에서 두 개의 인스턴스를 활용해야합니다. 또한 어떤 데이터 센터 쌍이 동시에 유지 보수를 위해 가지 않을지 알려줍니다.

그것은 모두 훌륭하고 훌륭하지만 같은 VM에 MySQL 데이터베이스가있는 WordPress와 같은 앱에서 실제로 어떻게 쉽게 수행 할 수 있습니까? 두 VM 사이에서로드 밸런싱을하는 것이 익숙하지는 않지만 데이터베이스 복제 설정으로 인해 어려움이 있습니다. 우리는 동기화되지 않은 두 가지 버전의 데이터를 원하지 않을 것입니다. MySQL 복제에는 사용자가 슬레이브 인스턴스에 착륙 한 경우 마스터 DB에 변경 사항을 동기화하지 못하는 마스터-슬레이브 설정이 필요한 것 같습니다.

나는 단지이 개념을 오해하고 있는가? 어떤 도움이라도 대단히 감사합니다!


1
Azure에서 WordPress를 왜 호스팅 하시겠습니까? WordPress에 대한 더 저렴하고 저렴한 호스팅이 있습니다. 예를 들어 Digital Ocean.
— Alexus

1
Alexus, 여기에는 실제로 관련이 없지만 WordPress가 하나의 구성 요소 인 Azure 인프라 전체에 다소 큰 스택이 있습니다. Azure는 환상적인 플랫폼이며 매우 만족합니다.
— Yaron

1
잡았다. 당신은 당신이해야 할 일을해야합니다 :) 나는 또한 대부분의 .NET 물건에 대해 Azure를 좋아하지만 항상 WP 사이트를 별도로 호스팅했습니다.
— Alexus

야론, ​​아래 답변이 도움이 되었습니까? 지금까지 3 개의 공감대를 받았으며 중요한 개념이 누락되었는지 확인하여 특정 유스 케이스에 맞게 업데이트 할 수 있습니다.
— Bryan 'BJ'Hoffpauir Jr.

1
@ Bryan'BJ'Hoffpauir에 대한 철저한 답변에 감사드립니다. 죄송합니다. Google 구현에서 작동하는지 확인하기 위해 귀하의 지시를 따르려고 시도하지 못했습니다. 답변을 올바른 것으로 표시하고 있으며 문제가 발생하면 다시 연락을 드리겠습니다. 다시 감사합니다 !!
— Yaron

답변:


11

나쁜 소식 : Wordpress의 핵심 오픈 소스 기반은 단일 서버 (wp-content, 사용자 업로드 및 미디어 라이브러리에서 실행)에 대해 거의 가정하지 않습니다.

좋은 소식 : Azure를 포함한 거의 모든 클라우드 공급자에는 이러한 디자인 제한 사항을 해결할 수있는 추상화가 있습니다.

기본적으로 다음과 같은 문제를 해결하게됩니다.

  • 두 개 이상의 "프론트 엔드"Wordpress 웹 / 앱 서버간에로드 밸런싱 트래픽. 사용자가 사이트에 로그인하도록 허용하지 않는 한 Wordpress는 대부분 Stateless이므로 어렵지 않습니다. 이는 DNS와로드 밸런서의 조합을 통해 수행됩니다. 앱 서버에 대해 2 개의 IP를 지원해야합니다. 1 세트는 인터넷을 통해 라우팅 가능한 서브넷에 연결되며 (아래에 설명되지 않은 방화벽으로 보호 되기는하지만) 다른 2 개는 격리 된 다른 서브넷에 있습니다. 다른 네트워크에는 데이터베이스 서버 인스턴스가 포함되지만 기본 개요는 다음과 같습니다.
                     /-(10.0.0.1-eth0) wp1.domain.com (10.0.1.1-eth2)
(공개 IP) wp.domain.com          
                     \-(10.0.0.2-eth1) wp2.domain.com (10.0.1.2-eth3)
  • 세션 관리 사용자가 사이트에 로그인하도록 허용 한 경우. 그렇다면 서버 1에 로그인 할 때 미래의 모든 요청이 해당 서버로 라우팅되거나 (고정 세션) 세션이 다른 메커니즘을 통해 관리되므로 액세스하는 서버가 중요하지 않은지 확인해야합니다. ( 예를 들어 Zend 서버 세션 클러스터링을 통해 ).

  • 관리자 로그인 관리 일부 사용자가 콘텐츠를 관리하기 위해 백엔드에 로그인하도록 허용하는 경우 (위와 유사).

  • 고 가용성 DB 시스템 선택. DB 충돌로 인해 전체 시스템이 다운되는 경우 프런트 엔드 서버가 두 대가 될 필요가 없습니다. ClearDB를 통해 MySQL Master / Slave 복제를 활용하거나 플러그인을 통해 WordPress를 수정하여 SQL Server를 활용 하여 고유 클러스터링 시스템을 사용해야 합니다 . 즉, DB 계층을 직접 관리하려면 (2 x App & 2 x DB) 최소 4 개의 VM이 필요합니다. 그 모습은 다음과 같습니다.

               /-wp1.domain.com (10.0.1.1) \ --- / (10.0.1.3) db1.domain.com (10.0.2.3) \
         wp.domain.com X |           
               \-wp2.domain.com (10.0.1.2) / --- \ (10.0.1.4) db2.domain.com (10.0.2.3) /

  • 참고 -안정적인 페일 오버를 보장하고 시스템의 보안을 보호하기 위해 THIRD 네트워크 서브넷은 일반적으로 앱 서버가 통신하는 데 사용하는 다른 통신 네트워크와 분리 된 개인 채널을 통해 두 데이터베이스 노드를 서로 연결하는 데 사용됩니다. 데이터베이스 및 앱 서버는 외부 세계와 통신하는 데 사용합니다.

  • 연결 풀링을 활성화하면 앱 서버 데이터베이스 연결의 성능과 안정성을 극대화 할 수 있습니다.

  • 프런트 엔드 서버의로드를 최소화하기 위해 W3 Total Cache 또는 Super Cache와 같은 캐싱 플러그인을 활용합니다.

다음 안내서는 위의 각 과제를 해결하는 방법에 대한 특정 정보를 제공합니다. Azure에서 각각을 처리하는 방법에는 여러 가지가 있으므로 각 과제를 어떻게 공격할지 결정한 다음 스택을 위아래로 처리 할 때 이러한 각 선택 사항에 적용되는 제약 조건을 처리해야합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.