Моя компания скоро создаст блог, и я планирую настроить два веб-сервера для размещения веб-сайта wordpress для обеспечения избыточности. Обычно, когда мы делаем релизы для сайта в ферме, мы нажимаем на одну сторону, тестируем, а затем выпускаем на другую сторону. Для обновлений WordPress мы можем сделать это достаточно легко. Однако проблема заключается в том, как обрабатывать папку wp-content. Поскольку люди будут публиковать сообщения и загружать графику, их необходимо будет синхронизировать с другим сервером в ферме, независимо от того, на какой сервер пользователь загружает их.
Я мог бы настроить DFS для репликации файлов, но это похоже на излишество.
Я мог бы настроить robocopy на запуск каждые 15 минут или что-то в этом роде, а затем сказать всем, кто публикует, обязательно запланировать публикацию публикации как минимум через 15 минут, чтобы файлы успели реплицироваться.
Есть ли какие-нибудь лучшие решения? Возможно, что-то вроде плагина для wordpress, чтобы при загрузке графики в сообщение они автоматически реплицировались на другие серверы фермы?
Я использую Wordpress в Windows 2008, поэтому решения для Linux мне не помогут.
Я помещаю это как отдельный ответ, потому что это другой подход:
А как насчет того, чтобы поместить изображения в облачное хранилище (Amazon S3 или подобное), а затем попросить ваших пользователей использовать ссылки на облако. Затраты на пропускную способность могут быть немного выше, и, возможно, есть проблемы с обучением, заставляющие пользователей сначала загружать в облако, но это устраняет необходимость проверки локальной файловой системы или перекрестных серверов.
Он также должен масштабироваться независимо от количества развертываемых серверов.
Я не мастер IIS, но надеюсь, что эта техника еще вернется.
Я предполагаю, что есть общее имя хоста, которое сбалансировано по нагрузке между двумя серверами, и что для каждого из них также есть общедоступное имя.
Вам нужно условное перенаправление на один из двух серверов в сочетании с какой-то синхронизацией файлов. Если URI начинается с / wp-content и файл существует, обслуживайте его локально. В противном случае перенаправьте на другой сервер. Сервер A перенаправляет на B и наоборот.
Это должно обеспечить беспроблемный опыт для зрителей - они просто получат временное перенаправление для изображений в окне между запуском публикации и запуском синхронизации. В зависимости от пропускной способности или избыточности, ваш интервал синхронизации может быть намного больше, чем 15 минут, поскольку сайт должен правильно отображаться в момент публикации публикации.
В nginx я бы сделал это с таким блоком:
location ~ ^/wp-content {
if( -f $request_filename ) {
expires max;
break;
}
rewrite ^/(.+)$ http://otherserver.com/$1 last;
}
nginx доступен для Windows, но я сомневаюсь, что вы захотите переключить программное обеспечение веб-сервера для этого. Надеюсь, идея может быть преобразована в IIS или другое программное обеспечение, которое вы используете.
Раньше мы использовали Super Flexible File Synchronizer для подобных вещей. Он работает очень хорошо и имеет ряд опций для управления синхронизацией.
Можно ли разместить контент в одном сетевом файловом ресурсе (без DFS)?
Как насчет унисон?
Вы можете использовать для этого rsync. В противном случае, если у вас есть файлы в системе управления версиями, вы можете использовать что-то вроде Capistrano, чтобы иметь возможность развертывать их на разных машинах (и даже откатывать при необходимости).
Если у вас более одной машины, возможность развертывания и отката невозможна. очень полезно.
как насчет robocopy со следующими переключателями: 1. Чтобы обнаружить изменения и запустить синхронизацию - / MON: n :: MONitor source; запустить снова, когда будет замечено более n изменений. / MOT: m :: MOnitor source; запустить снова через m минут Время, если изменилось.
neways, что ты наконец использовал для решения этой проблемы?