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

Лучшая практика для синхронизации источников на серверах (Amazon EC2)

Я перехожу с одного сервера приложений на конфигурацию с балансировкой нагрузки.

В конфигурации с одним сервером я синхронизировал источники с помощью S3 cmd sync s3 каждые несколько минут, а на hostup (событие Scalr) я синхронизирую источники обратно с S3. Это гарантирует, что на сервере будут работать обновленные источники.

Что лучше всего, если количество серверов приложений динамическое?

Предположим, у меня есть 2 сервера, и сервер A получает обновленные источники. Если сценарий синхронизации сначала запускается на B, сервер A получит старый файл от B, а не наоборот.

Что лучше всего в этом случае?

Ниже приведены основные протоколы, используемые для централизации хранения:

  • SSHFS - Передает все через SSH, поэтому он безопасен и может использоваться через Интернет без проблем. SSH поддерживает прозрачное сжатие, если вы этого хотите. Однако SSHFS может быть трудно заставить работать.

  • NFS - По своей сути небезопасен и использует IP-адреса для различения прав, но обычно очень легко запускается.

Лично я бы попробовал SSHFS и вернулся бы к NFS, если он не работает.

Поместите ваш основной источник в S3. Все серверы должны синхронизироваться (извлекать из S3) только при запуске.

Если вы хотите обновить свои серверы:

  1. Обновить S3
  2. Запускать новые экземпляры (которые будут вытягиваться из S3 при запуске)
  3. Остановите и / или завершите работу старых экземпляров, на которых запущена старая версия

Ты можешь использовать inotify (inotifywait) и / или rsync. Зависит от того, сколько у вас файлов, как часто вы их обновляете и насколько они велики.

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

Лучшее решение - использовать общую сетевую файловую систему для динамического обновления источников. Два из самых популярных: NFS и GlusterFS.