robocopy를 사용한 IIS 복제에 대한 Wordpress


10

우리는 4 대의 IIS 서버에 워드 프레스 환경을 설정했습니다. 우리는 robocopy 스크립트를 트리거하는 예약 된 작업을 사용하여 5 분마다 wordpress 디렉토리를 복제하려고합니다.

그러한 접근법에 대한 의견은 무엇입니까? 누구든지 이것을 사용하거나 비슷한 적이 있습니까?


4 개의 IIS 서버 물리적 또는 VM은 무엇입니까? 데이터 또는 데이터베이스 및 구성을 복제하고 있습니까? 왜 작동하지 않을 HA를 달성하려고하면 4 개의 서버 1이 마스터이고 (다른 것으로 가정하고) 다른 서버가 수동적 인 이유를 모르겠습니다.
Anthony Fornito

1
두 번째 질문 (그리고 아마도 가장 중요한 것) 왜 Windows에서 wordpress를 실행하고 있습니까?
Anthony Fornito

답장을 보내 주셔서 감사합니다. @AnthonyFornito. 내부 이유로 창에서 워드 프레스 실행. 나는 단지 그것을 사용하려고합니다. 웹 사이트 파일을 복제 한 후 (데이터베이스 복제는 이미 MYSQL을 통해 처리됩니다). 프런트 엔드는 Azure의 VM입니다. 나는 주로 모든 프론트 엔드가 동일한 웹 사이트 파일을 공유하는 솔루션을 따릅니다. 당신이 제안하는 것이 있습니까?
joebegborg07

답변:


12

같은 파일을 동시에 공유하는 4 개의 프런트 엔드 서버가 있고 각각 디렉터리 동기화 전용 DFS 또는 타사 프로그램을 사용하지 않고 쓸 수있는 것은 밤의 악몽입니다.

하늘빛으로 3 가지를 살펴볼 수 있습니다.

  1. 공유 스토리지, 자체 전용 스토리지를 얻는 데 드는 비용이있을 수 있으며 Azure는이 구성을 제공하지는 않습니다. 이렇게하면 모든 파일을 작성하자마자 각 서버에서 사용할 수 있습니다.

  2. Azure DFS, DFS는 Windows 기반 디렉터리 동기화 도구로, 제대로 작동하지만 비용은 확실하지 않지만 구성이 약간 더 쉽습니다. DFS는 비동기 적으로 작동하므로 약간의 지연이 있지만 그리 많지는 않습니다.

  3. (이 작업이 어떻게 수행되는지 설명하고 다시는 말하지 않을 것입니다. 끔찍한 아이디어이기 때문에 실패 할 것입니다.) 먼저 네 서버 모두에서 데이터를 비교 한 다음 차등 데이터를 복사하는 스크립트를 작성하십시오. 각 디렉토리를 스크립트를 실행하는 하나의 서버, 설치 권한으로 서버를 읽고 쓴 다음 문제 해결, 문제 해결을 수행 할 수 있도록 설정 권한을 공유해야합니다.

위의 옵션 중 하나가 작업을 수행하지만 작업 이이 작업에 의존하는 경우 옵션 3을 멀리하는 것이 좋습니다.

그렇게 말하고 돈을 쓰려고하지 않는다면 아래 단계를 따르십시오.

  1. "무료 파일 동기화"라는 프로그램을보십시오. 무료 버전에는 정말 좋은 기능이 있습니다. 유료 버전이 있다고 생각하지만 개선 사항이 확실하지 않습니다. 나는 당신이 찾고있는 것과 비슷한 것을 달성하려고 할 때 많은 개발 환경에서 그것을 사용했으며 DFS를 설정하기 위해 게으른했습니다.

  2. 하나의 서버 만 쓰기 가능하게 만드십시오. 각 서버에서 기사 작성이 ServerA로 이동하는지 또는 web.config에서 URL을 다시 작성하는지 또는 WordPress가 PHP 사용인지를 나타내는 URI를 구성하여 쉽게 수행 할 수 있습니다.

    header ( '위치 : http://myhost.com/mypage.php ');

각각 약간의 코딩과 PHP 지식, IIS 지식이 필요합니다.

  1. ServerA가 저작자 서버 (쓰기 가능한 서버 만) 인 정말 재미있는 부분은로드 밸런서없이 읽기 위해 트래픽을 ServerB, ServerC 및 ServerD로 보내는 방법은 무엇입니까?

짧은 대답 당신은 정확히 사실이 아닙니다, 나는 한 번의로드 밸런서를 사용하지 않는 것에 대해 단호한 고객을 가졌습니다. 각 박스의 작업자 프로세스 또는 이와 유사한 것. 어느 쪽이든하기가 어렵고 시간과 에너지를 투자 할 가치가 없습니다.

서버에서 네트워크로드 균형 조정을 구성 할 수없는 경우 추가 IP가 필요하지만 하나의 DNS 변경 만 필요하며 3 대의 서버에서 읽기 위해 트래픽을 분산시킬 수 있습니다.

행운을 빕니다!


제안 해 주셔서 감사합니다. 단일 중앙 스토리지는 이전에 설정했지만 트래픽이 많지 않아 병목 현상이 발생했습니다. 마감일로 인해 빠른 솔루션이 필요했습니다. 우리는 궁극적으로 P2P 실시간 동기화 솔루션 인 resilio를 사용하여 모든 서버의 변경 사항을 감지하고 다른 서버로 복제했습니다. 동일하거나 유사한 문제가있는 사람은이 문제가 우리와 같은 방식으로 문제를 해결할 수 있기를 바랍니다. WP 백엔드에 대한 URL 다시 쓰기 제안을 테스트하고 다른 시스템에 변경 사항을 적용하고 있습니다. 다시 감사합니다.
joebegborg07

NLB는 Azure에서 작동하지 않습니다. 계층 2가 없습니다. 정말로 끔찍한 악몽을 원한다면 Azure VM에서 ARP 테이블을 보려고 시도하십시오.
Massimo

12

모든 제안에 감사드립니다.

우리 솔루션은 resilio라는 도구를 사용하여 피어 투 피어 동기화 방식을 사용하고있었습니다.

Resilio를 사용하면 피어 투 피어 동기화 클러스터에서 여러 컴퓨터 (이 경우 IIS 프론트 엔드)를 구성 할 수있었습니다. 클러스터의 각 컴퓨터에서 폴더가 선택되어 동기화 프로세스에 사용됩니다.

resilio 서비스 (백그라운드에서 실행되는 Windows 서비스)는 이러한 폴더에서 변경 사항을 모니터링하며 문제가있는 프런트 엔드의 지정된 폴더가 변경되면 resilio가 해당 변경 사항을 다른 서버로 푸시합니다.

이것이 앞으로 비슷한 문제에 직면 한 다른 사람들을 도울 수 있기를 바랍니다.


11

나는 예정된 작업과 Robocopy가 훌륭한 접근법이라고 생각하지 않습니다. 5 분의 창으로 인해 리소스가 요청되지만로드 밸런서가 선택한 서버에서 사용할 수없는 시간이 있습니다. 정적 사이트가 많을 경우 사용량이 많은 사이트를 자주 변경하는 것보다 훨씬 덜 자주 발생합니다. 높은 주파수 또는 Bittorrent Sync (현재 Resilio Sync ) 와 같은 다른 동기화 기술을 사용하면 이 기능이 약간 향상되지만 문제는 해결되지 않습니다.

wp-content 또는 wp-content / uploads 폴더를 공유 드라이브에 넣는 것이 더 나은 솔루션입니다. 이것을 보는 또 다른 방법은 서버 중 하나가 해당 폴더를 호스팅하고 다른 서버가 공유하도록하는 것입니다. 디스크 캐싱을 사용하면 서버의로드가 다른 서버보다 훨씬 높아서는 안됩니다.

최신 정보

한 번 봐 가지고 이 기사 페이지 캐싱에 대한 아이디어, 그리고 이 하나의 CDN에 대한합니다. Nginx에 관한 것이므로 IIS에서 해결해야하지만 그 배후의 이론은 모든 웹 서버에 유효합니다.


귀하의 제안에 감사드립니다 @Tim. 당신이 말했듯이 웹 사이트는 동적이며 워드 프레스 플러그인으로 인해 정기적으로 작은 파일 업데이트가 이루어집니다. 즉, 모든 프런트 엔드에 때때로 다른 파일이있을 수 있습니다. 이러한 프로덕션 환경을 테스트 한 적이 있습니까 (약 500-1000 명의 동시 사용자). 즉, 웹 사이트 파일을 중앙 저장소에 저장하고 공유 드라이브를 통해 매핑합니까? 그렇다면 경험은 어떻습니까.
joebegborg07

아니요 해당 시나리오를 테스트하지 않았습니다. CDN을 캐시하고 사용하기 때문에 필요하지 않습니다. 백엔드 파일 서버를 포함한 프론트 엔드 서버를로드 테스트해야합니다. 그러나 각 사용자 페이지 캐싱에 대해 페이지가 잘리지 않으면 컨텐츠 배포를 사용하는 것처럼로드를 크게 줄일 수 있습니다. CloudFlare에는 프리 티어가 있습니다. 5 분마다 업데이트하더라도 마찬가지입니다. 구글의 "Nginx Microcaching"은 그 뒤에있는 이론을위한 것이지만 IIS에서는 다르게 구현해야합니다. 이 경로로 가면 캐싱 헤더가 매우 중요합니다. 위의 업데이트도 참조하십시오.
Tim
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.