За октябрь месяц от Амазона мне пришёл счёт в 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-версией блога: