Мы рассматриваем возможность размещения веб-приложения на Amazon AWS. Я нарисовал для него предлагаемую установку, которую я попытаюсь кратко изложить в нескольких строках:
Последнее, что меня беспокоит. У меня есть некоторый опыт работы с AWS, и, помимо работы с задержкой между двумя зонами доступности, это обеспечит единую точку отказа.
Итак, я смотрел на GlusterFS, потому что это то, что кто-то на serverfault предложил кому-то, кто имел дело с аналогичным рассолом. Я настраивал среду с узлом Gluster в каждой зоне доступности. В сценарии запуска для своих веб-серверов я оцениваю имя зоны доступности, в которой он находится, и выбираю узел Gluster, который находится в той же зоне доступности, чтобы уменьшить задержку. Отлично!
Но скажем, узел в Аризоне us-east-1a
как-то не получается. Есть ли способ подключить мои веб-серверы us-east-1a
вернуться к узлу в us-east-1b
если узел в us-east-1a
недоступен? И, конечно, если оба недоступны, также us-east-1c
?
До сих пор я видел только примеры людей, использующих серверные и клиентские функции Gluster на одних и тех же машинах, чего я бы хотел избежать. Вероятно, стоит отметить, что я буду использовать клиент NFS из соображений производительности.
Конечно, любые другие предложения по этой системе хранения файлов будут очень приветствоваться.
Я хотел бы рассказать всем, кто интересуется, о том, как я решил это сделать. Как я уже сказал, S3 не соответствует нашей ситуации, с которой, вероятно, борется больше людей.
В то время Gluster казался подходящим вариантом, потому что он специально предназначен для этих вещей. Однако в нашей тестовой среде скорость Glusters сдерживала нас. Да, передача файлов в файловую систему Gluster выполняется довольно быстро, но мы выполняем множество операций поиска, быстрого чтения и записи на этих смонтированных томах, и при тестировании на более высокую нагрузку это стало узким местом. Клиент Gluster NFS намного быстрее справляется с этими операциями, но он не поддерживает встроенную отказоустойчивость Glusters.
Итак, мы вернулись к нашей первоначальной идее: просто использовать сервер NFS с аварийным переключением в другой зоне доступности. Чтобы синхронизировать узлы, мы используем DRBD
. Мы обошли проблему отсутствия виртуального IP-адреса с помощью VTun (я открыт для других предложений) и используем Heartbeat для продвижения ведомого устройства, когда ведущее устройство не работает.