Впечатлившись успехами американского хостера DigitalOcean (чего уж скрывать), мы в 2014 году решили создать недорогой и качественный VDS хостинг в России. На тот момент в нашем распоряжении был небольшой «дата-центр» из 4 стоек, располагавшийся в здании бывшего общежития, а в качестве системы охлаждения использовалось две недорогие сплит-системы. Канал на 100 мегабит, 2 древних маршрутизатора Cisco и сотня относительно новых серверов. Было бы смешно обещать клиентам хорошее качество с таким Starter Kit-ом. Но мы решили постараться достигнуть своей цели. Попробуем дать ответ на заголовок данного поста, и параллельно расскажем о нашем опыте создания лоукост хостинга.
Этап нулевой. Разработка стратегии
Проанализировав рынок, мы выявили несколько типов VDS хостеров на российском рынке:
- Реселлеры зарубежных и российских хостеров
- Хостеры, арендующие готовые серверы
- Хостеры, имеющие собственное серверное оборудование
- Хостеры, имеющие свой дата-центр, сетевую инфраструктуру и серверы
С первым типом — проще всего. Кроме сайта, связки с биллингом поставщика услуг и рекламы, почти ничего не требуется. Лоукост невозможен, в частности в российской локации. Второй тип — аренда готовых серверов. Можно создать на их базе инфраструктуру хостинга, администрированием заниматься удалённо. За счёт аренды большого количества серверов можно добиться оптимальной стоимости аренды, но вот добиться супер-низких цен на VDS вряд ли получится. Третий тип — это то, что подошло бы нам. Отсутствие профессионального дата-центра вынуждало нас рассмотреть вариант аренды стоек в чужом дата-центре. Но не давали покоя следующие факторы: затраты на аренду стоек, ограничения по ширине канала и трафику, отсутствие оперативного доступа к оборудованию, лимиты/доплата за потребляемые киловатты. Ведь по сути, на конечную стоимость услуги VDS хостинга влияет всего 3 вещи:
- Стоимость оборудования и его размещения
- Стоимость электроэнергии
- Стоимость трафика
Размышляя над тем, как создать настоящий лоукост — мы пришли к мнению, что без собственного дата-центра всё же не обойтись. Поэтому решили, что будем улучшать свой мини «дата-центр» (пока ещё в кавычках) насколько это возможно и посмотрим, будет ли проект интересен рынку.
С тарифами ещё не определились, но знали точно — они должны быть не выше, чем у западных конкурентов, либо схожими, но в таком случае объём предоставляемых ресурсов — выше. В конечном итоге мы сделали и то и другое, но к этому мы вернёмся позже.
Для дисковой подсистемы были выбраны SSD диски компании Samsung серии 840 EVO, так как по тестам они оказались самыми производительными. А поскольку на складе оставалось много HDD SATA дисков, мы решили добавить линейку тарифов для тех, кому скорость дисковой подсистемы не сильно важна, по более лояльной цене. В конце концов, по мере снижения спроса на VDS с HDD SATA дисками, их число мы могли бы уменьшить до нуля.
HDD SATA были объединены в RAID 10, а SSD — в RAID 1.
Основной тип виртуализации — KVM, но на серверах с HDD SATA дисками оставили возможность выбора KVM/OpenVZ, так как на тот момент, в рамках эксперимента, уже работала пара нод на OpenVZ, и данный тип виртуализации был особенно интересен держателям игровых серверов.
До сих пор не поняли, насколько правильным было наше решение, но мы и по сей день предоставляем пользователям выбор SSD/HDD и KVM/OpenVZ. В плане администрирования и обслуживания серверов лишних хлопот это не доставляет.
Основным правилом проекта стало: минимум ограничений и максимум возможностей и удобств для клиентов, даже несмотря на то, что это лоукост. Нам хотелось сделать что-нибудь потрясающее, удивить российский рынок. С чего бы начать?
Этап первый. Оверселлинг?
С памятью и жёстким диском проблем не было — устанавливаемого нами объёма с запасом хватило бы на 30-40 клиентов одной ноды, так как SSD диски закупались максимального объёма, на 1 ТБ, а памяти устанавливалось по 48-60 гигабайт в каждую ноду. Но вот ядер было явно меньше чем нужно: 2 x Intel Xeon E5530 = 16 логических ядер с включенным гипертредингом. Однако в ходе экспериментов мы поняли, что самая нагруженная нода использует в пике не более 50% ресурсов процессоров, так как ситуация, когда ~30-ти клиентам одновременно потребуется 100% ресурсов ядра — маловероятна. Однако мы решили всё же подстраховаться. В полуавтоматическом режиме (в будущем планируется полностью автоматизировать) — если одна из нод начинает потреблять более 50% ресурсов процессора, то наиболее «прожорливые» клиенты распределяются на менее нагруженные ноды путём живой миграции. Пользователь этого даже не заметит. А поскольку рабочих нод в данный момент уже более 150+, то ситуации, когда кто-либо из клиентов будет ущемлён в заявленных процессорных ресурсах — просто не будет.
Да, это оверселлинг, но грамотный. На практике — вы не почувствуете никогда нехватки CPU. Вопрос очень щепетильный и всегда вызывает массу споров. Также, использование именно серверных процессоров Xeon показывает лучшую производительность при использовании виртуализации, поскольку идёт существенная экономия тактов CPU при переключении между процессами, по сравнению с десктопными аналогами с бОльшей частотой.
Ещё один параметр, который мы оверселлим — это трафик. Здесь работают те же самые условия, что и для CPU. На 100 клиентов с небольшим трафиком, приходится один, который качает много. Поэтому мы решили не считать трафик и не делить его на российский/зарубежный, а просто предоставлять гарантированно 100 Мбит/с на один VDS. При этом ограничение по полосе в 100 Мбит/с мы выставляем только в том случае, если клиентский трафик будет велик настолько, что начнёт доставлять неудобство соседям по серверу. За всё время нашей работы, мы пока еще ни разу не применили данное правило. А в штатном режиме трафик отдается/получается на скоростях 300-800 Мбит/с. В целом, для системы это даже лучше, быстро отданный объём информации создаёт меньшую очередь в стеке и в итоге меньше нагружает систему.
Этап второй. Свой канал до М9
Самым слабым местом на тот момент был интернет-канал. Поэтому первым делом мы проложили оптику до М9. Это дало возможность самостоятельно улучшать свою сеть. Для хорошей сетевой связанности, в течение полугода мы подключили 7 линков к ведущим провайдерам и сетям обмена трафика:
Это дало дата-центру сразу несколько преимуществ: минимальный пинг из разных регионов; высокую скорость из регионов России, из Украины, стран СНГ и Европы; суммарную пропускную способность внешних каналов 65 ГБит/с. Это уже повеселее, чем 100 мегабит. С тех пор 100 мегабит доступно каждому виртуальному серверу без ограничения трафика!
Однако осталась одна серьёзная проблема, которая по «счастливому» стечению обстоятельств уже трижды испортила жизнь нам и нашим клиентам — отсутствие резервного канала на тот момент. За полтора года нам трижды порвали оптику. Как правило, причина всегда одна и та же — дорожные работы, строительство, экскаватор в рандомных точках канала.
Этап третий. Улучшение коммутационного оборудования
Одной из главных проблем в период роста стали DDoS-атаки. Пока канал был слабым — клали канал. Когда канал стал мощным — стали падать старенькие циски. В период с февраля по декабрь 2014 года пришлось обновить весь парк сетевого оборудования. Переход на 10G сыграл в этом немало важную роль. Самым дорогим на тот момент «удовольствием», стала покупка маршрутизатора Juniper MX-80, способного без проблем переваривать до 80 Gbps трафика:
Проблема ддосов практически исчезла с того момента. Теперь на 1 клиента может «литься» 5-10 гигабит, при этом другие клиенты это вряд ли заметят. Разве что соседи по серверу, но не по стойке. Но в таких ситуациях, как правило, наши системные администраторы реагируют очень быстро. Самый благоприятный вариант — блокировка вредоносного трафика на пограничном коммутаторе. Наименее благоприятный — blackhole.
Этап четвёрый. Борьба с жарой и бесперебойное питание
Старт продаж был в октябре 2014 года. Несмотря на то, что у нас практически не было рекламы, популярность наших VDS росла с каждым днём. Мы не ожидали, что за пол года число активных VDS вырастет до 2-3 тысяч. Первым делом перестало хватать двух сплит-систем. Температура в серверной поднялась выше 25 градусов. Мы разделили пространство на горячий и холодный коридор, реализовали отведение тёплого воздуха. Какое-то время это спасало. Потом началось лето. Докупили напольный промышленный кондиционер, как экстренное решение. Но количество работающих нод увеличивалось с каждым днём, а вместе с ними — температура за окном. Мы уже просто не знали что делать. Наш «дата-центр» кипел, и в ход шло всё, вплоть до мобильных офисных кондиционеров, направляемых на отдельные, наиболее перегретые участки. Многие из вас, скорее всего, посмеются сейчас над нами. Но нам было совсем не до смеха в тот момент. Около 2 недель мы отчаянно боролись за спасение серверов, прекрасно понимая, что с текущим «дата-центом» мы не проживём до конца лета. В 30-ти градусную жару нам пришлось заказать 2 огромных кубика сухого льда! Только благодаря им удалось пережить самый жаркий день.
Отсутствие бесперебойного питания нас беспокоило не меньше. В серверной была дополнительная стойка + 1 стеллаж с блоками бесперебойного питания, которых в лучшем случае хватало на 10-15 минут при максимальной загрузке «дата-центра». Дизельного генератора не было вовсе (!). Об отключениях электричества обычно предупреждали заранее, на этот случай партнёры предоставляли нам дизельный генератор в аренду.
Разумеется, мы понимали, что это непрофессиональный подход. Бывали внезапные отключения электричества. А однажды, при плановом отключении электроэнергии, нам ошибочно привезли генератор намного меньшей мощности, чем нужно. В итоге произошёл очень длительный даунтайм.
Все эти проблемы не были для нас неожиданностью. Ещё в феврале 2015 стало очевидно, что темпы роста настолько велики, что неминуемо приведут нас к описанным выше проблемам. Тогда и начались активные поиски вариантов расширения.
Этап пятый. Нас всё достало
За пол года мы получили массу как позитивных, так и негативных отзывов. Мы осознавали слабые стороны и хотели как можно скорее их исправить. Качественная и оперативная техподдержка, доступная цена и хорошая производительность — были удерживающими факторами. Но периодические даунтаймы никого не устраивали, в первую очередь нас. И вот настал переломный момент — мы обзавелись новым дата-центром, теперь уже без кавычек, на ~5000 серверов.
Это позволило моментально избавиться от детских болячек, так как наш новый дата-центр оборудован профессиональной системой кондиционирования, 2 мощными дизельными генераторами на 2.4 мегаватта, промышленными бесперебойниками, комплексной системой пожаротушения и видеонаблюдения. Дата-центр спроектирован профессионалами и способен работать при максимальной нагрузке без каких-либо факапов. Наконец-то появился резервный канал до М9. Обзор нового дата-центра удостоен отдельного поста, поэтому здесь мы о нём не будем рассказывать подробно.
В новом дата-центре мы собрали более мощный кластер на базе серверов с процессорами Intel Xeon E5620 и SSD дисков в конфигурации RAID 10. Это дало общий прирост производительности в ~35%, по данным UnixBench. Гипервизор теперь работает на CentOS 7, а установка виртуальных машин занимает 1-2 минуты (против 5-15 раньше). Также мы включили полный проброс всех инструкций физического CPU, включая название модели. Пропускную способность сети на 1 стойку увеличили с 10G до 20G. Добавили приватную сеть — специальный сегмент внутренней сети, с «серыми» IP-адресами, для обмена трафиком между VDS. Реализовали живую миграцию при смене тарифа с HDD на SSD и обратно. Прогресс, однако!
Так возможен ли лоукост в России?
Однозначно да! Нам удалось добиться весьма неплохих результатов за последние полтора года, и некоторые клиенты отзываются о нас, как о безальтернативном варианте по соотношению цена-качества в России. С другой стороны, у нас по прежнему есть недостатки — нам не хватает более качественных программных решений. В данный момент хостинг работает на базе продуктов ISPsystem. Сейчас мы пишем собственную систему управления на Go и планируем внедрить её в будущем (надеемся, что в ближайшем). Сейчас нет удобного API. Нет бэкапирования, включаемого в 1 клик. Бэкапы есть пока только, как отдельная услуга.
В самом начале мы обещали вернуться к тарифам. Не можем не сказать о них.
Изначально мы создали конфигурации, похожие на те, что у DigitalOcean. Один в один. Цену минимальной конфигурации установили в 250 р., для VDS с SSD диском, и 200 р. для VDS с HDD SATA диском, что по нынешнему курсу <5$.
Потом мы решили, что этого недостаточно и пошли дальше — вдвое увеличили память на всех тарифах и число ядер, начиная со второго тарифа. Вот что получилось:
Заключение
Надеемся, что вам понравился наш первый пост.
В будущих статьях мы подробно расскажем о новом дата-центре и о том, почему мы выбрали Go для создания новой панели управления, с какими сложностями столкнулись в процессе её создания.