Ситуация с хостами

Всем привет! Давненько не слышались (если не считать тех хаотичных сообщений в дискорде о вечных падениях серверов и проблем с хостами)...

В последнее время мы были очень заняты решением серьезных проблем с нашей инфраструктурой. Это действительно сложно — добиться стабильной работы всего того обилия сервисов и приложений, которые запущены вместе с нашими игровыми серверами, ведь они требуют очень специфической настройки и связи между друг другом.

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

Старый хостинг был очень нестабилен

Последний исторически имел кучу проблем, в особенности с поддержкой, но мы старались от них изолироваться путем аренды выделенного сервера, то есть целой отдельной машины (сервера, как бы компьютера без экрана). Но даже несмотря на такие меры последний год мы страдали от постоянных выключений сервера, и последней каплей нашего терпения стало выключение машины на периоды по несколько часов аж 8 раз в неделю в начале июня!

Раньше мы еще могли закрыть глаза на периодические рестарты около 5 раз в месяц, но это уже слишком, поэтому мы взялись за переезд...

Переезжать, оказывается, не так просто...

Как уже мы уже сказали выше, у нас очень много всего, и организовано оно не самым лучшим образом, поэтому переезд начался невероятно болезненно. Было принято решение полностью переработать процесс развертки наших приложений и модернизации стэка (это так по-умному называется "комплект" всяких программных компонентов).

За месяц-полтора мы смогли достичь очень приличных результатов, сделав все наши технические навороты достаточно мобильными, чтобы достаточно просто можно было переезжать на любой хостинг, железо, а также изменять количество ресурсов/копий приложений для обеспечения стабильной работы и обновлений. Так мы начали переезд на (как нам тогда казалось) более выгодный хост с куда более мощным железом и меньшей ценой аренды.

Под обстрелом (или "бункер" нового хоста)

Из такого мрачненького подведения к этой теме можно понять, что все не закончилось так просто... Итак, мы развернули на новом мощном железе все наше добро, и вроде первые пару дней все работало хорошо, но затем на нас начали пускать достаточно мощные сетевые атаки. В целом они не сильно мощные по меркам индустрии, но достаточно сильные, чтобы вызвать проблемы в работе наших сервисов. И главной зацепкой стало не наше несовершенство приложений, а "защита" (да, в кавычках) хостинга.

Сетевые игры чаще всего работают по так называемому протоколу UDP, это не исключение и для Garry's Mod. Большинство хостингов предоставляют приличную защиту по TCP, ведь по этому протоколу работают вебсайты, всяческие приложения, базы данных и прочее. Наш новый хост не был способен ни в какой мере блокировать даже самые примитивные атаки по UDP, поэтому при любом всплеске активности включались специальные "фильтры", которые отключали нам интернет наполовину. Таким образом все — игровые сервера, сайт, форум, базы данных и так далее не могли связаться ни со Steam, ни с Discord, ни с нашими игроками. Последствия, в общем, катастрофические.

Мы так до сих пор и не знаем, кто и зачем это делал, но это могли быть как и просто недоброжелатели, которые случайно наткнулись на слабую защиту нашего хоста, так и старые хостинги, пытаясь вернуть нас к себе, а может и продавцы "услуг по защите интернет-ресурсов", смотрите что мне пришло в Telegram на второй день атак:

На сегодняшний день диалог удален отправителем. Как, почему и зачем — загадка, как и реальные мотивы этих ребят. Да и черт с ними, поехали искать новый хост...

Октоторп Пилигрим

Следующим решением была попытка выстроения распределенной архитектуры. Звучит сложно, и это действительно сложно сделать грамотно, но благодаря нашей работе в начале лета это вполне возможно без колоссальных усилий.

Итак, мы попробовали арендовать несколько "виртуальных серверов", это как бы часть железа, которая стоит значительно дешевле, но имеет меньшую мощность по сравнению с целой машиной.

Раньше нам приходилось платить большие деньги, чтобы взять сервер с очень мощным ядром (сервера Garry's Mod однопотоковые, поэтому нам нужно одно большое мощное ядро), а такие ядра всегда идут "в комплекте", то есть если хочешь ядро на 5ГГц, бери-ка сразу 16, и это выливается в копеечку.

Вернемся к виртуальным серверам. Они позволяют взять парочку ядер, используя так называемую виртуализацию, и дать их отдельному пользователю. Мы понимали, что виртуализация "съедает" немного ресурсов железа, и более того, хостинги могут "читерить", продавая одно ядро нескольким клиентам, что очень сильно сказывается на производительности. Но мы не подозревали, насколько крупные проблемы сейчас с этим на рынке. Мы попробовали три разных крупнейших хостинга, и у всех тот же самый AMD Ryzen 9 5950X работал где-то на 60% мощности от того, что мы брали в выделенных серверах, и это заставляло Доброград умирать уже на 50-60 игроках, это совершенно неприемлемо.

Ходим по кругу

В итоге мы арендовали менее мощный выделенный сервер для наших дополнительных сервисов вроде сайта, бота, баз данных и прочего, он работает стабильно и находится под приличной защитой, стоимость здесь не сильно высокая, так как все современные приложения многопоточны, и мы можем не переплачивать за супер-процессоры.

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

💡
Забавный факт: на момент написания поста у нас под контролем находятся сервера с ресурсами в такой сумме: 350ГБ оперативной памяти, 72 процессорных ядра от 3 до 5.3 ГГц, 22 ТБ NVMe SSD и почти 5 ТБ/c пропускной способности сети (в каждую сторону). Накопилось, потому что везде оплата нужных тарифов от месяца

В итоге мы объединились с нашими друзьями из Danganronpa Online, чтобы арендовать приличный сервер на базе Core i9-12900K. На настоящий момент это самый сильный процессор для работы Garry's Mod, так как он имеет невероятно высокую частоту по одному ядру — аж 5.3 ГГц!

Собственно, здесь мы и остановились. В данный момент игровой сервер стоит все у того же старого хостинга, и все так же на выделенном сервере... Теперь, надеемся, вы понимаете, что ведение наших проектов — дело очень непрямолинейное, и работать над крупными обновлениями в таких условиях было очень затруднительно.

Да, частично мы сделали здоровенный круг длительностью в почти 3 месяца, но все же мы набрали очень много опыта, обновили железо до самых последних компонентов, перестроили всю свою экосистему и готовы делать наикрутейшие штуковины, не опасаясь везти за собой свое наследство!

Будем на связи, не теряйтесь!

chelog
Основатель и главный разработчик