RE:NODE

Как выбрать хостинг: на что смотреть, зная его изнутри

Автор Команда RE:NODE
17 мин чтения


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

Мы ведём платформу RE:NODE - оркестрацию, которая выдаёт, масштабирует и восстанавливает серверы клиентов, игровую, VDS, web-, database- и storage-линейки, а также мониторинг и автоматизацию бэкапов вокруг них. Это даёт неприятный взгляд на то, как хостинг продаётся и как он работает на самом деле. Большая часть написанного ниже известна операторам, а на странице тарифа не указана. Это относится к любому хосту, включая нас, и кое-что намеренно нелестно для небольших провайдеров вроде нашего.

Есть и более короткая версия в виде чек-листа: как выбрать хостинг игровых серверов. Здесь - рассуждения, которые за ней стоят.

Почему спецификация лжёт умолчанием#

Страница тарифа написана для сравнения, поэтому в ней перечислено то, что легко сравнивается: гигабайты RAM, гигабайты диска, число ядер, цена. Ничто из этого не ложь. Проблема в том, что в ней отсутствует, и изнутри могу сказать: умолчания не случайны.

RAM легко продавать и легко честно отдавать, потому что память либо есть, либо нет. С размером диска то же самое. Скользко становится с ядрами: "2 vCPU" не говорит ничего о том, какой это CPU, насколько он стар, как быстро работает один поток и сколько других клиентов стоит в очереди на тех же физических ядрах. Ещё скользче с трафиком. А то, что определяет, останетесь ли вы, - бэкапы, доступ, поддержка, что происходит в три часа ночи - на странице тарифа почти не встречается.

Поэтому итоговое правило простое: цифры на странице - нижняя граница того, что нужно знать, а не ответ. Всё ниже - о вопросах, на которые эти цифры не отвечают.

CPU: поколение и скорость одного потока важнее числа ядер#

Это самая непонятая вещь в хостинге, и для игровых серверов она важнее всего.

Большинство игровых серверов выполняют главную работу в одном потоке. Тик симуляции - движение сущностей, игровая логика, решение о том, что каждый игрок увидит дальше - идёт в главном потоке, а остальные ядра помогают с сетью, загрузкой чанков, сохранением и подобным. Minecraft - известный пример, но шаблон широк: когда сервер лагает, обычно одно ядро загружено на 100%, а остальные простаивают. Это подробно разобрано в статье как читать загрузку CPU игрового сервера, а требования игровых серверов к CPU разбирают игру за игрой.

Что это значит для выбора хоста:

  • Более новый CPU с высокой частотой обычно побеждает более старый с большим числом ядер. Производительность на такт между поколениями сильно выросла, поэтому "3,0 ГГц" на CPU многолетней давности и "3,0 ГГц" на свежем - разная скорость.
  • Многоядерные серверные чипы отлично справляются с множеством параллельных дел и нередко посредственны в одном быстром деле. Это правильный компромисс для хоста, упаковывающего веб-приложения. Для одного загруженного игрового сервера это неправильный компромисс.
  • "vCPU" обычно означает один аппаратный поток, а не одно физическое ядро. Два vCPU могут быть двумя hyper-threads одного ядра, а это меньше двух полноценных ядер, когда заняты оба.

Вопрос, который стоит задать любому хосту: "на каком CPU работает этот тариф?" Хороший ответ называет модель. Приемлемый говорит: "зависит от ноды, вот модели, которые мы используем". Уклончивый - "процессоры корпоративного класса" - значит, что они предпочли бы, чтобы вы не знали. Справедливости ради, не все хосты могут обещать модель, потому что ноды заменяются. Но они могут сказать, что стоит в парке сегодня.

В RE:NODE линейка VDS называет свой CPU (Intel i9-9900K), а в общих линейках показатель CPU в тарифе - процент от одного ядра, применяемый как жёсткий лимит: 250 означает 2,5 vCPU ограниченной доли, а не 2,5 ядра, за которые можно выходить в burst. Сервер, упёршийся в лимит, работает медленно, но его за это не приостанавливают. Модель для общих нод мы не публикуем, так что если это важно, спросите и нас.

Как проверить, что вы получили

На VDS есть shell, так что посмотрите:

bash
$ lscpu | grep -E 'Model name|^CPU\(s\)|Thread'$ sysbench cpu --threads=1 --time=30 run$ vmstat 1 10

Первая строка показывает модель и число потоков. Запуск sysbench с одним потоком даёт число событий в секунду, которое можно сравнивать между хостами: запускайте на каждом кандидате одинаково. В vmstat смотрите столбец st: steal time - это CPU, который ваша виртуальная машина хотела, а гипервизор отдал другому. Несколько процентов время от времени - норма на общем железе. Steal, держащийся высоко при низкой собственной нагрузке, означает переполненный хост, а что с этим можно и нельзя сделать, объясняет статья общий CPU и шумные соседи.

В игровой панели shell обычно нет, но /proc/cpuinfo хоста нередко виден из контейнера, а график CPU в консоли относительно лимита показывает, упираетесь ли вы в купленную долю.

Что значит "безлимит"#

С точки зрения оператора ничего безлимитного нет. У каждого ресурса, с которым мы работаем, есть физический потолок: пропускная способность канала, скорость диска, inode, электропитание. Когда в тарифе написано "безлимит", это значит одно из трёх, и нужно знать, какое именно.

На страницеЧто это обычно значитО чём спросить
Безлимитный трафикНе тарифицируется по ГБ, действует fair useЧто происходит на границе fair use?
Безлимитные слотыЧисло слотов не ограничено программноСколько вытянут CPU и RAM?
Безлимитный диск или сайтыОграничено inode, I/O или числом файловГде предел по inode или I/O?

"Unmetered" - честное слово для трафика: вас не тарифицируют за гигабайт. Это не обещание, что вы можете месяц насыщать общий канал. У каждого хоста с unmetered-тарифом есть точка, в которой чей-то трафик начинает вредить другим клиентам, и единственный настоящий вопрос - говорят ли вам, где она и что происходит при её достижении: ограничение скорости, письмо, приостановка. Наша формулировка: unmetered значит "не тарифицируется по гигабайту", а не "разрешение насыщать общий канал", и что это означает на практике, разобрано в статье трафик и fair use.

"Безлимитные слоты игроков" на игровом сервере раздражают больше всего, потому что формально это правда, а практически бессмысленно. Сколько игроков поместится, определяют игра, CPU и RAM, а не число в панели. Хост, рекламирующий безлимитные слоты на небольшом тарифе, продаёт число, которым нельзя воспользоваться.

Наш тест: если в тарифе написано "безлимит", мы ищем в условиях использования "fair use", "acceptable use", "excessive" и "inode". Что бы там ни говорилось, это и есть настоящий тариф. Если в условиях нет ничего, лимит всё равно существует - просто его применяет тот, кто сегодня на смене, по своему усмотрению и без предупреждения.

Как читать страницу статуса#

У каждого хоста теперь есть страница статуса, и почти всегда она зелёная. Одно это говорит очень мало. Вот на что смотрим мы.

  1. Кто измеряет. Страница статуса, питаемая автоматическими проверками из-за пределов сети хоста, ценнее той, которую правят вручную задним числом. Страница с ручной правкой зелёная, пока человек не решит, что она не должна быть зелёной.
  2. Насколько она детальна. Один баннер "Все системы работают" на всю компанию скрывает то, что ваша нода может лежать, пока все остальные работают. Компоненты по нодам или сервисам честнее.
  3. История. Прокрутите назад. Страница без инцидентов за год либо описывает удивительно удачную эксплуатацию, либо не обновляется. У настоящей инфраструктуры бывают плохие дни, и честные страницы их показывают.
  4. Что написано в заметках об инциденте. "Мы разбираемся", а затем "решено" без чего-либо между ними ничему не учит. Заметки, в которых сказано, что сломалось, что затронуто и что изменилось потом, показывают, как думает команда.
  5. Где она размещена. Если страница статуса живёт на той же инфраструктуре, о которой сообщает, она падает именно тогда, когда нужна.

О процентах доступности: они осмысленны только с указанием интервала измерения и определения рядом. 99,9% за 30-дневный месяц допускает примерно 43 минуты простоя; 99,99% - около четырёх. Если проверка идёт раз в пять минут, всё короче может остаться незамеченным. А SLA обычно означает частичный кредит на счёт, а не возврат вашего простоя; прежде чем впечатляться числом, прочтите, какова компенсация.

Для справки: страница статуса RE:NODE замеряет доступность каждые пять минут, и мы не публикуем ни процент доступности, ни SLA. Лучше сказать это прямо, чем печатать цифру. Взвешивайте это так же, как для любого хоста.

Бэкапы и кто их восстанавливает#

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

Хост может подразумевать под "бэкапами" две разные вещи:

  • Бэкапы платформы - хост копирует свои диски, чтобы восстановить машину при сбое железа. Обычно вы их не видите, не выбираете, что в них входит, и не можете сами восстановить из них один файл. Они защищают способность хоста пересобрать систему, а не вашу способность отменить ошибку.
  • Бэкапы клиента - копии вашего сервера, которые вы можете создавать, планировать, восстанавливать и скачивать.

Нужно знать, какой из них входит в тариф, и вам нужен второй. Затем нужны ответы на эти вопросы:

  • Можно ли восстановить самому или нужно подать тикет и ждать?
  • Можно ли скачать, чтобы копия существовала полностью вне этого хоста?
  • Где он хранится? Бэкап на том же диске, что и защищаемые данные, - удобство, а не бэкап.
  • Что происходит с бэкапами, когда я отменяю тариф или удаляю сервер?
  • Восстанавливал ли кто-нибудь его недавно?

Последний вопрос важнее всего. Как гласит наш девиз, бэкап, который никто не восстанавливал, - гипотеза. Мнение о проверке восстановления до того, как оно понадобится, у нас твёрдое, оно изложено в проверка восстановления до того, как оно понадобится и бэкапы, которые действительно восстанавливаются.

В RE:NODE у каждого тарифа есть слоты бэкапов: по требованию или по расписанию, восстановление кнопкой, скачивание, блокировка от ротации, хранение вне машины, которую они защищают. Удаление сервера удаляет его бэкапы, включая заблокированные - именно такую деталь стоит искать у любого хоста, потому что люди узнают её не лучшим способом. Отдельно платформа делает ночные бэкапы, копируемые на отдельное железо. Ни то, ни другое не заменяет копию, которую вы храните сами, и то же самое можно сказать о бэкапах любого хоста, включая бэкапы RE:NODE.

Доступ к панели, файлам и консоли#

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

Минимум, приемлемый для нас для игрового сервера или хостинга приложений на панели:

  • Живая консоль с сырым нефильтрованным выводом и командной строкой. Если хост показывает только причёсанный лог или значок "сервер работает", вы сами ничего не диагностируете.
  • Файловый менеджер и SFTP. Файловый менеджер - для быстрых правок; SFTP - способ перенести целый мир, сборку модов или сайт туда и обратно. Отсутствие SFTP - тревожный признак само по себе.
  • Команда запуска или хотя бы её переменные. Рано или поздно понадобится флаг запуска, опция JVM или другая ветка.
  • Графики ресурсов относительно лимитов, чтобы видеть, упираетесь ли вы в долю CPU или в потолок памяти.
  • Управление тем, кто ещё получает доступ, с правами уже, чем "всё".

Для VDS минимум - root, способ переустановки и какая-то внеполосная консоль (VNC или serial) на случай, когда вы заперли себя правилом firewall. Спросите, что вы получите, если SSH перестанет отвечать. "Откройте тикет" - слабый ответ.

Здесь прячется и вопрос выхода. Можно ли забрать все свои данные в обычном формате без помощи хоста? Если да, плохой хост стоит вам выходных. Если нет, он стоит столько, сколько он решит.

Что панель RE:NODE даёт каждому тарифу без разделения на уровни: нефильтрованную живую консоль с командной строкой, файловый менеджер, SFTP с учётными данными на каждый сервер, а не на аккаунт, вкладку Startup для игровых и переменных окружения, графики CPU, памяти и диска относительно лимитов и субпользователей с детальными правами. Она построена на Pterodactyl и Wings с нашей панелью поверх, так что кто знаком с Pterodactyl, увидит знакомую форму - что такое Pterodactyl рассказывает об этом.

Поддержка, до которой можно достучаться#

Чего со страницы тарифа не узнать никак - какова поддержка, а именно это решает, останетесь ли вы. Хостинг - бизнес поддержки с прилагающимися серверами.

На что стоит смотреть:

  • Больше одного канала и хотя бы один, оставляющий письменный след. Система тикетов, где вложения остаются приватными, лучше публичного канала в Discord для всего, что касается доступов или логов.
  • Чёткое заявление о том, когда люди действительно на связи. "Поддержка 24/7" у небольшого хоста часто означает "кто-то получает уведомление". Это не нечестно, но это не то же самое, что человек на смене. Лучше бы хост называл свои реальные часы.
  • Ответы, написанные тем, кто прочитал вопрос. Вставленная ссылка на базу знаний в ответ на конкретный вопрос - признак команды, сортирующей по ключевым словам.
  • Умеет ли поддержка делать, а не только передавать. Может ли отвечающий восстановить бэкап, открыть порт, перенести сервер? Или он заводит внутренний тикет и ждёт инженера?

Вот неудобное наблюдение со стороны оператора: небольшие хосты часто лучше в поддержке, чем крупные, потому что отвечающий нередко сам писал код, и хуже в покрытии, потому что их меньше. У крупных обычно наоборот. Решите, что вам нужно. Хобби-серверу можно подождать до утра; платному сообществу или бизнес-приложению, возможно, нельзя.

Поддержка RE:NODE - это тикет из панели (он доходит до всех сотрудников, вложения приватны), Discord и email. Мы не заявляем круглосуточного дежурства, и хосту нашего размера, который его заявляет, мы бы не доверяли.

Проверка хоста в первую неделю#

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

КогдаПроверкаКак выглядит успех
День 1Маршрут от ваших игроковНизкий стабильный ping и мало потерь в mtr
День 1Бенчмарк CPU и дискаЦифры близки к другим хостам того же уровня
Дни 1-7Нагрузка в ваши часы пикНет steal и замедления в загруженное время
День 2Вопрос в поддержкуКонкретный ответ от человека
День 3Бэкап и восстановлениеВы восстанавливаете и скачиваете его сами
День 5Экспорт данныхВсё выгружается по SFTP или дампом

Проверка маршрута важна в первую очередь, потому что никакой CPU не исправит плохой путь между машиной и вашими игроками. Запускайте её оттуда, где находятся ваши игроки, а не там, где находитесь вы:

bash
$ mtr -rwc 100 203.0.113.10$ fio --name=rand --rw=randread --bs=4k --size=1G --iodepth=32 \    --ioengine=libaio --direct=1 --runtime=30 --time_based

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

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

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

Тревожные признаки#

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

  • Нигде нет модели CPU, а на вопрос о ней уходят от ответа.
  • "Безлимит" во всём, и нигде нет раздела fair use.
  • Страница статуса, на которой никогда не было инцидентов.
  • Заявление о защите от DDoS с большим числом и без объяснения, что фильтруется. Настоящая защита отсекает очевидные объёмные атаки; атаки, похожие на настоящих игроков, отсекать гораздо труднее, и тот, кто обещает остановить всё, продаёт фразу, а не услугу. Подробнее - в статье DDoS-атаки на игровые серверы.
  • Нет SFTP, нет сырой консоли или бэкапы восстанавливаются только через тикет.
  • Нет способа экспортировать данные или экспорт заперт за отменой тарифа.
  • Пожизненные тарифы или цены настолько ниже остальных, что арифметика не сходится. Железо, электричество и трафик стоят одинаково для всех на данном рынке; тариф ниже этого кем-то субсидируется - переподпиской, коротким сроком жизни или обоими.
  • Условия, позволяющие хосту приостановить вас за использование оплаченных ресурсов. Работа на 100% вашей доли CPU должна делать сервер медленным, а не удалять его.
  • Давление, чтобы вы купили длинный срок вперёд, прежде чем что-либо проверили.

Ничто из этого не доказывает, что хост плох. Несколько признаков вместе - обычно доказывают.

Компромиссы, которые мы сделаем снова#

Несколько мнений, сформулированных прямо, на основе работы такой платформы.

Мы выберем хост, который признаёт свои пределы, а не скрывает их. У каждого хоста есть потолок по трафику, график поддержки с пробелами, расположение, подходящее одним игрокам и неподходящее другим. Те, кто записывает это, - те, под кого можно планировать. RE:NODE работает в одной локации, Германии, на оборудовании, которым мы управляем: это правильный ответ для игроков в Европе и неправильный для далёких, и лучше, чтобы вы знали это до оплаты.

Мы выберем меньше функций и больше доступа. Панель с честной консолью, SFTP и настоящими бэкапами лучше панели со сотней кнопок в один клик и без shell.

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

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

Если хочется взгляда шире - какой сервер вообще арендовать, начните со статьи VPS, VDS и выделенный сервер.

FAQ#

Всегда ли большее число ядер лучше для игрового сервера?

Нет. Большинство игровых серверов упираются в скорость одного ядра, потому что главный цикл симуляции идёт в одном потоке. Тариф с меньшим числом ядер на более новом CPU с высокой частотой обычно лучше потянет загруженный игровой сервер, чем больше ядер на старом или многоядерном чипе. Дополнительные ядра помогают с модами, плагинами, генерацией чанков и запуском нескольких серверов рядом.

В чём разница между unmetered и безлимитным трафиком?

Unmetered значит, что вас не тарифицируют за переданный гигабайт. "Безлимитный" - маркетинговое слово для того же, и его нельзя читать как "потолка нет вообще": у каждого хоста есть общий канал и граница fair use. Полезный вопрос - что делает хост, когда вы до неё доходите: ограничивает скорость, предупреждает или приостанавливает.

Стоит ли доверять гарантии доступности 99,9%?

Считайте это заявлением о компенсации, а не о надёжности. Это допускает около 43 минут простоя за 30-дневный месяц, интервал измерения определяет, что считается, а компенсация обычно - частичный кредит. Страница статуса с реальной историей инцидентов говорит о работе хоста больше, чем процент.

Достаточно ли одних бэкапов хоста?

Это хорошая первая линия и не больше. Убедитесь, что вы можете восстановить и скачать их сами, и храните хотя бы одну свежую копию где-нибудь ещё - на своей машине или в отдельном объектном хранилище. Если проблема в самом аккаунте у хоста, бэкапы, хранящиеся у него, не помогут.

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

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

Небольшой хост рискованнее крупного?

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