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

Каков наилучший способ создания инстансов EC2 с томами EBS, которые скоро станут очень большими?

При запуске инстансов EC2 кажется, что большинство AMI сообщества поставляются с 8-гигабайтным томом EBS, подключенным в качестве корневого диска. Нам определенно понадобится больше 8 ГБ, поскольку размер нашей базы данных растет. Как мы рекомендуем спроектировать нашу систему? Я вижу следующие варианты:

  1. Используйте хранилище 8 ГБ, пока нам не понадобится его расширить, а затем следуйте одному из нескольких длинных онлайн-руководств, чтобы увеличить размер корневого диска.

  2. Подключите второй том EBS к экземпляру большего размера (например, 60 ГБ) и сохраните все данные на этом томе. Если я хочу использовать MongoDB или MySQL в качестве базы данных, будет ли легко установить файлы приложения базы данных на корневой том, но сохранить данные на другом томе?

Какое решение лучше всего?

Если вы не используете экземпляр EC2 с поддержкой EBS, образ AMI извлекается в образ диска объемом 10 ГБ, который воссоздается при запуске экземпляра. Я использую экземпляры EC2, хранящиеся в экземплярах, вместо экземпляров с поддержкой EBS для всех своих экземпляров сервера. Затем я просто делаю тома EBS на любой стороне, которая мне нужна, и монтирую их как дополнительные диски.

С томами EBS я обнаружил, что использование файловой системы xfs и простое использование всего тома EBS без разбиения на разделы - лучший способ действий. Чтобы увеличить объем, когда это было необходимо, я делал снимок существующего тома EBS, а затем создавал новый том большего размера, построенный из снимка. Затем вы просто отсоединяете существующий том EBS и присоединяете новый. После того, как новый том смонтирован, он будет отображаться как текущий размер тома, пока вы не запустите служебную команду xfs expand, которую нужно запускать, пока файловая система работает. Проверка емкости после того, как это будет сделано, покажет новый больший размер.

Теперь, если вы используете Ubuntu AMI, вы можете установить пакет ebsmount и создать скрытый каталог на томе EBS и настроить систему для фактического автоматического монтирования с использованием udev, когда том EBS подключен к экземпляру EC2.

Думаю, на самом деле есть 3 варианта:

  1. Довольно легко расширить том EBS - моментальный снимок, создать том EBS желаемого размера, отсоединить оригинал, присоединить новый, изменить размер файловой системы, это, безусловно, можно сделать на корневом томе, но я бы посоветовал пойти с вариант 2.
  2. 2-й том EBS - это мое личное предпочтение (я не могу поручиться, что это «лучшая практика»). Я храню базы данных на одном томе (и монтирую его в / var / data), а веб-файлы на другом (и монтирую в / var / www / html) и, конечно же, имею свой корневой том. Преимущество состоит в том, что а) вы можете изменять размер и делать снимки каждого диска независимо, б) у вас есть несколько независимых операций чтения / записи (все еще ограниченные сетью), в) даже если гипотетически корневой том поврежден (т. Е. Плохое обновление программного обеспечения, и т. д.) данные легко перемещаются в новый экземпляр (даже со снимками, то же самое не так, если все было на корневом томе).
  3. Кластерная файловая система (например, gluster), которая позволяет распределять файлы по нескольким томам и добавлять дополнительные тома по мере необходимости. По сути, вы должны выбрать размер (скажем, 10 ГБ) и, поскольку у вас заканчивается пространство, добавить еще один том 10 ГБ и т. Д. Gluster будет распределять файлы по вашим томам - это будет работать как для одного экземпляра (т.е. для нескольких томов, прикрепленных к один экземпляр) или нескольких экземпляров (т. е. несколько томов, совместно используемых несколькими экземплярами). Хотя в этой настройке есть степень сложности (и накладных расходов), хотя теоретически она предлагает лучшую универсальность.

(Есть 4-й вариант, но он действительно непрактичен для чего-то вроде базы данных - вы можете смонтировать S3 как файловую систему fuse - и, поскольку вам не нужно предварительно выделять пространство на S3, у вас будет хранилище, которое увеличивается с вашими потребностями. Однако он довольно медленный по сравнению с EBS или эфемерным хранилищем, и его надежность в лучшем случае сомнительна.)

Как правило, лучше всего иметь загрузочный диск и диск с данными из разных файловых систем, чтобы, например, чрезмерно загруженный файл журнала, заполняющий загрузочный диск, не мог ограничить возможность вашего клиента загружать контент (или наоборот. ). Я никогда не устанавливал Mondo, но с MySQL довольно легко указать, где вы хотите хранить данные. Позже данные даже легко переместить вниз с помощью rsync, изменения конфигурации и всего лишь пары минут простоя, если вам нужно снова расширить диски.

Если вы идете по маршруту mysql, вероятно, следует упомянуть, что служба реляционной базы данных Amazon делает довольно хорошую работу по созданию стабильной масштабируемой базы данных без всех головных болей по управлению своей собственной.

Поместите важные данные на (хотя бы один) внешний том EBS. Для всего, для чего вам действительно нужна производительность, используйте Linux MD RAID-10 через много томов EBS.