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

NFS с высокой доступностью

Мы рассматриваем возможность размещения веб-приложения на 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 для продвижения ведомого устройства, когда ведущее устройство не работает.