Игровой кластер что такое
Кластерные системы
Parking.ru как облачный провайдер имеет опыт оказания не только услуг с «обычной» надежностью, но и услуг хостинга высокой доступности, построенных на кластеризованной дублированной инфраструктуре.
Имея весомый опыт в построении таких инфраструктурных проектов, мы решили предложить его не только избранным клиентам (которые уже много лет используют эти услуги), а сделать стандартизированное предложение для всех желающих.
Parking.ru запустил целый ряд кластерных решений построенных на надежной дублированной инфраструктуре и имеющих в основе самые разные решения: от виртуальных машин до группы физических серверов. Отдельного внимания заслуживает предложение по ГЕО кластеризации в двух разных ЦОД, объединенных дублированными каналами связи.
Если рассматривать вкратце, то в рамках предложения существуют следующие типовые схемы кластеров:
Кластеры высокой доступности (High Availability cluster)
Создаются для обеспечения высокой доступности сервиса, предоставляемого кластером. Избыточное число узлов, входящих в кластер, гарантирует предоставление сервиса в случае отказа одного или нескольких серверов. Минимальное количество узлов — два, но может быть и больше.
Обычно High Availability кластер строится для Microsoft SQL server’ов, который поддерживает базы данных интернет проектов. High Availability кластер возможно построить и для Exchange систем.
Существует ещё одна разновидность High Availability SQL кластера — «зеркалирование БД» или database mirroring. Этот вид кластера не требует выделенного дискового хранилища, но для автоматического переключения в случае аварии нужен ещё один SQL сервер — следящий/witness. Такой кластер идеально подходит для WEB приложений и требует меньше затрат на создание.
Балансировка нагрузки (Network Load Balancing, NLB)
Принцип действия NLB-кластеров — распределение приходящих запросов на несколько физических или виртуальных узлов серверов. Первоначальная цель такого кластера — производительность, однако, они используются также для повышения надёжности, поскольку выход из строя одного узла приведет просто к равномерному увеличению загрузки остальных узлов. Совокупность узлов кластера часто называют кластерной фермой. Минимальное количество узлов в ферме — два. Максимальное — 32.
При размещении высоконагруженных web-проектов в режиме NLB строится ферма web-серверов на IIS 7.х
Кластеры на виртуальных машинах
Наиболее доступным и масштабируемым решением является построение кластера на основе виртуальных машин на платформе Hyper-V.
В качестве web-боксов NLB-кластера используются виртуальные машины с установленными на них Windows Web Server 2008 (IIS7.х, пользовательское приложение).
В качестве кластера баз данных используется две виртуальные машины необходимой мощности на Windows Server 2008 Standard Edition и SQL Server 2008 Standard Edition.
Отказоустойчивое единое хранилище данных на основе Storage System от NetApp или HP.
Для обеспечения бОльшей надежности все узлы кластера располагаются на различных физических серверах\узлах кластера.
Масштабируемость решения достигается путем увеличения мощности используемых виртуальных машин (вплоть до 100% мощности физического сервера), а также за счет добавления новых узлов в NLB-кластер.
С использованием средств онлайновой миграции со временем возможен перенос узлов кластера на новые, более современные физические сервера без потери работоспособности и без простоя любого узла.
Данный кластер является лучшим решением в соотношении цена/качество и рекомендуется как для критичных для бизнеса приложений, так и для относительно нагруженных web-проектов (
до 30000-50000 посетителей ежедневно).
Кластеры на физических серверах
Web-проекты с нагрузкой выше 50000 посетителей, проекты со специальными требования по безопасности требуют построения кластерных решений на выделенных серверах без потерь мощностей физических серверов на виртуализацию.
Схема построения таких кластеров аналогична схеме построения кластеров на виртуальных машинах, только в качестве узлов используются выделенные физические серверы.
Геокластеры
При построении локальных кластеров единой точкой отказа системы является сама инфраструктура ЦОД. Parking.ru предлагает уникальное решение на российском рынке — построение географически распределенного кластера, узлы которого располагаются в разных ЦОДах Parking.ru.
Каждый из узлов кластера имеет независимый выход в интернет, но при этом из сети данных кластер выглядят как единый сервер с единым адресом и контентом.
Как я собрал домашний кластер Kubernetes на базе Raspberry Pi
Здесь есть поклонники Kubernetes? Я уже довольно давно пользуюсь им как на работе, так и в других местах, где занимаюсь частными проектами, но иногда мне нужно место, где можно быстро и без особых затрат разработать и протестировать новые функции или просто, как говорят, «поиграть с программой», скопировать данные в резервное хранилище, обменяться файлами или сделать что-либо подобное.
Я всё подсчитал и понял, что общая стоимость кластера получается ниже, чем стоимость облачных предложений аналогичной вычислительной мощности с таким же количеством нод. В преддверии старта нашего курса по DevOps, делимся с вами описанием сбора собственного домашнего кластера Kubernetes.
Не помешает добавить: радиаторы и четыре кабеля USB-B на USB-C.
Почему Raspberry Pi?
TL;DR. Главные причины — цена и вычислительная мощность.
Кластер из четырёх нод учетверяет характеристики каждого из мини-компьютеров (1,5 ГГц, 4 ядра ARM CPU и 4 ГБ RAM), то есть в итоге мы получаем 16 ядер 1,5 ГГц и 16 ГБ RAM.
Подготовка карты памяти
Начинаем с загрузки операционной системы, и это будет самая затратная по времени часть проекта. Большую часть своего времени я работаю с Docker и Kubernetes, и одно из моих любимых занятий — сведение размеров образов Docker к абсолютному минимуму. Чаще всего я пользуюсь Alpine Linux, поэтому свой кластер буду строить именно на этом дистрибутиве.
Заходим в раздел Alpine Linux Downloads и выбираем версию AARCH64 для Raspberry Pi 4 Model B.
Пока загружается дистрибутив, подготовим карту памяти: отформатируем её под файловую систему FAT32. Я — фанат OSX, поэтому, чтобы получить идентификатор диска карты памяти, обычно пользуюсь этой командой:
Чтобы отформатировать всю карту памяти (я назвал её RPI), запустите эту команду:
sudo diskutil eraseDisk FAT32 RPI MBRFormat /dev/diskX
Распакуйте загруженный пакет с Alpine linux и сбросьте его на карту:
Базовая настройка системы
Поздравляю, вы на шаг ближе к миру Kubernetes, и где? У себя дома! Вставьте карту памяти в Raspberry Pi, монитор или телевизор, соедините с клавиатурой и включите питание. После того как система загрузится и предложит войти, в качестве имени пользователя и пароля используйте root. Настройка начинается с этой команды:
Я запускаю кластер в домашних условиях, и на моём маршрутизаторе нет нужного количества свободных портов, поэтому я решил воспользоваться сетью Wi-Fi. Вариантов тут не так много, но в любом случае стоит продумать каждый.
После завершения настройки нужно сделать ещё несколько вещей. Alpine по умолчанию запускается из оперативной памяти, но было бы лучше, если бы наши изменения сохранялись на диске, чтобы после возможных перезагрузок каждый раз не вводить их заново.
Вот что нужно сделать:
Изменить размер раздела FAT32 до разумного минимума — в моём случае я задал 1 ГБ.
Для создания нового загрузочного раздела использовать всё оставшееся свободное место.
Не забыть записать только что сделанные изменения.
Чтобы завершить весь процесс, нужно запустить ещё несколько команд:
Обновите записи /etc/fstab
И — последние штрихи после перезагрузки системы: имейте в виду, что, если не включить соответствующие cgroups, шаг kubeadm выполнить не удастся.
И, наконец, очень важная вещь после всех шагов — сделать резервные копии внесённых изменений и перезагрузить систему.
Настройка других системных параметров
Я уже писал выше, что собираюсь использовать кластер Kubernetes в домашних условиях. Но, упреждая ваш вопрос, отвечу: да, он будет работать и в офисной сети, но в этом случае нужно будет ещё кое-что добавить.
Определите с помощью avahi daemon имя узла в локальной сети
Зачем нужен этот шаг? А затем, что гораздо проще запустить команду ssh pi0.local, чем возиться с соответствующим IP-адресом. Сетевые настройки и настройка параметров кластеризации после этого станут намного проще, особенно если отсутствует возможность использования статических IP-адресов.
Разрешить ssh root-доступ
Внесите изменения в файл /etc/ssh/sshd_config — добавьте к нему следующую строку, чтобы предоставить ssh root-доступ.
Установите Docker, Kubernetes и оставшиеся пакеты. Они понадобятся нам позже.
Силы можно сберечь
На этом шаге всё должно быть готово. Последним шагом я выключил Raspberry Pi, вставил карту памяти обратно в ноутбук и создал её образ, чтобы можно было продублировать его на оставшиеся три карты и, таким образом, сэкономить время.
Не забудьте: чтобы не возникали конфликты, нужно изменять содержимое /etc/hostname для каждого вновь создаваемого компьютера. Я назвал компьютеры pi0, pi1 и pi2 (так легче запомнить) и внёс эти имена в локальный конфигуратор ssh (на именование нет никаких ограничений).
Создание мастер-ноды Kubernetes
Если будут возникать любые ошибки, связанные с cgroups, останавливающие процесс инициализации, это значит, что вы наверняка пропустили один из шагов. Если всё сделано правильно, должно появиться сообщение, что инициализация панели управления Kubernetes прошла успешно: Your Kubernetes control-plane has initialised successfully!
Сохраните вывод команды, которая начинается с kubeadm join, в безопасном месте. Она понадобится, чтобы добавить к кластеру оставшиеся ноды.
Для сохранения идентификационных данных в домашнем каталоге выполните эти команды:
Как получить доступ к ноде?
Мастер-нода запущена, что ещё нужно сделать?
Нужно обеспечить сетевую связь между подами — без неё нода будет иметь отметку (taint) и всегда оставаться в состоянии NotReady — “не готова”.
По умолчанию на мастер-ноде ничего развёртывать нельзя, и нода будет отображаться c отметкой (taint), но не волнуйтесь — мы можем изменить это командой
Теперь что касается дашборда. Покажите мне того человека, которому не нравится, когда в ПО имеется дашборд! В Kubernetes есть собственный и достаточно универсальный дашборд, и с его помощью можно обозревать весь кластер и что-либо у него внутри.
Как вы, возможно, заметили, я довольно хорошо покопался в настройках Helm-чарта, но для этого были причины.
Ваш дашборд будет работать, но. он ничего не будет показывать, потому что ещё нет разрешений.
Мы почти у цели. У нас есть мастер-нода и дашборд, но доступа к нему в данный момент у нас нет. Конечно, для доступа к дашборду можно было воспользоваться nodePort, но мы пойдём другим путём — получим доступ средствами Kubernetes, а для этого нам понадобится балансировщик нагрузки loadBalancer.
Нода работает в локальной сети, поэтому мы не можем рассчитывать ни на какие «плюшки» от AWS или GoogleCloud, но бояться тут нечего — эту проблему, в принципе, можно решить.
Балансировка нагрузки в домашней сети
Выполните инструкции по установке из MetalLB до конца раздела Installation By Manifest.
Это команда будет выполняться до тех пор, пока Pi включён. Чтобы не делать лишнюю работу, создавая скрипты запуска, я решил изменить файл /etc/network/if-up.d/dad и установить неразборчивый режим: в нём сетевая плата позволяет принимать все пакеты, независимо от того, кому они адресованы.
Создайте следующий манифест: my-dashboard.yaml
Не забудьте изменить раздел адресов в соответствии с настройками локальной сети.
Теперь в моём случае к дашборду можно получить доступ по адресу http://192.168.50.200/.
Кластер k8s на базе Raspberry Pi.
Эта статья, пронизанная любовью к экспериментам, была написана после дня субботних мучений, скрашенного несколькими банками энергетического напитка.
Обзор подов кластера представлен K9S
Добавление дополнительных нод
Я придерживаюсь принципов DRY (Don’t Repeat Yourself — Не повторяйся) и KISS (Keep It Stupid Simple — Делай проще, тупица), поэтому не буду ничего повторять, а объясню всё простыми словами. Вернитесь к началу статьи и на вновь создаваемых нодах выполните ещё раз все шаги до места “Создание мастер-ноды”, затем запустите следующую команду (не забудьте заменить IP-адрес на IP мастер-ноды или укажите имя узла pi0.local. За эту возможность отдельное спасибо avahi-daemon):
Совет: если вы забыли скопировать команду kubeadm во время создания мастер-ноды, не расстраивайтесь, просто запустите на мастер-ноде следующую команду, и команда kubeadm будет распечатана. А если хотите прокачать себя до DevOps инженера — приходите учиться и станьте дефицитным и очень высокооплачиваемым специалистом.
Узнайте, как прокачаться и в других специальностях или освоить их с нуля:
«Ростелеком» и GFN.RU запустили в Сибири новый игровой кластер
«Ростелеком» провел в Новосибирске презентацию возможностей нового серверного кластера, запущенного вместе с игровым сервисом GFN.RU в ноябре 2021 года. В ходе двухчасовой онлайн-трансляции зрители больше узнали об облачном гейминге и поучаствовали в конкурсах с крутыми подарками и стали свидетелями сражения в Dota 2 между командами Сибири и Урала.
«Главное преимущество облачного гейминга заключается в том, что пользователю не нужны мощные и дорогие игровые компьютеры — основная нагрузка приходится на удаленные серверы и облачные решения. Это значит, что даже требовательные современные игры можно запускать практически с любого устройства и выходить на заоблачную высоту, где пинг — меньше, а результативность — больше», — отметил директор по работе с массовым сегментом региона «Сибирь» компании «Ростелеком» Александр Бойкиня.
GFN.RU — эксклюзивный партнер мирового лидера рынка графических процессоров и визуальных вычислений NVIDIA по развитию игрового сервиса GeForce NOW в России и странах СНГ. Новосибирский кластер стал четвертым техническим ресурсом в стране, отвечающим за работу сервиса GFN.RU. Оборудование размещено в дата-центре компании «Ростелеком — Центры обработки данных», открытом в столице Сибирского федерального округа в январе 2021 года.
«Игры стали частью жизни многих людей: они развлекают, обучают, помогают общаться и даже зарабатывать. Еще несколько лет назад нельзя было подумать, что гейминг высокого уровня будет настолько доступным, и это стало возможным в том числе благодаря появлению в регионах новых серверных кластеров», — сказал исполнительный директор GFN.RU Павел Троицкий.
В 2020 году GFN.RU разместил серверы с поддержкой передовых графических технологий NVIDIA GeForce в Екатеринбурге. Уральские геймеры уже привыкли к высоким скоростям и продемонстрировали класс в шоу-матче «Сибирь против Урала» в одной из самых популярных многопользовательских игр Dota 2. С одной стороны сражалась команда HUSKY из Красноярска, с другой — сборная «Уральские Мопсы», которая и вырвала победу у сибиряков в напряженном сражении.
«Команда “Мопсов” очень уверенно сыграла, был хороший драфт. Видно, что парни старались и показали свой уровень. HUSKY, пожалуй, немного недооценили соперника, потому что они точно могли сыграть лучше», — уточнил комментатор игры Dota 2 Максим Парфенов.
Кластер (группа компьютеров)
Кластер — группа компьютеров, объединённых высокоскоростными каналами связи и представляющая с точки зрения пользователя единый аппаратный ресурс.
Один из первых архитекторов кластерной технологии Грегори Пфистер дал кластеру следующее определение: «Кластер — это разновидность параллельной или распределённой системы, которая:
Обычно различают следующие основные виды кластеров:
Содержание
Классификация кластеров
Кластеры высокой доступности
Обозначаются аббревиатурой HA (англ. High Availability — высокая доступность). Создаются для обеспечения высокой доступности сервиса, предоставляемого кластером. Избыточное число узлов, входящих в кластер, гарантирует предоставление сервиса в случае отказа одного или нескольких серверов. Типичное число узлов — два, это минимальное количество, приводящее к повышению доступности. Создано множество программных решений для построения такого рода кластеров.
Отказоустойчивые кластеры и системы вообще строятся по трем основным принципам:
Конкретная технология может сочетать данные принципы в любой комбинации. Например, Linux-HA поддерживает режим обоюдной поглощающей конфигурации (англ. takeover ), в котором критические запросы выполняются всеми узлами вместе, прочие же равномерно распределяются между ними. [1]
Кластеры распределения нагрузки
Принцип их действия строится на распределении запросов через один или несколько входных узлов, которые перенаправляют их на обработку в остальные, вычислительные узлы. Первоначальная цель такого кластера — производительность, однако, в них часто используются также и методы, повышающие надёжность. Подобные конструкции называются серверными фермами. Программное обеспечение (ПО) может быть как коммерческим (OpenVMS, MOSIX, Platform LSF HPC, Solaris Cluster, Moab Cluster Suite, Maui Cluster Scheduler), так и бесплатным (OpenMosix, Sun Grid Engine, Linux Virtual Server).
Вычислительные кластеры
Кластеры используются в вычислительных целях, в частности в научных исследованиях. Для вычислительных кластеров существенными показателями являются высокая производительность процессора в операциях над числами с плавающей точкой (flops) и низкая латентность объединяющей сети, и менее существенными — скорость операций ввода-вывода, которая в большей степени важна для баз данных и web-сервисов. Вычислительные кластеры позволяют уменьшить время расчетов, по сравнению с одиночным компьютером, разбивая задание на параллельно выполняющиеся ветки, которые обмениваются данными по связывающей сети. Одна из типичных конфигураций — набор компьютеров, собранных из общедоступных компонентов, с установленной на них операционной системой Linux, и связанных сетью Ethernet, Myrinet, InfiniBand или другими относительно недорогими сетями. Такую систему принято называть кластером Beowulf. Специально выделяют высокопроизводительные кластеры (Обозначаются англ. аббревиатурой HPC Cluster — High-performance computing cluster). Список самых мощных высокопроизводительных компьютеров (также может обозначаться англ. аббревиатурой HPC) можно найти в мировом рейтинге TOP500. В России ведется рейтинг самых мощных компьютеров СНГ. [1]
Системы распределенных вычислений (grid)
Такие системы не принято считать кластерами, но их принципы в значительной степени сходны с кластерной технологией. Их также называют grid-системами. Главное отличие — низкая доступность каждого узла, то есть невозможность гарантировать его работу в заданный момент времени (узлы подключаются и отключаются в процессе работы), поэтому задача должна быть разбита на ряд независимых друг от друга процессов. Такая система, в отличие от кластеров, не похожа на единый компьютер, а служит упрощённым средством распределения вычислений. Нестабильность конфигурации, в таком случае, компенсируется больши́м числом узлов.
Кластер серверов, организуемых программно
Кластер серверов (в информационных технологиях) — группа серверов, объединённых логически, способных обрабатывать идентичные запросы и использующихся как единый ресурс. Чаще всего серверы группируются посредством локальной сети. Группа серверов обладает большей надежностью и большей производительностью, чем один сервер. Объединение серверов в один ресурс происходит на уровне программных протоколов.
В отличие от аппаратного кластера компьютеров, кластеры организуемые программно, требуют:
Применение
В большинстве случаев, кластеры серверов функционируют на раздельных компьютерах. Это позволяет повышать производительность за счёт распределения нагрузки на аппаратные ресурсы и обеспечивает отказоустойчивость на аппаратном уровне.
Однако, принцип организации кластера серверов (на уровне программного протокола) позволяет исполнять по нескольку программных серверов на одном аппаратном. Такое использование может быть востребовано:
Самые производительные кластеры
Дважды в год организацией TOP500 публикуется список пятисот самых производительных вычислительных систем в мире, среди которых в последнее время часто преобладают кластеры. Самым быстрым кластером является IBM Roadrunner (Лос-Аламосская национальная лаборатория, США, созданный в 2008 году), его максимальная производительность (на июль 2008) составляет 1,026 Петафлопс. Самая быстрая система в Европе (на июль 2008) — суперкомпьютер, BlueGene/P находится в Германии, в исследовательском центре города Юлих, земля Северный Рейн-Вестфалия, максимально достигнутая производительность 167,3 Терафлопс.
Кластерные системы занимают достойное место в списке самых быстрых, при этом значительно выигрывая у суперкомпьютеров в цене. На июль 2008 года на 7 месте рейтинга TOP500 находится кластер SGI Altix ICE 8200 (Chippewa Falls, Висконсин, США).
Сравнительно дешёвую альтернативу суперкомпьютерам представляют кластеры, основанные на концепции Beowulf, которые строятся из обыкновенных недорогих компьютеров на основе бесплатного программного обеспечения. Один из практических примеров такой системы — Stone Soupercomputer (Оак Ридж, Теннесси, США, 1997).
Крупнейший кластер, принадлежащий частному лицу (из 1000 процессоров), был построен Джоном Коза (John Koza).
История
История создания кластеров неразрывно связана с ранними разработками в области компьютерных сетей. Одной из причин для появления скоростной связи между компьютерами стали надежды на объединение вычислительных ресурсов. В начале 1970-х гг. группой разработчиков протокола TCP/IP и лабораторией Xerox PARC были закреплены стандарты сетевого взаимодействия. Появилась и операционная система Hydra («Гидра») для компьютеров PDP-11 производства DEC, созданный на этой основе кластер был назван C.mpp (Питтсбург, шт. Пенсильвания, США, 1971). Тем не менее, только около 1983 г. были созданы механизмы, позволяющие с лёгкостью пользоваться распределением задач и файлов через сеть, по большей части это были разработки в SunOS (операционной системе на основе BSD от компании Sun Microsystems).
Первым коммерческим проектом кластера стал ARCNet, созданный компанией Datapoint в 1977 г. Прибыльным он не стал, и поэтому строительство кластеров не развивалось до 1984 г., когда DEC построила свой VAXcluster на основе операционной системы VAX/VMS. ARCNet и VAXcluster были рассчитаны не только на совместные вычисления, но и совместное использование файловой системы и периферии с учётом сохранения целостности и однозначности данных. VAXCluster (называемый теперь VMSCluster) — является неотъемлемой компонентой операционной системы HP OpenVMS, использующих процессоры Alpha и Itanium.
Два других ранних кластерных продукта, получивших признание, включают Tandem Hymalaya (1994, класс HA) и IBM S/390 Parallel Sysplex (1994).
История создания кластеров из обыкновенных персональных компьютеров во многом обязана проекту Parallel Virtual Machine. В 1989 г. это ПО для объединения компьютеров в виртуальный суперкомпьютер открыло возможность мгновенного создания кластеров. В результате суммарная производительность всех созданных тогда дешёвых кластеров обогнала по производительности сумму мощностей «серьёзных» коммерческих систем.
Создание кластеров на основе дешёвых персональных компьютеров, объединённых сетью передачи данных, продолжилось в 1993 г. силами Американского аэрокосмического агентства (NASA), затем в 1995 г. получили развитие кластеры Beowulf, специально разработанные на основе этого принципа. Успехи таких систем подтолкнули развитие grid-сетей, которые существовали ещё с момента создания UNIX.
Программные средства
Широко распространённым средством для организации межсерверного взаимодействия является библиотека MPI, поддерживающая языки C и Fortran. Она используется, например, в программе моделирования погоды MM5.
Операционная система Solaris предоставляет программное обеспечение Solaris Cluster, которое служит для обеспечения высокой доступности и безотказности серверов, работающих под управлением Solaris. Для OpenSolaris существует реализация с открытым кодом под названием OpenSolaris HA Cluster.
Среди пользователей GNU/Linux популярны несколько программ:
Кластерные механизмы планируется встроить и в ядро DragonFly BSD, ответвлившуюся в 2003 году от FreeBSD 4.8. В дальних планах также превращение её в среду единой операционной системы.
Компанией Microsoft выпускается HA-кластер для операционной системы Windows. Существует мнение, что он создан на основе технологии Digital Equipment Corporation, поддерживает до 16 (с 2010 года) узлов в кластере, а также работу в сети SAN (Storage Area Network). Набор API-интерфейсов служит для поддержки распределяемых приложений, есть заготовки для работы с программами, не предусматривающими работы в кластере.
Windows Compute Cluster Server 2003 (CCS), выпущенный в июне 2006 года разработан для высокотехнологичных приложений, которые требуют кластерных вычислений. Издание разработано для развертывания на множестве компьютеров, которые собираются в кластер для достижения мощностей суперкомпьютера. Каждый кластер на Windows Compute Cluster Server состоит из одного или нескольких управляющих машин, распределяющих задания и нескольких подчиненных машин, выполняющих основную работу. В ноябре 2008 представлен Windows HPC Server 2008, призванный заменить Windows Compute Cluster Server 2003.