Хостинг
Выделенный сервер под Lineage 2
Домашний компьютер годится ровно до того дня, когда на сервер зайдёт десяток незнакомых людей. Дальше начинается хостинг, и выбирают его не по цене за гигабайт памяти.
VPS или физическая машина
Разница для игрового сервера не в мощности, а в том, делите вы её с кем-то или нет.
- VPS. Дешевле, поднимается за минуты, ресурсы делятся с соседями. Для теста и для сервера на два десятка человек — нормально. Главная засада не в процессоре, а в диске: на переподписанном узле база начинает отвечать медленно в самый неподходящий момент, и выглядит это как лаги сервера.
- Физическая машина. Дороже и дольше оформляется, но ресурсы ваши целиком. Имеет смысл с того момента, когда онлайн стабильно держится, а не когда хочется.
Порядок действий, который экономит деньги: поднять всё локально, довести до работающего состояния, замерить расход памяти на пустом мире — и только потом подбирать тариф под измеренное. Запуск на Ubuntu.
На что смотреть в характеристиках
- Частота ядра, а не их количество. Значительная часть игровой логики обрабатывается последовательно, и два быстрых ядра здесь полезнее восьми медленных.
- Память. Мир и геодата занимают её ещё до прихода первого игрока, так что минимальную планку задаёт не онлайн, а хроника и сборка. Про геодату отдельно.
- Диск — только SSD. Сервер пишет в базу постоянно: инвентарь, персонажи, клановые данные.
- Канал и задержка. Трафик у Lineage 2 мелкий и частый, к потерям пакетов чувствительный. Площадка в той же стране, что и основная аудитория, даёт больше, чем лишние гигабайты памяти.
- Защита от DDoS. Не опция, а параметр выбора — см. ниже.
Про DDoS без драматизации
На частных серверах Lineage 2 это бытовая проблема, а не редкость. Причина простая: сервер конкурирует с другими за одну и ту же небольшую аудиторию, и уронить соседа в вечер открытия дешевле, чем переманить его игроков.
Что из этого следует практически:
- Фильтрация нужна на уровне площадки. Файрвол на самой машине останавливает мусор уже после того, как он занял канал, — то есть не останавливает.
- Игровые порты закрываются не фильтром, а характером трафика: это постоянные соединения, а не запросы. Площадка должна уметь защищать именно их, а не только веб.
- Адрес сервера, на который ходят игроки, и адрес сайта лучше разводить. Иначе по сайту находят машину и бьют по ней.
- Бэкап базы в другом месте, а не на той же машине. Под нагрузкой разбираться некогда.
Что настроить до первого игрока
- Вход только по ключу, пароли выключить. Публичный адрес перебирают автоматически, и начинается это в первые же часы.
- Отдельный пользователь под игровой сервер. Не root: процесс смотрит в интернет.
- Файрвол с закрытым всем, кроме нужного. Порты
2106и7777, порт для вашего входа, веб — если сайт на той же машине. База наружу не смотрит никогда. - Автозапуск и перезапуск после падения. Через systemd, а не
screen. Почему именно так. - Бэкап базы по расписанию и на другую машину. И проверенное восстановление — бэкап, который ни разу не разворачивали, бэкапом не является.
- Мониторинг памяти и диска. Игровой сервер умирает от нехватки памяти тихо, без предупреждения в чате.
- Синхронизация времени. От неё зависит всё, что идёт по расписанию: осады, респаун боссов, события.
Два сервера на одной машине
Иногда хочется держать рядом боевой и тестовый сервер. Технически это делается без проблем — два набора процессов, два набора схем в базе, разные порты. Два условия, о которых забывают:
- Память делится между ними по-настоящему. Тестовый сервер с полной геодатой отъедает столько же, сколько боевой, даже если на нём никого нет.
- Схемы в базе должны быть разными и у пользователей должны быть права только на свои. Иначе однажды скрипт установки тестового сервера снесёт таблицы боевого, и это не гипотетический сценарий.