Я пытаюсь работать со стандартной конфигурацией для набора экземпляров EC2 под управлением ubuntu 12.04. Эти серверы будут в первую очередь веб-серверами для приложения Ruby on Rails. Когда вы настраиваете новый большой экземпляр, вам предоставляется первичное хранилище объемом 8 ГБ, а затем временное хранилище объемом 400 ГБ, которое монтируется в / mnt.
Мне кажется логичным переместить некоторые каталоги, которые могут расти, в каталог / mnt, я специально думал о /var/www
и /var/log
.
У меня двоякий вопрос:
Это хорошая идея или есть подводные камни, которых я не вижу?
Если это хорошая идея, как мне это настроить. У меня есть возможность настраивать новые экземпляры и отключать наши старые экземпляры. Меня беспокоит длительная конфигурация, меня не обязательно беспокоят простои.
Я разработчик с некоторым опытом работы с DevOps, но с установкой дисков я раньше не сталкивался, поэтому я буду очень признателен за подробные указания.
Я не знаю, что у тебя в руках /var/www
, но содержимое на моих серверах определенно нельзя назвать «эфемерным», что, как я понимаю, означает «может исчезнуть в любой момент, и я не особо возражаю». Если это не то, что Amazon подразумевает под словом «эфемерный», прошу прощения.
Что касается /var/log
, если вас вообще не интересуют данные журнала, не собирайте их в первую очередь.
Если вы заботитесь об этом, но не можете позволить себе очень долго хранить его в первичном хранилище, то это не столько проблема с подключением, сколько проблема с управлением журналами. Я был бы склонен использовать logrotate
, если он доступен вам, и настройте его для перемещения старых журналов в /mnt
каждую неделю или около того. Таким образом, старые журналы остаются (до тех пор, пока временное хранилище не исчезнет), но текущий журнал безопасен в основном хранилище.
Рецепт logrotate вроде
/var/log/foo {
olddir /mnt
compress
weekly
rotate 1000
postrotate
/etc/rc.d/init.d/fooservice restart
endscript
}
может быть полезен, по крайней мере, в качестве шаблона.
Если данные (в файловой системе), которые накапливает приложение, являются ценными, игнорируйте дополнительное хранилище объемом 400 ГБ и смонтируйте том EBS. В противном случае...
Ответы зависят (а) от вашего приложения и (б) «точечный» или «зарезервированный» экземпляр, но
1) Да, это хорошая идея, потому что, очевидно, у вас меньше шансов исчерпать дисковое пространство. Вероятно, это зависит от того, что делает ваше приложение rails, но просто для разделения и четкого определения того, что «ваше» и «мое», я обычно помещаю все «свои» в /mnt
. Нет необходимости монтировать его вручную. Это сделано только что cd mnt
и вперед. Есть небольшая возня с разрешениями, с которыми у вас не возникнет проблем.
Но, конечно, это пространство «эфемерно», поэтому оно умирает вместе с сервером, что подводит нас ко второй квалификации ...
2) «спот» или «зарезервированный» экземпляр?
Если у вас есть спотовый инстанс, вы должны принять тот факт, что, как бы далеко это ни было, ваша максимальная цена будет перебита, и сервер будет неожиданно отключен. Это создаст проблему, если данные на сервере имеют значение.
Но! если вы платите надбавку за "зарезервированный" экземпляр, что (я не читал все заявление об ответственности, написанное мелким шрифтом; - /) означает, что угроза неожиданного завершения работы вашего сервера и накопление данных приложением очень существенно уменьшено. Вы могли бы запланировать периодическое резервное копирование (на S3?) И очень спокойно спать без дополнительных затрат на EBS.
В долгосрочной перспективе целью является минимальное время простоя (и риск). Так что лучше заплатить немного больше, чем тратить деньги на копейки, а потом проигнорировать /mnt
и познакомитесь с тем, как создать и смонтировать EBS
объем. Ставить all
там твои вещи. Таким образом вы можете перезагрузить сервер, не выходя из спящего режима. Этот материал не исчезнет, и не потребуется «время», чтобы вернуть вещи туда, где они были до того, как произошла какая-либо катастрофа, потребовавшая циклических экземпляров серверов.
То, что вы планируете, аналогично тому, что я делаю для всех своих экземпляров, но я также включаю / var / lib / mysql и большую часть каталогов / etc / {apache2, mysql, php}. Я делаю это, чтобы никогда не потерять свои конфигурации, когда экземпляр завершается по какой-либо причине.
Это отличная идея, поскольку вы никогда не потеряете свои данные. Как я уже упоминал, если экземпляр выйдет из строя, вы сохраните эту информацию, и вам просто нужно будет подключить ее к новому экземпляру.
Самый простой способ сделать это - просто переместить эти каталоги в том EBS, а затем создать на них символические ссылки в их исходном местоположении.