Разворачиваем СвоёОблако в облаке. Установка CoreOS

Меня всегда интересовали облачные технологии. В том числе и наиболее трендовые из них — это децентрализация, кластеризация, оптимизация и распределенние всего: вычислительных ресурсов, данных, пончиков и власти. Поэтому я не мог пройти мимо CoreOS, о которой в IT-сообществе сейчас много разговоров, и которая стала для меня отправной точкой для экспериментов.

Чтобы совместить приятное с полезным, я стал искать подходящее приложение, на котором, с одной стороны, было бы интересно применить облачные технологии, а с другой, — могло бы пригодиться в будущем. Поэтому, я решил развернуть инсталляцию OwnCloud на базе CoreOS.
Теперь я расскажу, к чему это привело, и по ходу действия приведу ссылки, чтобы интересующийся мог углубить свои знания в предметной сфере. Но если возникнут вопросы — смело задавайте их в комментариях.

Итак, я поставил себе задачи:

  1. Установить CoreOS на bare-metal сервер
  2. Настроить распределенное хранилище данных
  3. Написать свой Dockerfile и запустить приложение в кластере
  4. Настрить автоматическое обновление и регистрацию контейнеров
  5. Рассмотреть неиспользованные технологии и придумать им применение(*)

В этой статье я расскажажу об установке CoreOS. О настройке и дальнейших экспериментах — в дальнейших.

Установливаем CoreOS на bare-metal сервер

Чтобы установить OwnCloud на сервер, нужно обзавестись сервером.
Инсталляция на виртуальные сервера «за деньги» или такие же виртуальные сервера на локальной машине не столь интересна, как установка на «живое» железо. Но с текущем курсом доллара арендовать сервера — дорогое удовольствие. Поэтому был совершен рейд на гугл, чтобы найти провайдера, предлагающего дешевое и «металлическое» решение.

Гугл предложил мне две компании, обе французские: Kimsufi и Online.
Kimsufi — дочка OVH, одного из крупнейшего хостера.
Online — дочка iliad, одной из крупнейших телекоммуникационных компаний.

Обе компании предлагают дешевые и при этом мощные решения. Хоть по отзывам у online.net сеть лучше, мой выбор пал на Kimsufi по двум субъективным причинам: 1) сервер на VIA Nano U2250 слишком медленный, а за следующий в линейке просят уже 16 евро — жаба душит; 2) наличие верифицированного аккаунта у OVH/Kimsufi.

Регистрация

О регистрации, подтверждении и снятии VAT у провайдера Kimsufi было много сказано (хабр). Единственное, о чем стоит предупредить — это о времени ожидания. Создается впечатление, что поддержка у Kimsufi работает по остаточному принципу — проблемы кастомеров решаются только когда от «большого брата» (OVH) нет задач. Стоит это иметь в виду, если хотите размещать там production.

Покупаем сервера

Я заказал три сервера. Почему три? Потому что только три сервера могут гарантировать отказоустойчивость и отсутствие split-brain.

Краткое объяснение

Так как желающих приобрести сервера за такую цену очень много, стать счастливым обладателем своей железки «честным» путем довольно сложно. Лично я для их поимки воспользовался этим скриптом.

Различие серверов линейки KS-2

 

Установка CoreOS

Как только сервера оплачены и прошли предпроверку, вы получите сертификат сервера по почте. Сразу же после этого сервера будут доступны через веб-админку.

Как избавиться от назойливого попапа в админке и нюансы refund политики


Владельцы ДЦ могут оценить некоторые фичи


Для начала нам нужно попасть в рекавери, а дальше установка идет по официальной инструкции установки на диск.
Чтобы загрузиться в Rescue, в веб-интерфейсе кликаем на Netboot -> Rescue. После этого сервер нужно перезагрузить, проще всего это сделать жмякнув на кнопку Restart. Пароль для входа придет на почту.
Как только авторизовались на сервер по SSH, загружаем скрипт установки

wget https://raw.github.com/coreos/init/master/bin/coreos-install
chmod +x coreos-install
./coreos-install --help

Пишем свой cloud-init файл и процесс установки через coreos-install -C stable -c /path/to/cloud-init -d /dev/sda.

После того, как установка завершится, можно внести изменения вручную: добавить ssh-ключ или отредактировать cloud-init. Для этого необходимо примонтировать ROOT партицию — она под номером девять. Например:

mount /dev/sda9 /mnt
echo 'ssh-rsa AAAAB... [email protected]' > /mnt/home/core/.ssh/authorized_keys

Либо же можно положить ключ через cloud-init:

cloud-init номер один

 

cloud-init номер два

Во время первой загрузки системы запускаются скрипты, которые делают некоторую магию (чинят GPT, делают resize корневой файловой системы(/dev/sda9) и пр.

Примечание


Чтобы загрузиться в свежеустановленную ОС, нужно сменить порядок загрузки через веб-интерфейс -> Netboot на загрузку с жесткого диска и отправлить сервер в перезагрузку(командой reboot в терминале, либо кнопкой Restart в веб-админке).
Если вы не забыли положить ssh-ключ или в cloud-init’е указали своего пользователя, то вас должно пустить в систему. Если удалось — поздравляю! Если нет — что-то пошло не так.

Переразбивка диска

Как только система установлена, можно приступить к её изучению. А интересного много: etcd, fleet, systemd и связанные с этим технологии: kubernetes, confd и многое другое!
Но перед тем, как идти дальше, я решил создать две дополнительных партиции: для хранения пользовательских данных (распределенная) и для хранения контейнеров и системных приложений (btrfs).
Почему была выбрана btrfs, если она является экспериментальной? Потому что цель моего эксперимента в том, чтобы поэксперементировать с новыми технологиями. И несмотря на то, что btrfs была вот уже пару лет стабильно работает на десктопах/ноутбуках, в продакшне я её не использовал.

Историческая справка


Для того, чтобы что-то выделить, нужно в начале освободить! Для этого нужно вернуться обратно в Rescue.

Если вы не можете загрузиться в Rescue


Я уменьшил размер ФС, затем уменьшил размер партиции и уже после создал новые.
Корень находится на девятой партиции: /dev/sda9. Приступим:

e2fsck -yf /dev/sda9 # проверяем ФС на наличие ошибок
resize2fs /dev/sda9 100G # изменяем размер корневой ФС до 100ГБ
gdisk /dev/sda # меняем размер партиции
resize2fs /dev/sda9 100G # чтобы убедиться, что всё ок

В gdisk’е нужно удалить партицию и создать новую с измененным размером.
Если мне не изменяет память, то сочетания клавиш будут сделующие: d -> 9 -> n -> 9 -> -> +100G -> -> c -> 9 -> ROOT -> w -> Y ->
Если вы сделали всё верно, то можете спокойно загрузиться с жесткого диска и увидеть, что /dev/sda9 занимает 100ГБ или 93ГиБ.

core3 ~ # df -h /dev/sda9
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda9        97G  128M   93G   1% /

Несмотря на то, что я устанавливаю CoreOS на сервера Kimsufi, инструкция подходит и другим провайдерам. Если вы столкнулись с нюансами при установки — пишите, обсудим.

На этом рассказ об установке CoreOS на bare-metal сервер Kimsufi завершен.

Who’s next?

В следующей статье я расскажу, как создать партиции из освободившегося места, как настроить RTM (Real Time Monitoring — скрипт мониторинга для отрисовки красивых графиков в веб-админке OVH), etcd, fleet и как развернуть распределенную ФС.

 

https://habrahabr.ru/post/256107/

Leave a Comment

Your email address will not be published. Required fields are marked *

Shares