В настоящее время мы используем несколько веб-серверов, обращающихся к одному серверу mysql и файловому серверу. Рассматривая переход в облако, могу ли я использовать эту настройку и присоединить EBS к нескольким машинным экземплярам или к другому решению?
Можете ли вы подключить Amazon EBS к нескольким экземплярам?
Ответ 1
UPDATE (апрель 2015 г.). Для этого варианта использования вы должны начать поиск новой Amazon Elastic File System (EFS ), который предназначен для многократного присоединения точно так, как вы этого хотите. Ключевое различие между EFS и EBS заключается в том, что они предоставляют различные абстракции: EFS предоставляет протокол NFSv4, тогда как EBS обеспечивает доступ к исходному блочному IO.
Ниже вы найдете мое первоначальное объяснение того, почему невозможно безопасно монтировать необработанное блочное устройство на нескольких машинах.
ОРИГИНАЛЬНАЯ ПОЧТА (2011):
Даже если вы смогли получить том EBS, прикрепленный к нескольким экземплярам, это будет _REALLY_BAD_IDEA_. Чтобы процитировать Kekoa, "это похоже на использование жесткого диска на двух компьютерах одновременно"
Почему это плохая идея?... Причина, по которой вы не можете присоединить тома к нескольким экземплярам, заключается в том, что EBS предоставляет абстракцию "блокировки блоков", на которой клиенты запускают файловую систему, такую как ext2/ext3/etc. Большинство этих файловых систем (например, ext2/3, FAT, NTFS и т.д.) Написаны при условии, что они имеют эксклюзивный доступ к блочному устройству. Два экземпляра, обращающихся к одной и той же файловой системе, почти наверняка закончили бы слезы и повреждение данных.
Другими словами, двойной монтаж тома EBS будет работать, только если вы используете файловую систему кластера, предназначенную для совместного использования блочного устройства между несколькими компьютерами. Более того, этого было бы недостаточно. EBS необходимо будет протестировать для этого сценария и обеспечить, чтобы он обеспечивал те же гарантии согласованности, что и другие решения разделяемых блочных устройств... т.е. Что блоки не кэшируются на промежуточных неосновных уровнях, таких как ядро Dom0, слой Xen, и ядро DomU. И тогда соображения производительности синхронизации блоков между несколькими клиентами - большая часть кластерных файловых систем предназначены для работы на высокоскоростных специализированных SAN, а не в сети с лучшими усилиями. Это звучит так просто, но то, о чем вы просите, очень нетривиально.
Кроме того, посмотрите, может ли ваш сценарий совместного использования данных быть NFS, SMB/CIFS, SimpleDB или S3. В этих решениях используются протоколы более высокого уровня, предназначенные для совместного использования файлов без общей подсистемы блочных устройств. Много раз такое решение фактически более эффективно.
В вашем случае у вас все еще может быть один экземпляр/файловый сервер MySql, к которому обращаются несколько веб-интерфейсов. Затем этот файловый сервер может хранить данные на томе EBS, позволяя вам выполнять ночные резервные копии моментальных снимков. Если экземпляр, на котором запущен файловый сервер, потерян, вы можете отсоединить громкость EBS и снова подключить его к новому экземпляру файлового сервера и выполнить резервное копирование и запуск в считанные минуты.
"Есть ли что-то вроде S3 в качестве файловой системы?" - да и нет. Да, есть сторонние решения, такие как s3fs, которые работают "нормально", но под капотом им все равно приходится делать относительно дорогие вызовы веб-сервисов для каждого чтения/записи. Для общего инструментария dir работает отлично. Для типа кластерного использования FS вы видите в мире HPC, а не шанс. Чтобы добиться большего успеха, вам понадобится новая служба, которая обеспечивает бинарный протокол, ориентированный на соединение, например NFS. Предлагая такую многоуровневую файловую систему с разумной производительностью и поведением, это будет добавление GREAT для EC2. Я уже давно сторонник Amazon, чтобы построить что-то подобное.
Ответ 2
Нет, это похоже на использование жесткого диска на двух компьютерах.
Если вам нужны общие данные, вы можете настроить сервер, к которому могут обращаться все ваши экземпляры. Если вам нужна простая область хранения для всех ваших экземпляров, вы можете использовать службу хранения Amazon S3 для хранения распределенных и масштабируемых данных.
Переместившись в облако, вы можете иметь точно такую же настройку, но вы можете заменить файловый сервер на S3 или все ваши экземпляры подключиться к файловому серверу.
У вас есть много вариантов, но совместное использование жесткого диска между экземплярами, вероятно, не самый лучший вариант.
Ответ 3
Нет, согласно документам EBS: "Том может быть привязан только к одному экземпляру за раз".
Как вы используете общее хранилище в настоящее время? Если он предназначен только для работы с файловыми серверами, рассмотрел ли вы настройку системы, чтобы вы могли проксировать определенные запросы к процессу на файловом сервере, а не поддерживать веб-серверы этими файлами?
Ответ 4
Я уверен, что вы не можете, но вы можете клонировать EBS и прикрепить его к другому экземпляру.
Это полезно для фиксированных наборов данных или для тестирования "реальных" данных, но не позволяет более одного экземпляра работать в одном хранилище блоков.
Ответ 5
Несколько веб-серверов, обращающихся к MySQL Server и файловому серверу, являются нормальными для AWS. Некоторые из лучших практик, которые следует соблюдать для вышеупомянутой архитектуры, следующие:
Точка 1) MySQL на EC2 может быть настроен как ведущий-ведомый в режиме асинхронной/полусинхронизации в AWS. EBS-OPT + PIOPS в RAID 0 рекомендуется для высокопроизводительной DB
Пункт 2) В качестве альтернативы вы можете использовать режим Amazon RDS + Multi-AZ. Для масштабирования чтения Несколько RDS Read Replica можно подключить к MySQL RDS.
Пункт 3) Громкость EBS не может быть присоединена к нескольким EC2 одновременно. Вы можете создать файловый сервер на базе GlusterFS на Amazon EC2 с помощью EBS. Несколько веб-серверов могут одновременно разговаривать с одним GlusterFS на AWS-инфраструктуре.
Пункт 4). Если ваше приложение может быть интегрировано с S3 в качестве хранилища файлов, то оно предпочтительнее из-за стабильности, которую он вносит в архитектуру. Вы также можете получить доступ к S3 с помощью таких инструментов, как S3fuse, а также из вашего приложения.
Ответ 6
В ИТ-мире есть что-то вроде Clustered Filesystem, Redhat GFS, Oracle OCFS2, Veritas CFS...
Ответ 7
Почему вы не создадите один экземпляр с томами и sshfs для этого тома в других экземплярах?
Ответ 8
Вы можете полностью использовать один диск на нескольких серверах в AWS. Я использую sshfs для монтирования внешнего диска и совместного использования его с несколькими серверами в EC2.
Причина, по которой мне нужно было подключить один диск к нескольким серверам, состоит в том, чтобы разместить все мои резервные копии, прежде чем вытащить их на локальном компьютере.