Назад | Перейти на главную страницу

Wordpress на репликации IIS с помощью robocopy

Устанавливаем среду wordpress на 4 серверах IIS. Мы рассматриваем возможность использования запланированной задачи, запускающей сценарий robocopy для репликации каталога wordpress каждые 5 минут.

Каковы мнения о таком подходе? Кто-нибудь когда-нибудь пользовался этим или подобным?

Спасибо за все предложения, люди.

В нашем решении использовался подход одноранговой синхронизации с использованием инструмента под названием resilio.

Resilio позволил нам настроить несколько компьютеров (в данном случае - интерфейсы IIS) в кластере одноранговой синхронизации. На каждом компьютере кластера выбирается папка, которая будет использоваться для процесса синхронизации.

Служба resilio (служба Windows, работающая в фоновом режиме) отслеживает эти папки на предмет любых изменений, и если изменение внесено в любую из указанных папок на рассматриваемом клиентском интерфейсе, resilio отправит это изменение на другие серверы.

Я надеюсь, что это поможет другим, столкнувшимся с подобной проблемой в будущем.

Было бы кошмаром иметь 4 внешних сервера, которые одновременно используют одни и те же файлы и каждый может писать без использования какой-либо DFS или сторонней программы, предназначенной для синхронизации каталогов.

С лазурью вы можете рассмотреть 3 вещи.

  1. Общее хранилище, может потребоваться определенная стоимость, связанная с получением собственного выделенного хранилища, и я не уверен в конфигурации, однако Azure предлагает это. Это гарантирует, что все ваши файлы будут доступны каждому серверу, как только они будут записаны.

  2. Azure DFS, DFS - это инструмент синхронизации каталогов на базе Windows, который работает довольно хорошо, также не уверен в стоимости, но конфигурация может быть немного проще. DFS работает асинхронно, поэтому есть небольшая задержка, но не большая.

  3. (Я собираюсь объяснить, как это будет сделано, и больше никогда не буду об этом говорить, потому что это ужасная идея, и она потерпит неудачу.) Создайте сценарий, который сначала сравнит данные на всех четырех серверах, а затем скопирует дифференциальные данные. Вам нужно будет предоставить общий доступ к каждому каталогу одному серверу, на котором запущен сценарий, разрешить настройку, чтобы сервер мог читать и писать, а затем устранять неполадки, устранять неполадки.

Любой из вышеперечисленных вариантов будет работать, если ваша работа зависит от этого, я бы рекомендовал вам держаться подальше от варианта 3.

При этом, и вы не пытаетесь тратить деньги, выполните следующие действия.

  1. посмотрите на программу под названием "бесплатная синхронизация файлов". В бесплатной версии есть несколько действительно хороших функций. Я считаю, что есть платная версия, но я не уверен, какие улучшения вы получите. Я использовал его во многих своих средах разработки, когда пытался добиться чего-то похожего на то, что вы хотели сделать, и мне было лень настраивать DFS.

  2. Сделайте только один сервер доступным для записи, это можно легко сделать, настроив URI на каждом сервере, который говорит, что создание статьи переходит на ServerA, или URL-адрес перезаписывается в вашем web.config, или что WordPress использует php:

    заголовок ('Местоположение: http://myhost.com/mypage.php');

Каждый потребует немного кодирования и знаний PHP и IIS.

  1. Действительно забавная часть, когда ServerA является сервером-автором (только сервером с возможностью записи), как мы направляем трафик на ServerB, ServerC и ServerD для чтения без балансировщика нагрузки?

Короткий ответ, вы не можете, ну, это не совсем так, однажды у меня был клиент, который категорически отказывался от использования балансировщика нагрузки, он смог с помощью серии сценариев PowerShell переместить соединение с одного сервера на другой в зависимости от количества рабочие процессы на каждом ящике или что-то в этом роде. В любом случае сделать это очень сложно, и не стоит тратить время и силы.

Посмотрите, не можете ли вы настроить балансировку сетевой нагрузки на серверах. Для этого потребуется дополнительный IP-адрес, но только одно изменение DNS, и трафик может быть распределен для чтения по 3 серверам.

Удачи!

Я не думаю, что запланированные задачи и Robocopy - отличный подход. Из-за 5-минутного окна будут времена, когда ресурс будет запрошен, но сервер, выбранный балансировщиком нагрузки, не будет доступен. Для в основном статичных сайтов это будет происходить гораздо реже, чем для часто изменяемых загруженных сайтов. Более высокая частота или использование другой технологии синхронизации, например Bittorrent Sync (теперь называется Resilio Sync) немного улучшит ситуацию, но не устранит проблему.

Размещение вашего wp-контента или, может быть, просто папки wp-content / uploads на общем диске было бы лучшим решением. Другой способ взглянуть на это - разместить эту папку на одном из серверов, а остальные будут ее использовать. При дисковом кэшировании нагрузка на сервер не должна быть намного выше, чем на других серверах.

Обновить

Посмотри на Эта статья для идей о кэшировании страниц и вот этот для CDN. Речь идет о Nginx, поэтому вам нужно разработать его для IIS, но теория, лежащая в основе этого, применима для любого веб-сервера.