Я установил эластичную балансировку нагрузки с 5 экземплярами EC2, зарегистрированными в балансировщике нагрузки. На наш веб-сайт пользователи загружают свои данные (изображения), мы храним эти изображения в сетевом хранилище (NAS). У нас есть NAS на всех экземплярах.
Мы планируем внедрить Amazon AutoScaling, а также отказаться от сетевого хранилища.
Является ли GlusterFS хорошим решением для обмена данными между всеми экземплярами в группе Autoscaling?
Гарантирует ли Gluster отсутствие потери данных?
Что произойдет, если все экземпляры в автомасштабировании будут прекращены, я потеряю пользовательские данные?
Что произойдет, если пользователь загрузит изображение, и сервер, обрабатывающий запрос, выйдет из строя?
Повлияет ли отказ клиентов на ввод-вывод? (Что именно делает Gluster?)
Является ли GlusterFS хорошим решением для обмена данными между всеми экземплярами в группе Autoscaling?
Возможно ... Единственный способ получить окончательный ответ - это провести собственные тесты. Раньше я настраивал кластер веб-серверов из 4 узлов на экземплярах Linode, используя GlusterFS для распространения / совместного использования каталога ресурсов изображений и т. Д.
Мы обнаружили 2 основные проблемы с этим подходом:
Чисто анекдотические свидетельства, но я бы никогда больше не запускал GlusterFS на виртуальной машине с SAN / общим хранилищем.
Гарантирует ли Gluster отсутствие потери данных?
Это может ... В Gluster 3.0 улучшено распознавание «пулов репликации», где вы можете определить, сколько копий данных существует в кластере. Установка уровня репликации 2 означает, что на всем кластере есть 2 копии. Это фактически вдвое уменьшает емкость хранилища, но означает, что вы получаете большую устойчивость к сбоям узла.
Важно отметить, что это также означает, что вам необходимо добавить дополнительные узлы, кратные уровню репликации, в данном случае пары узлов.
Что произойдет, если все экземпляры в автомасштабировании будут прекращены, я потеряю пользовательские данные?
Если экземпляры используют только временное хранилище экземпляров, да. Если они основаны на EBS или используют смонтированные экземпляры EBS, тогда нет.
Что произойдет, если пользователь загрузит изображение, и сервер, обрабатывающий запрос, выйдет из строя?
Это во многом зависит от того, как разработано ваше приложение. Я сильно подозреваю, что пользователь потеряет свои данные (почти наверняка в наивно спроектированном решении).
Повлияет ли отказ клиентов на ввод-вывод?
См. Выше .. Если клиент выйдет из строя из-за проблем с внутренним хранилищем, это может легко полностью снизить производительность кластера.
GlusterFS, похоже, требует слишком большой настройки при выводе новых экземпляров в сеть, чтобы сделать его хорошей системой для использования на экземплярах, которые нуждаются в автомасштабировании. Я уверен, что это можно сделать, но проще изменить архитектуру, чтобы веб-экземпляры отличались от экземпляров glusterfs. Затем веб-экземплярам нужно только подключиться в качестве клиента к слою glusterfs. Затем можно настроить автоматическое масштабирование веб-экземпляров.
Хорошим правилом при работе с облачными системами является сопоставление службы с экземпляром 1: 1. Не пытайтесь заставить экземпляр делать слишком много. Архитектурно это помогает при масштабировании вещей.
У вас уже есть хорошие ответы на свои вопросы по Gluster, однако я хотел бы упомянуть кое-что, что может быть полезно.
В зависимости от вашего варианта использования вы можете обнаружить, что следующим легче управлять и меньше подвержены ошибкам:
Преимущества S3 очевидны:
Если вы хотите пройти лишнюю милю, вы можете настроить свой (linux) сервер так, чтобы он отправлял все журналы на «сервер журналов» (при этом все EC2 остаются идентичными, а также настолько упрощенными, насколько это возможно).
Я обнаружил, что в прошлом такая установка достаточно хорошо работала для веб-серверов, которыми я управлял.