За октябрь месяц от Амазона мне пришёл счёт в 71 USD, что уже начало несколько утомлять.
Впрочем – я не слишком следил за расходами, и сумма, как для AWS, вполне оправдана.
Например – у меня в S3 накопилось 370 ГБ бекапов, потому что было лень настроить S3 Lifecycle. Трафика за месяц ушло 1.5ТБ – потому что кроме блога есть OpenVPN без настроенных маршрутов (см. пример в комментарии к этому посту), да плюс 3 запущенных инстанса – один под сам блог, второй под MariaDB, и третий – чисто под OpenVPN, и никак не доходили руки всё это привести в порядок – хотя собирался давно.
В общем, счёт за Октябрь выглядит так:
Основная цель переезда на AWS была ближе познакомиться с ним и его сервисами, т.к. на тот момент и опыта с ним было мало, и по работе с ним сталкивался достаточно немного.
Но сейчас проект, в котором работаю, полностью хостится в Амазоне, задач с ним хватает, тот опыт, которого хотелось – получил.
А потому – появилась мысль попробовать и другие хостинги, в частности – DigitalOcean.
В первую очередь – потому, что он предлагает достаточно внятную ценовую политику.
Например – для начала можно взять машинку с 2 ГБ памяти, 1 ЦПУ, 50 ГБ диском SSD и 2 ТБ трафика (при чём, в отличии от Амазона – тут считается только исходящий трафик).
Стоить такая машина будет 10 уе/мес – более чем приятная цена.
Правда, есть нюанс:
For example, if a Droplet’s maximum monthly data transfer allowance is 1000 GB, it will accrue 1000 GB / 672 hours = 1.5 GB per hour that the Droplet exists.
Т.е., трафик дроплета делится на часы в месяце, и если за час трафика было скушано больше, чем полученное значение – то он будет стоить денег.
Собственно, план на сегодня – познакомиться с основными необходимыми сервисами DigitalOcean.
Содержание
Регистрация в DigitalOcean
Переходим на страницу регистрации, указываем логин, почту и пароль:
На почту отправляется письмо со ссылкой на подтверждение, после чего попадаем на страницу оформления деталей оплаты:
Выбираем платёжную карту или PayPal, заполняем поля (DO отправит тестовый платёж в 1 доллар на указанную карту, потом вернёт деньги обратно), попадаем на следующую страницу – Your project.
Скипнуть его нельзя, потому заполняем поля по желанию:
В целом проекты в DO – некий аналог Resource Groups в AWS/Azure, как я понял из документации.
И наконец-то попадаем в панель управления “дроплетами” aka виртуальными машинами в DO (надо погуглить – откуда такое название взялось):
Основные сервисы DigitalOcean
Слева в панели есть список основых сервисов, которые предлагает DO:
- Droplets: виртуальные машины, аналог EC2 в AWS
- Volumes: диски, аналог EBS
- Spaces: object-storage, аналог S3
- Images: копии дисков и дроплетов
- Networking: тут находится управление IP, firewall, Load Balancer и доменами
- Monitoring: управление правилами алертов мониторинга
- API: DO предоставляет публичный API для управления сервисами, надо будет его попозже поизучать
Создание дроплета
Не очень мне нравится слово “дроплет”, потому иногда буду называть “инстанс” или “вирутальная машина”.
Собственно – кликаем Create Droplet, выбираем операционную систему, её версию и тип инстанса:
Ниже предлагается включить автоматическое создание бекапов (которое будет стоить 20% от стоимости инстанса), и подключить дополнительный диск:
В целом – решение интересное, но мне пока не нужное – дроплет идёт с 50 ГБ диска, бекапить данные я буду стареньким скриптом в AWS S3 (пока что).
Дальше выбираем расположение дата-центра, в котором будет запущен инстанс:
Снова-таки по аналогии с AWS – у DO есть регионы, в которых расположены дата-центры, которые разбиты на “Availability Zones”, например регион Amsterdam включает в себя две “зоны доступности” – AMS2 и AMS3.
Список всех регионов можно найти на странице статуса DO тут>>> (а вот в документации я описания регионов не нашёл – плохо смотрел?).
В additional options я добавил Monitoring (в дроплете сразу будет установлен клиент мониторинга), а в SSH keys есть выбор.
Можно загрузить свой ключ, и использовать его – либо пропустить эту опцию – тогда рутовый пароль будет отправлен на почту.
Я загрузил свой ключик.
Генерируем его:
[simterm]
$ ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/home/setevoy/.ssh/id_rsa): /home/setevoy/.ssh/do_rtfm_droplet Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/setevoy/.ssh/do_rtfm_droplet. Your public key has been saved in /home/setevoy/.ssh/do_rtfm_droplet.pub. The key fingerprint is: SHA256:6+1rfOkKvOuumTabLsl3fW2e+/OR2hL+yf7o+LOH7Sw setevoy@setevoy-arch-home The key's randomart image is: +---[RSA 2048]----+ | | | | | | | | | S | | . . . .| | . . +o .o.= | | + +=.++ ++E==| | =BB*+=*o*%#X| +----[SHA256]-----+
[/simterm]
Получаем публичную часть:
[simterm]
$ cat /home/setevoy/.ssh/do_rtfm_droplet.pub ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDM1xV3U6tkdZpPOFy0a09fWUBbRGSUKZbNLLiG ...
[/simterm]
Указываем её в New SSH Key:
И последний шаг – указываем имя инстанса (оно же будет использоваться в качестве $HOSTNAME
в системе), количество, и проект, к которому он будет принадлежать:
Машинка создаётся:
Машинка готова:
Floating IPs
Floating IP – аналог Elastic IP в AWS и является статическим IP, который можно подключать к различным виртуалкам.
Т.е. в случае, если один инстанс “поломался”, и ресурсы/сайты перенесены на другой – то вместо того, что бы обновлять DNS для всех сайтов на IP нового дроплета – можно просто переключить Floating IP.
При этом его использование бесплатно, пока он подключен к дроплету.
Документация тут>>>.
Переходим в FIP, выбираем инстанс, получаем новый адрес:
И используя его и созданный ранее SSH-ключ – подключаемся к машине:
[simterm]
$ ssh [email protected] -i do_rtfm_droplet The authenticity of host '167.99.16.252 (167.99.16.252)' can't be established. ECDSA key fingerprint is SHA256:9M4XNhIROqTr4ByCgIA7I2+HY46fIwdDIh26EmqJZiM. Are you sure you want to continue connecting (yes/no)? yes ... Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. root@rtfm-dev:~#
[/simterm]
Firewall
Последняя вещь, которая необходима для запуска минимального сервиса – фаервол, аналог в AWS – Security Group.
Переходим в Firewalls, жмём Create Firewall, описываем правила и дроплет, к которому он будет применён:
Тут, понятно, 8.8.8.8 меняем на свой домашний/рабочий IP.
Применяем изменения, пробуем SSH с другого хоста, не добавленного в правила:
[simterm]
12:39:04 [setevoy@rtfm-prod-current ~] $ ssh [email protected] ssh: connect to host 167.99.16.252 port 22: Connection timed out
[/simterm]
Из дома всё по прежнему работает.
В целом – на этом и всё.
Теперь надо обновить Ansible роли, запровиженить инстанс, скопировать данные – и можно тестировать работу блога в DigitalOcean.
UPD Блог переехал на DO 6.11.2018, второй день – полёт нормальный.
UPD 2 Ну и вот, по состоянию на 24.11 – как изменились счета.
AWS – тут остался ещё один сервер с OpenVPN + насщёлкало за RTFM до его переезда:
До переезда каждый месяц выходило порядка 65 баксов.
Digital Ocean – тут ещё некоторое время крутился второй дроплет в Dev-версией блога: