Блог переехал на AWS

Постоянные посетители моего сайта, возможно, обратили внимание, что он стал как будто бы пошустрее. Так оно и есть: примерно пару недель назад я не стал продлевать хостинг на Bluehost и со всем своим нехитрым скарбом (доменное имя, база данных для CMS и около гигабайта файлов) переехал на Амазон. По ощущениям, на новом месте сайт работает быстрее раза в два. Особенно это заметно при листании фотографий (например, здесь) - раньше эта процедура тормозила просто нещадно, а сейчас стало значительно приятнее - несмотря на то, что хостинг по-прежнему физически расположен в Америке.

Переехал я на обычную виртуалку EC2 t2.micro. После shared-хостинга на ней чувствуешь себя очень просторно. Кроме того, оно еще и почти вдвое дешевле, чем на Bluehost (при условии предоплаты, конечно, но на старом месте я тоже платил вперед). А первый год так и вовсе бесплатно за счет Free Tier. Разумеется, все, что на готовом хостинге предоставлялось "из коробки", теперь пришлось устанавливать и настраивать самому, но, во-первых, я вполне в состоянии это сделать, а во-вторых, у меня появилась замечательная возможность сделать все так, как я хочу, а заодно и попробовать применить в домашних условиях docker - инструмент, которым я недавно проникся :)

Дело в том, что я последний год работаю в конторе, которая активно использует микросервисы, и концепция мне настолько понравилась, что я решил попробовать построить хостинг для своего блога также на микросервисах. Отдельный docker-контейнер для Drupal, отдельный для MySQL, и также рядом в отдельном контейнере крутится Nginx, отвечающий за обработку HTTP-запросов, и перенаправляющий нужные на Drupal. Если в ближайшем будущем дозрею до HTTPS - наверняка это будет какой-нибудь LetsEncrypt, также в отдельном контейнере. Все это вместе связывает Docker Compose - единственный инструмент помимо собственно докера, который нужно ставить непосредственно на виртуалку. На работе у нас за это отвечает Kubernetes, но для моих нужд это чересчур мощная штука.

Последним штрихом было написание скрипта для развертывания всей этой структуры из имеющегося бэкапа. Я дал свободу своему внутреннему перфекционисту, поэтому писал долго, зато доволен результатом :)

Переезд происходил поэтапно. Сначала я передал в ведение Амазона доменное имя и перенес набор записей DNS, нацеленных по-прежнему на Bluehost. Потом перенаправил имена всех статических сайтов на новый адрес, оставив старым только указатель на блог, поскольку тот завязан на базу данных. Пару дней оно крутилось в таком виде, после чего я, наконец, сделал последний шаг:

  • уменьшил TTL записи myx.ostankin.net до минимума - 60 секунд;
  • спустя пару часов остановил сайт, переведя его в режим обслуживания;
  • снял копию базы данных и перекинул на новый хостинг;
  • развернул копию при помощи скрипта восстановления;
  • на новом месте вывел сайт из режима обслуживания;
  • перенаправил DNS на новое место.

Общее время пребывания в дауне - пять минут. Полагаю, никто даже не заметил :) По-моему, быстрее перенести трехзвенку невозможно - если только не настраивать заранее репликацию базы данных, что а) в моем случае явно излишне и б) представляется мне затруднительным на shared-хостинге.

Комментарии

Изображение Vitaly Kalinkin

Пробовал GitHub Pages? Markdown-ом фигачишь и красота :)

Изображение myx

Ну, если уж делать выбор в пользу Markdown, то лучше Jekyll (ты, по-моему, как раз на нем сидишь), он больше возможностей дает. Только у меня имеется "легаси" в лице пяти сотен постов, набравшихся за несколько лет :) Я не знаю простого способа сконвертить их все в маркдаун, особенно учитывая то, что я там регулярно баловался с jQuery-вставками :)

Изображение Vitaly Kalinkin

Пфф, делай как все --- конвертер на питончике, а если что отвалилось --- ну значит не судьба, будет отваленное :) Вставки же все равно уже протухли давно наверное, в JS мире все за неделю протухает.

Изображение myx

Я так не умею :)

Изображение Vitaly Kalinkin

Вот поэтому тебе и нужен маркдаун, пока не поздно :) Потом просто подключишь новый парсер/конвертер и на пенсии издашь книжку в красивом PDF, или че там будет через 80 лет. Где ты в 2096-ом будешь искать эмулятор виртуальной машины для того чтобы запустить в нем IE 6 на котором твой JS побежит? Это будет примерно как щас запустить программу на фортране 77 для мейнфрейма.

Изображение myx

Предлагаешь вообще не делать динамический/интерактивный контент? Потому что все тлен? :)

И потом, тот же самый маркдаун еще сырой. Некоторые вещи разные парсеры трактуют по-разному, а некоторые на нем невозможны в принципе.

Изображение Vitaly Kalinkin

Ну я вот так делаю интерактивный контент:

[figure]
[href="/olol/123.jpg"]
[figcaption]Mweo

Изображение Vitaly Kalinkin

Порезало пробелы. Короче там отступы красивые были

Изображение myx

А   для кого придуман? Совсем ты, брат, одичал со своим маркдауном :)

Изображение Vitaly Kalinkin

А апдейты на базу потом по бинлогу накатывал на новый инстанс? :) Я к тому, что нафига такие заморочки? Выключил бы все и перенес за час, не думаю что кто-то бы заметил :) Хотя я конечно не знаю сколько у тебя тысяч подписчиков, но мои 50 миллионов даже не жаловались :)

Изображение myx

Говорю ж, внутренний перфекционист на свободу вырвался :)

И потом, мне чисто психологически некомфортно, когда я знаю, что в любой момент из поиска может прийти человек, а там ничего не работает. Подписчиков у меня немного, но полторы сотни посетителей в день за счет поисковиков набегает.

Изображение Vitaly Kalinkin

Бери пример с меня, у меня нету таких проблем :)

Изображение Anatoly Koustov

Влад, а такой ламерский вопрос, я поднял Worpress на AWS - перестала проходить фейсбучная авторизация, хотя твиттерная работает. Здесь, я вижу, все ок. В чем может быть дело? Поменять вордпресс на новую версию или на более совместимую платформу или копать настройки?

Изображение myx

Привет! Сложно сказать - у меня за это отвечает модуль под названием HybridAuth, который, кстати, существует как под Drupal, так и под Wordpress. В общем случае модулю должно быть совершенно по барабану, где находится хостинг, лишь бы URL остался в точности прежним и TCP/80 (или TCP/443 в случае HTTPS) был открыт.

Насколько я знаю, и фейсбук, и твиттер используют один и тот же OAuth 2.0, поэтому раз твиттер работает - значит, платформа в порядке. Я бы начал копать с настроек фейсбучного приложения - возможно, даже пересоздал бы его с нуля, если ничего не помогает.

Изображение Vitaly Kalinkin

Кстати скорость прям норм стала. А то я раньше засыпал прежде чем твоя страница откроется :)

Изображение myx

Ну, собсно, ради этого все и затевалось :) Рад, что получилось.

А то на Блюхосте как-то совсем грустно: мало того, что и так тормозит, так еще и тормоза ненормированные - иногда страничка могла и на несколько секунд задуматься. И это при том, что на хосте стоит ажно десятиядерный виртуальный процессор! На практике он оказался тормознее, чем одноядерный амазоновский.