Чи можете ви приєднати Amazon EBS до кількох примірників?


138

В даний час ми використовуємо кілька веб-серверів, що мають доступ до одного mysql-сервера та сервера файлів. Дивлячись на перехід до хмари, чи можу я скористатися цим самим налаштуванням і приєднати EBS до декількох машинних примірників чи яке інше рішення?


Дана відповідь - ні. Але причини, про які я посилаюся, мене клопочуть. Усі йдуть на кшталт "це було б як встановити один і той же жорсткий диск на декілька комп'ютерів" - і я піду "і що?" З SCSI або FibreChannel SAN ми це робимо весь час, маючи тотальний сенс. Наприклад, для монтування лише декількох серверів на одних і тих же даних, що читаються лише. Oracle та інші великі RDBM розроблені для роботи в кластерному режимі, де кілька серверів використовують однакові фізичні сховища. Це може бути набагато швидше. EBS / NFS - це вієері повільно, це не варіант. Але зауважте, навіть якщо ви можете приєднатися до декількох EC2, ваш IOPS все одно буде обмежений.
Гюнтер Шадоу

Станом на лютий 2020 року, ви можете приєднати певні типи EBS до декількох екземплярів EC2 - aws.amazon.com/blogs/aws/…
Кошур

Відповіді:


135

ОНОВЛЕННЯ (квітень 2015 р.) . У цьому випадку використання слід почати дивитися на нову файлову систему Amazon Elastic File (EFS) , розроблену так, щоб вона була багаторазово прив’язаною саме так, як вам потрібно. Ключова відмінність EFS від EBS полягає в тому, що вони пропонують різні абстракції: EFS розкриває протокол NFSv4, тоді як EBS забезпечує доступ до необмеженого блоку IO.

Нижче ви знайдете моє оригінальне пояснення того, чому неможливо безпечно змонтувати необмежений блок блоку на декількох машинах.


ОРИГІНАЛЬНА ПОСТ (2011):

Навіть якби вам вдалося отримати об'єм EBS, приєднаний до декількох екземплярів, це буде _REALLY_BAD_IDEA_. Цитую Кекоа, "це як використовувати жорсткий диск на двох комп'ютерах одночасно"

Чому це погана ідея? ... Причина, коли ви не можете приєднати об'єм до більш ніж одного примірника, полягає в тому, що EBS надає абстракцію "блочного зберігання", за якою клієнти запускають файлову систему на зразок ext2 / ext3 / тощо. Більшість цих файлових систем (наприклад, ext2 / 3, FAT, NTFS тощо) написані, припускаючи, що вони мають ексклюзивний доступ до блокового пристрою. Два випадки доступу до однієї файлової системи майже напевно закінчилися б сльозами та пошкодженням даних.

Іншими словами, подвійний монтаж тома EBS працюватиме лише в тому випадку, якщо ви працюєте з файловою системою кластера, призначеною для спільного використання пристрою блоку між декількома машинами. Крім того, навіть цього було б недостатньо. EBS потрібно тестувати на цей сценарій і гарантувати, що він забезпечує ті ж гарантії послідовності, що й інші рішення пристроїв спільного блоку ... тобто, блоки не кешуються на проміжних рівнях, що не поділяються, як ядро ​​Dom0, шар Xen, і ядро ​​DomU. А потім є міркування щодо ефективності синхронізації блоків між декількома клієнтами - більшість кластеризованих файлових систем розроблені для роботи над високошвидкісними спеціалізованими SAN, а не найкращими товарними мережами. Це звучить так просто, але те, що ви просите, - це дуже нетривіальна річ.

Крім того, подивіться, чи можливий сценарій обміну даними NFS, SMB / CIFS, SimpleDB або S3. Всі ці рішення використовують протоколи більш високого рівня, які призначені для обміну файлами без спільної підсистеми блокових пристроїв. Багато разів таке рішення насправді є більш ефективним.

У вашому випадку у вас все ще може бути один екземпляр / файловий сервер MySql, до якого можна отримати доступ до декількох веб-сторінок. Цей сервер файлів може потім зберігати свої дані на томі EBS, що дозволяє робити нічні резервні копії знімків. Якщо екземпляр, на якому працює сервер файлів, загублений, ви можете від'єднати об'єм EBS і приєднати його до нового екземпляра файлового сервера і створити резервну копію та запустити за лічені хвилини.

"Чи є щось на зразок S3 як файлової системи?" - так і ні. Так, є сторонні рішення, такі як s3fs, які працюють «добре», але під капотом вони все ще повинні робити відносно дорогі дзвінки веб-служб для кожного читання / запису. Для спільного інструментального режиму, чудово працює. Для типу кластеризованого використання FS, який ви бачите у світі HPC, це не шанс. Щоб зробити це краще, вам знадобиться нова послуга, яка забезпечує бінарний протокол, орієнтований на з'єднання, як NFS. Пропонування такої багатомонтажної файлової системи з розумною продуктивністю та поведінкою було б ВЕЛИКОГО додатком для EC2. Я давно був прихильником Amazon будувати щось подібне.


1
Проблема з NFS (і подібними підходами до SMB) полягає в тому, що одна машина буде виконувати роль сервера (до якого файлова система буде фізично встановлена). Якщо машина знизиться, це призведе до зменшення гучності EBS (або ж диска також знизиться). Чи є щось на зразок S3 як файлової системи ?.
sheki

1
Просто для уточнення. Якщо об'єм EBS приєднаний до екземпляра, а екземпляр гине катастрофічно, обсяг EBS буде просто чудовим. Це лише "знизиться" в тому сенсі, що для доступу до нього вам потрібно буде від'єднати його від нижнього екземпляра і повторно приєднати його до нового екземпляра.
Дейв Допсон

"... майже напевно закінчиться сльозами та корупцією даних". Класичний. @DaveDopson
Beachhouse

5
Для всіх, хто бачить цю відповідь, знають, що Amazon щойно випустив EFS, що дозволяє використовувати спільні автоматичні розширювальні накопичувачі, які можна встановити через NFS у декількох випадках.
JoshStrange

@JoshStrange - спасибі за голову вгору. Оновлена ​​публікація.
Дейв Допсон

78

Оновлення (2020) Зараз це можливо!

Це можливо зараз із новітніми типами екземплярів, що працюють в AWS Nitro в межах однієї зони доступності. Існують деякі застереження, але це чудово підходить для певних випадків використання, які потребують швидкості EBS і де EFS неможливо.

https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-volumes-multi.html


Оригінальна публікація (2009)

Ні, це як використання жорсткого диска на двох комп’ютерах.

Якщо ви хочете використовувати спільні дані, ви можете налаштувати сервер, до якого можуть отримати доступ усі ваші екземпляри. Якщо ви хочете просту область зберігання для всіх своїх примірників, ви можете скористатися послугою зберігання даних S3 Amazon для зберігання даних, які розповсюджуються та масштабуються.

Перемістившись у хмару, ви можете мати точно таку ж настройку, але ви можете, можливо, замінити файл-сервер на S3 або підключити всі ваші екземпляри до вашого файлового сервера.

Варіантів у вас багато, але обмін на жорсткому диску між екземплярами, мабуть, не найкращий варіант.


14

Ні, згідно з документами EBS: "Том може бути доданий лише до одного примірника за один раз".

Як ви зараз використовуєте спільне сховище? Якщо ви хочете лише подавати файли з файлового сервера, чи обдумали ви створити систему, щоб ви могли проксі-сервер певні запити до процесу на файловому сервері, а не для того, щоб веб-сервери обслуговували ці файли?


2
Ось посилання на цю цитату: aws.amazon.com/articles/1667 . Див. FAQ у нижній частині статті. Мене здивує, чому aws ec2 describe-volumesповертає масив вкладених файлів.
Марк Беррі

4

Я впевнений, що ви не можете, але ви можете клонувати EBS і приєднати його до іншого екземпляра.

Це корисно для фіксованих наборів даних або для тестування "реальних" даних, але не дозволяє більш ніж 1 екземпляру працювати в одному блоковому сховищі


4

Кілька веб-серверів, що отримують доступ до MySQL Server і файлового сервера, є нормальним для AWS. Деякі найкращі практики, які слід дотримуватися для вищезгаданої архітектури, є:

Пункт 1) MySQL на EC2 може бути налаштований як Master-Slave в режимі асинхронізації / напівсинхронізації в AWS. EBS-OPT + PIOPS в RAID 0 рекомендується використовувати для БД високої продуктивності

Точка 2) Або ви можете використовувати режим Amazon RDS + Multi-AZ. Для масштабування читання Кілька RDS для читання Replica можна приєднати до MySQL RDS.

Пункт 3) Об'єм EBS не може бути приєднаний до декількох EC2 одночасно. Ви можете створити Файловий сервер на основі GlusterFS на Amazon EC2 за допомогою EBS. Кілька веб-серверів можуть спілкуватися з одним GlusterFS одночасно на AWS infra.

Пункт 4) Якщо ваш додаток може бути інтегровано з S3 як зберігання файлів, то його надають перевагу через стабільність, яку він вносить в архітектуру. Ви також можете отримати доступ до S3 за допомогою таких інструментів, як S3fuse, і зі своєї програми.



2

У світі ІТ є щось відоме як Clustered Filesystem, Redhat GFS, Oracle OCFS2, Veritas CFS ...


перевірити коментар до відповіді
ddopson

1
@sheki Я думаю, що ваш коментар до відповіді ddopson абсолютно не має значення для кластерних файлових систем. Кластерні файлові системи призначені для одночасного встановлення декількох серверів. Вся суть кластераfs у тому, щоб уникнути одиничних точок відмови.
Райан

2

Коротка відповідь - категоричне "Ні". Інші сказали це вище.

Ті, хто сказав "так", відповіли не на запитання, а на інше питання. Якщо EFS - це лише послуга NFS, то це не відповідь на запитання, як було зазначено спочатку. І неважливо, "EFS" розгорнуто у всіх зонах "чи ні, тому що ви можете зробити свій власний екземпляр NFS і мати декілька серверів, які змонтують NFS. Це не щось нове, ми це зробили вже в 1992 році. SMB та sshfs, все це лише способи монтування дисків як віддаленої файлової системи.

Ті, хто сказав "навіщо ти хочеш це зробити" або "все це закінчиться сльозами", помиляються. Ми десятиліттями монтуємо кілька дисків на декілька серверів. Якщо ви коли-небудь працювали з SAN (Storage Area Network), можливість підключення одного і того ж пристрою до декількох вузлів зазвичай через FibreChannel SAN є цілком нормальною. Тож кожен, хто запускав сервери десять років тому до того, як віртуалізація / хмарні сервери стали всюдисущими, має деякий вплив на це.

Незабаром з'явилися кластеризовані файлові системи, де дві системи могли читати і записувати в точно однаковому томі. Я вважаю, що це почалося з часів VAX та Alpha VMS в історії. Кластерні файлові системи використовують розподілену схему взаємного виключення, щоб мати можливість безпосередньо керувати блоками.

Перевагою встановлення одного і того ж диска на декілька вузлів є швидкість і зменшення одиничних точок відмов.

Тепер кластерні файлові системи не набули великої популярності у "споживчому" хостинговому бізнесі, це правда. А вони складні і мають деякі підводні камені. Але вам навіть не потрібна кластерна файлова система, щоб використовувати диск, приєднаний до кількох обчислювальних вузлів. Що робити, якщо ви хочете диск з читанням? Вам навіть не потрібна кластерна файлова система! Ви просто помістіть у / etc / fstab той самий фізичний пристрій, що і лише для читання (ro). Потім ви монтуєтесь на 2 або 10 серверів EC2, і всі вони можуть читати безпосередньо з цього пристрою!

Для цього є очевидний випадок використання у світі хмарних серверів при будівництві ферм, що швидко масштабуються. Ви можете підготувати ваш основний системний диск і використовувати лише невеликий завантажувальний і конфігураційний диск для кожного з серверів. Ви навіть можете завантажити їх з одного завантажувального диска, і безпосередньо перед перезавантаженням / в режимі читання-запису ви можете вставити Union-FS з 3-ма шарами:

  1. Основний системний диск, доступний лише для читання, із завантаженням, ядром та інсталяцією користувача
  2. Файлова система конфігурації, що містить лише декілька файлів (переважно в / і т.д.), які характерні для окремого сервера. Цей диск може бути записаний іншим сервером для підготовки до завантаження нового екземпляра. Прикладними файлами тут буде / etc / ім'я хоста і лише дуже мало файлів конфігурації, які повинні залишатися різними для кожного вузла.
  3. Диск, що записується, який, можливо, вам не знадобиться, може бути просто / tmp як файлова система пам'яті.

Так, так, питання мало багато сенсу, і, на жаль, відповідь (як і раніше) "Ні". І жоден NFS не є чудовою заміною для цього випадку використання, оскільки він карає всю активність читання з системного диска. Однак мережеве завантаження з системного диска NFS є єдиною альтернативою реалізації описаного вище випадку використання. На жаль, оскільки налаштування агента завантаження мережі та NFS набагато складніше, ніж просто доступ до того ж пристрою фізичного блоку.

PS: Я хотів би подати більш коротку версію цього як коментарі, але я не можу через дурний поріг 51 кредитної точки, тому я мушу написати відповідь з таким же суттєвим «Ні», але щоб включити мою думку, чому це відповідне запитання, на яке не отримано заслуженої відповіді.

PPS: Щойно я знайшов когось у StackExchange, згадуючи iSCSI. iSCSI дещо схожий на NFS, але логічно схожий на FibreChannel SAN. Ви можете отримати доступ (і ділитися) фізичними блоковими пристроями. Це полегшить обмін завантажувальним диском, тому вам не потрібно налаштовувати завантажувальну мережу, яка може бути вибагливою. Але тоді на AWS немає і мережевого завантаження.


1

Хоча EBS раніше дозволяв приєднати лише один екземпляр EC2 до заданого обсягу, тепер можливе багатоприєднання, принаймні, для обсягів io1. Для отримання додаткової інформації див. Цю публікацію в блозі AWS .


0

Чому ви не створите один екземпляр з томом і sshfs до цього тома в інших примірниках?


-3

Ви можете повністю використовувати один привід на декількох серверах в AWS. Я використовую sshfs для монтажу зовнішнього диска та обміну ним з декількома серверами в EC2.

Причиною, що мені потрібно було підключити один привід до декількох серверів, є те, що я маю єдине місце, щоб розмістити всі свої резервні копії, перш ніж витягувати їх з локальних.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.