Новые тарифы VPS с AntiDDoS для игровых серверов


Всем привет!

Мы подготовили стильную, модную и новую линейку виртуальных серверов — PL.
Данная тарифная линейка идеально подойдет для игровых проектов и не только, ведь местоположение серверов — Польша, а значит пинг по всему СНГ гарантирован минимальный.
Краткий экскурс по тарифной линейке PL:
— Локация: Польша
— Расширенный AntiDDoS Pro
— Быстрые NVMe диски
— Цена в два раза ниже, чем в других локациях
— Возможна посуточная оплата

Тарифы уже доступны в нашем биллинге: https://my.msk.host

Как работает удаленная защита?



К сожалению, сейчас Anti-DDoS защита от OVH не справляется с новыми атаками L4-L7.

Например внутри сети OVH VAC не работает, и любой может положить сервер с 1 Гбит сетью двумя серверам по 1 Гбит. От такого спастись почти невозможно — атака L4, без payload. А создать такую атаку может любой школьник, для такой атаки хватит и hping3.

Или как многие знают OVH VAC не фильтрует L7 атаки, поэтому ваш сервер смогут положить банально мощными игровыми ботами, пример такой атаки на нашего клиента с сервером Minecraft —

80 тысяч ботов в секунду, и это с срезанным 70% трафика! Сервер стоял у нас, понятное дело он не заметил такой атаки, но для обычного дедика на OVH хватает 10-20 тысяч ботов в секунду, чтобы он перестал принимать новые соединения.

Пример атаки на мощный сервер с процессором Intel Xeon W-2145, 10гбит сетью:

Включенный VAC, жесткие лимиты в Iptables, настроенный sysclt не помогли, сервер упал.
Ещё OVH пропускают до 20 SYN пакетов в секунду с одного айпи, и можно положить сервер с небольшого ботнета в ~8000 устройств, банально SYN атакой.

Это только примеры некоторых атак, которые применяют, на самом деле их намного больше, поэтому мы создали WAF.OVH — не просто мощные VPS-сервера, но и отличная защита от DDoS атак.

Как подключить защиту?

У нас есть разные тарифы для удаленной защиты TCP сервисов, начиная с 399 рублей в месяц, почти по цене IP! За такую сумму вы получаете — 50мбит/с трафик, 10Гбит/с порт, и отличную защиту.

Сейчас сервер защиты располагается в Германии, OVH, поэтому при использовании туннеля с Hetzner можно не только хорошо сэкономить, но и получить хорошую защиту и низкий пинг. Надбавка пинга при работе туннеля с серверами во Франции, OVH, обычно не более 6ms. Но в скором времени будут добавлены сервера и во Франции.

При покупке вам нужно настроить некоторые параметры —
Backend IP — Айпи вашего сервера, который нужно защитить. Если вас уже атакуют по этому айпи рекомендуем его сменить, или написать нам, чтобы мы помогли вам «правильно» закрывать все ненужные подключения.

Необходимые порты — порты которые нужно пробросить через туннель. Рекомендуем пробрасывать только порты вашего сервиса, например для Minecraft — 25565, для сайта — 80, 443. По SSH подключатся лучше по реальному айпи вашего сервера.

Тип туннеля — на выбор есть 3 типа туннелей GRE / IPIP / L7 (посредствам nginx tcp proxy, без реального IP клиентов). Для OVH нужно использовать GRE. Для всех других, например Hetzner лучше использовать IPIP.

После настройки заказ можно оплачивать, и ждать получения скрипта туннеля по email, обычно это занимает ~30 минут.

Загружаем файл tunnel.sh, переносим на дедик, устанавливаем права 777

chmod -R 777 tunnel.sh

В самом фале меняем некоторые настройки


IFACE — замените название сетевого интерфейса, на название вашего главного сетевого интерфейса (обычно узнать можно с помощью команды ifconfig).

Другие настройки не трогаем, и сохраняем файл.

Далее просто запускаем его ./tunnel.sh start
(Чтобы остановить пишем ./tunnel.sh stop)

Теперь можно менять айпи вашего BungeeCord, или сервиса который используете, на локальный айпи туннеля, который указан в L_OUT


bind_local_address тоже ставим на false, чтобы ваш трафик к локальным серверам не ходил через туннель, перезапускаем сервис.

Последнее — это сменить в вашем домене записи, на защищенный айпи туннеля, и можно не бояться DDoS атак :)

Наш сайт — https://waf.ovh/
Удаленная защита — https://waf.ovh/remote-protection.php
Написать нам — https://vk.me/wafovh

В скором времени мы планируем запустить web-защиту, и CDN, следите за новостями в группе — https://vk.com/wafovh

Развертывание игровых серверов с Agones на OVH Managed Kubernetes

Одним из ключевых преимуществ использования Kubernetes является огромная экосистема вокруг него. От Rancher до Istio, от Rook до Fission, от gVisor до KubeDB, экосистема Kubernetes богата, динамична и постоянно растет. Мы подошли к тому, что для большинства потребностей в развертывании мы можем сказать, что для этого существует проект с открытым исходным кодом на основе K8s.

Одним из последних дополнений к этой экосистеме является проект Agones, многопользовательский, выделенный хостинг на игровом сервере с открытым исходным кодом, построенный на Kubernetes, разработанный Google в сотрудничестве с Ubisoft. Проект был анонсирован в марте, и уже наделал немало шума…

В OVH Platform Team мы являемся поклонниками онлайн-игр и Kubernetes, поэтому мы сказали себе, что нам нужно протестировать Agones. И какой лучший способ проверить это, чем развернуть его в нашей службе OVH Managed Kubernetes, установить кластер игровых серверов Xonotic и сыграть в старом классе с коллегами?



Почему агон?
Agones (происходит от греческого слова agōn, конкурсы, проводимые во время публичных фестивалей или, в более широком смысле, «соревнование» или «соревнование в играх»), стремится заменить обычные проприетарные решения для развертывания, масштабирования и управления игровыми серверами.
www.merriam-webster.com/dictionary/agones
kubernetes.io/docs/concepts/api-extension/custom-resources/#custom-controllers
kubernetes.io/docs/concepts/api-extension/custom-resources/#customresourcedefinitions

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

Подождите, о каких игровых серверах вы говорите?
Итак, основное внимание Agones уделяют многопользовательским онлайн-играм, таким как FPS и MOBA, быстрым играм, требующим выделенных игровых серверов с малой задержкой, которые синхронизируют состояние игры между игроками и служат источником правды в игровых ситуациях.

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

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

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



Agones и его пользовательский контроллер и пользовательское определение ресурса заменяет сложную инфраструктуру управления кластером стандартизированными инструментами и API на основе Kubernetes. Службы сватов взаимодействуют с этими API-интерфейсами для создания новых модулей игровых серверов и передачи их IP-адресов и портов заинтересованным игрокам.



Вишня на торте
Использование Kubernetes для этих задач также дает приятный дополнительный бонус, например, возможность развертывать полную игровую инфраструктуру в среде разработчика (или даже в мини-кубе) или легко клонировать ее для развертывания в новом центре обработки данных или облачной области, но также предлагая целую платформу для размещения всех дополнительных услуг, необходимых для создания игры: управление учетными записями, списки лидеров, инвентарь
github.com/kubernetes/minikube

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

Развертывание Agones на управляемых OVH Kubernetes
Есть несколько способов установить Agones в кластер Kubernetes. Для нашего теста мы выбрали самый простой: установка с помощью Helm.
helm.sh/

Включение создания ресурсов RBAC
Первым шагом для установки Agones является настройка учетной записи службы с достаточными разрешениями для создания некоторых специальных типов ресурсов RBAC.
kubectl create clusterrolebinding cluster-admin-binding \
  --clusterrole=cluster-admin --serviceaccount=kube-system:default

Теперь у нас есть Cluster Role Binding, необходимая для установки.
kubernetes.io/docs/reference/access-authn-authz/rbac/#rolebinding-and-clusterrolebinding

Установка диаграммы Agones
Теперь давайте продолжим, добавив хранилище Agones в список хранилищ Helm.
helm repo add agones https://agones.dev/chart/stable

И затем установка стабильной диаграммы Agones:
helm install --name my-agones --namespace agones-system agones/agones

agones.dev/site/docs/installation/helm/

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

Подтверждение Agones началось успешно
Чтобы убедиться, что Agones работает в нашем кластере Kubernetes, мы можем взглянуть на модули в пространстве имен agones-system:
kubectl get --namespace agones-system pods

Если все в порядке, вы должны увидеть модуль контроллера agones со статусом Running:
$ kubectl get --namespace agones-system pods
NAME                                 READY   STATUS    RESTARTS   AGE
agones-controller-5f766fc567-xf4vv   1/1     Running   0          5d15h
agones-ping-889c5954d-6kfj4          1/1     Running   0          5d15h
agones-ping-889c5954d-mtp4g          1/1     Running   0          5d15h


Вы также можете увидеть более подробную информацию, используя:
kubectl describe --namespace agones-system pods


Глядя на описание agones-контроллера, вы должны увидеть что-то вроде:
$ kubectl describe --namespace agones-system pods
Name:               agones-controller-5f766fc567-xf4vv
Namespace:          agones-system
[...]
Conditions:
  Type              Status
  Initialized       True 
  Ready             True 
  ContainersReady   True 
  PodScheduled      True

Где все Условия должны иметь статус True.

Развертывание игрового сервера
Мир Agones Hello довольно скучный, простой эхо-сервер UDP, поэтому мы решили пропустить его и перейти непосредственно к чему-то более интересному: игровому серверу Xonotic.
github.com/GoogleCloudPlatform/agones/tree/release-0.9.0/examples/simple-udp
github.com/GoogleCloudPlatform/agones/blob/release-0.9.0/examples/xonotic
www.xonotic.org/

Xonotic — это многопользовательский FPS с открытым исходным кодом, довольно неплохой, с множеством интересных игровых режимов, карт, оружия и опций настройки.

Развернуть игровой сервер Xonotic поверх Agones довольно просто:
kubectl create -f https://raw.githubusercontent.com/GoogleCloudPlatform/agones/release-0.9.0/examples/xonotic/gameserver.yaml


Развертывание игрового сервера может занять несколько минут, поэтому нам нужно подождать, пока его состояние не станет «Готов», прежде чем использовать его. Мы можем получить статус с:
kubectl get gameserver


Мы ждем, пока извлечение не даст статус Ready на нашем игровом сервере:
$ kubectl get gameserver
NAME      STATE   ADDRESS         PORT   NODE       AGE
xonotic   Ready   51.83.xxx.yyy   7094   node-zzz   5d

Когда игровой сервер готов, мы также получаем адрес и порт, который мы должны использовать для подключения к нашей игре Deathmatch (в моем примере, 51.83.xxx.yyy: 7094).

Время фрагмента
Теперь, когда у нас есть сервер, давайте проверим его!

Мы загрузили клиент Xonotic для наших компьютеров (он работает на Windows, Linux и MacOS, так что оправданий нет) и запустили его:


Затем мы идем в многопользовательское меню и вводим адрес и порт нашего игрового сервера:


И мы готовы играть!


А на стороне сервера?
Со стороны сервера мы можем следить за тем, как идут дела на нашем игровом сервере, используя логи kubectl. Давайте начнем с поиска модуля, на котором запущена игра:
kubectl get pods


Мы видим, что наш игровой сервер работает в модуле под названием xonotic:
$ kubectl get pods 
NAME      READY   STATUS    RESTARTS   AGE
xonotic   2/2     Running   0          5d15h


Затем мы можем использовать логи kubectl. В модуле есть два контейнера, основной ксонотический и колонтитул Agones, поэтому мы должны указать, что нам нужны журналы ксонотического контейнера:
$ kubectl logs xonotic
Error from server (BadRequest): a container name must be specified for pod xonotic, choose one of: [xonotic agones-gameserver-sidecar]
$ kubectl logs xonotic xonotic
>>> Connecting to Agones with the SDK
>>> Starting health checking
>>> Starting wrapper for Xonotic!
>>> Path to Xonotic server script: /home/xonotic/Xonotic/server_linux.sh 
Game is Xonotic using base gamedir data
gamename for server filtering: Xonotic
Xonotic Linux 22:03:50 Mar 31 2017 - release
Current nice level is below the soft limit - cannot use niceness
Skeletal animation uses SSE code path
execing quake.rc
[...]
Authenticated connection to 109.190.xxx.yyy:42475 has been established: client is v6xt9/GlzxBH+xViJCiSf4E/SCn3Kx47aY3EJ+HOmZo=@Xon//Ks, I am /EpGZ8F@~Xon//Ks
LostInBrittany is connecting...
url_fclose: failure in crypto_uri_postbuf
Receiving player stats failed: -1
LostInBrittany connected
LostInBrittany connected
LostInBrittany is now spectating
[BOT]Eureka connected
[BOT]Hellfire connected
[BOT]Lion connected
[BOT]Scorcher connected
unconnected changed name to [BOT]Eureka
unconnected changed name to [BOT]Hellfire
unconnected changed name to [BOT]Lion
unconnected changed name to [BOT]Scorcher
[BOT]Scorcher picked up Strength
[BOT]Scorcher drew first blood! 
[BOT]Hellfire was gunned down by [BOT]Scorcher's Shotgun
[BOT]Scorcher slapped [BOT]Lion around a bit with a large Shotgun
[BOT]Scorcher was gunned down by [BOT]Eureka's Shotgun, ending their 2 frag spree
[BOT]Scorcher slapped [BOT]Lion around a bit with a large Shotgun
[BOT]Scorcher was shot to death by [BOT]Eureka's Blaster
[BOT]Hellfire slapped [BOT]Eureka around a bit with a large Shotgun, ending their 2 frag spree
[BOT]Eureka slapped [BOT]Scorcher around a bit with a large Shotgun
[BOT]Eureka was gunned down by [BOT]Hellfire's Shotgun
[BOT]Hellfire was shot to death by [BOT]Lion's Blaster, ending their 2 frag spree
[BOT]Scorcher was cooked by [BOT]Lion
[BOT]Eureka turned into hot slag
[...]


Добавьте друзей
Следующий шаг в основном приятен: попросить коллег подключиться к серверу и провести настоящий Deathmatch, как в Quake 2 раза.

И сейчас?
У нас есть работающий игровой сервер, но мы едва раскрыли возможности Agones: развертывание флота (набор теплых GameServer, доступных для распределения), тестирование FleetAutoscaler (для автоматического увеличения и уменьшения флота в ответ на спрос), делая некоторые фиктивные услуги распределителя. В будущих публикациях в блоге мы углубимся в это и рассмотрим эти возможности.
agones.dev/site/docs/tutorials/allocator-service-go/
agones.dev/site/docs/reference/fleet/
agones.dev/site/docs/reference/fleetautoscaler/

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

Update GAME 2019

www.ovh.ie/dedicated_servers/game/

Во первых снизили цену.
Во вторых изменили диски которые идут по умолчанию.
Сначала дополнительные диски были как дополнение к 960 SSD
А теперь появилось и по умолчанию к 480 SSD
  • i7-7700k [4ядра/8потоков] / 32 GB DDR4 2400MHz / 2x 480 SSD + 1x 4 ТБ sata / 250 500 Mbps / Anti-DDoS-GAME
  • i7-7700k [4ядра/8потоков] / 64 GB DDR4 2400MHz / 2x 450 NVMe + 1x 4 ТБ sata / 250 500 Mbps / Anti-DDoS-GAME
  • i7-7700k [4ядра/8потоков] Overclocke / 64 GB DDR4 2400MHz / 2x 450 NVMe + 1x 4 ТБ sata / 250 500 Mbps / Anti-DDoS-GAME
  • i7-7700k [4ядра/8потоков] / 64 GB DDR4 2400MHz / 2x 960 NVMe + 1x 4 ТБ sata / 250 500 Mbps / Anti-DDoS-GAME
  • i7-7700k [4ядра/8потоков] Overclocke / 64 GB DDR4 2400MHz / 2x 960 NVMe + 1x 4 ТБ sata / 250 500 Mbps / Anti-DDoS-GAME

Плюс в новых ДЦ, Польша/Германия/Великобритания цена еще дешевле чем Франция/Канада.

//
топик написан редакцией, у ОВХ просто скриншот был, не понятно для новичков было что именно изменилось

New GAME servers: 5 GHz Turbo mode + Windows 2016


OVH is expanding its range of game servers to enhance your gaming experience. Have you seen our new GAME servers yet?

Intel i7 7700K
  • MC-64 servers incorporate the new Intel i7-7700k processor powered by Kaby Lake architecture
  • MC-64-OC servers have overclocked CPU with a frequency of 4.7 GHz, reaching 5 GHz in Turbo mode!
  • MC-64-OC (and MC-64) servers now support Windows 2016

www.ovh.ie/dedicated_servers/game/

New options: vRack & NVMe
Enterprise range — now available with the vRack
In addition to the Intel E3 v6 «Kaby Lake» processors, the Enterprise range now features the vRack, notably on SP-32 and SP-64 servers!
Offered by default with a reduced bandwidth to enable you to configure a private network between your servers, you can also order a 1 Gbps guaranteed bandwidth option.
www.ovh.ie/dedicated_servers/all_servers.xml
NVMe Disks
Enjoy the latest generation of NVMe disks on a selection of servers, in a 2 x 450 GB NVMe configuration, from €5.00 ex. VAT/month.
www.ovh.ie/dedicated_servers/all_servers.xml