고 가용성을 위해 두 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.