У нас на неделе был эпический переезд из Ростелекома в IXcellerate. Кажется, мы обязаны про это рассказать. 

Потому что случился просто весь сок того, как работает отечественный рынок:

  • Те, кто ждал подъёма своего облака всё это время — вы ждали СДЭКа, который вёз два патч-корда «день в день».

  • У нас глючили сетевые железки, и мы не знали, в чём дело. Две недели поиска бага закончились тем, что мы перевезли их в другой дата-центр, и там глюк прошёл полностью.

  • Нельзя зайти в ЦОД Ростелекома 21 человеку, потому что 1 человек оформляется охраной 5 минут с записями в бумажный журнал, а через час они просят пересоздать заявку.

  • Если у вас в команде есть белорусы и казах, то их будут проверять 3 дня, прежде чем пустить на стратегический объект, потому что таков SLA безопасников по обмену данными. Но если у вас есть сириец, его пустят сразу (вероятно, потому что обмен данными не налажен).

  • И да, после переезда мы наконец-то обновили бесплатные лимиты, теперь даже не надо пополнять счёт, чтобы их получить.

А теперь чуть больше подробностей и что у нас было с сервисом. 

Бета-облака

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

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

В целом всё началось с желания запуститься как можно быстрее. Поэтому мы развернули нашу бету на самом оптимальном стеке. Демоинсталляция с халявными ресурсами живёт всё ещё не на той же архитектуре, что прод. В ней ещё торчали куски Козистека — уже кубероцентричного, красивого и новомодного, блестящего такого, но с прослойкой для своего, пока ещё сырого API и без физического разделения сетей. Ну и заодно оказалось, что это решение тоже не очень нормально работает. Мы постепенно избавлялись от него итерация за итерацией, но его наследие продолжало нас преследовать.

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

Массово посыпались проблемы на бете

То на ровном месте начинали флапать внутренние BGP-сессии с хостов до ToR-коммутаторов. То внезапно отваливалась наша гиперконвергентная дисковая подсистема — поды начинали мигрировать, отваливаться, а хосты «затенялись» (становились tainted) и переставали принимать новые нагрузки. Всё упиралось в один маршрутизатор ядра. Производительность у него была неплохой, оверхед маленький, но стабильность исчезла.

Мы привезли новые железки, и они стали показывать примерно 40–50% от номинальной производительности по пропускаемому трафику. Представьте: у вас 25-гигабитный линк, а он выкачивает от силы треть.

Почему? Расследование в моменте, когда всё вокруг горит, не дало результатов, но копались мы пару недель. В итоге подъехали 100-гигабитные карточки и мы решили не тратить время и просто пересобрать всё на них.

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

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

Как потом оказалось, на новом месте железки заработали, и от шутки про то, что «я же тебе говорил, место проклятое!», мы удержаться не смогли. 

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

Если вы любите приключения, рекомендую такой путь. 

Но поскольку это бета, а в бете, как известно betta than nothing, мы выбрали путь Безумного Макса и Дороги ярости. Полностью всё вырубить, физически перевезти и собрать с нуля в новом стеке и новом ЦОДе. Да, это означало простой около 2 дней для пользователей беты (как нам казалось вначале). Но так было быстрее и, как оказалось, веселее. 

Мы объявили, что берём тайм-аут, и дальше затеяли масштабный тимбилдинг: почти весь офис, включая фаундеров, отправился в Ростелеком паковать серверы.

Место проклятое!

Шаг 1: подаём заявку на проход 21 человека за сутки. Мы такие заявки (правда, на меньшее количество людей) подавали полтора года по одной и той же форме. Перезванивают их сотрудники и говорят: 

— Надо заявку переделать!
— А почему?
— Вам надо по-другому название ЦОДа написать, не Nord, а «РТК-Медведково-1», потому что Nord — это слишком прозападно.

Ладно, поменяли. Последний раз же. 

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

— Я сотрудник физической безопасности, мне надо на то, чтобы проверить человека из Беларуси, три дня. У вас их тут двое. Ещё из Казахстана двое. Короче, идите на хер, пересоздайте заявку без них. 

Интересно, что у нас есть сириец, который такие проверки не триггерил ни в одной заявке. 

Ладно, пересоздались без них. Последний раз же. 

Наученные прошлым опытом, печатаем серийники для заявки на выезд.

Дальше мы сломали их физический IAM. То есть попыткой зайти разом вся их пропускная система подвисла так нехило, больше чем на час. Потому что каждого они пропускают минут по 5. Записи в бумажный журнальчик делают, паспортные данные какие-то переписывают, забивают, хотя они все в заявке есть. Потом ещё выдают тебе на планшете ту самую инструкцию, которую никто не читает, но вместо галочки — роспись пальцем. Потом это всё в определённый момент просто зависает, ломается. А у них же ещё двое ворот на входе в ЦОД. И, понятно, чтобы не создавать очередь, часть людей уходит на другие ворота, и их логика ломается окончательно. 

В итоге оказалось, что пропустить всех надо за 1 час, потому что потом слот активации пропуска заканчивается. Пять человек не попали вообще. 

— Заявка закрылась, мы не можем запускать новых людей. Пересоздайте, пожалуйста, заявку на вход!

Ладно, пересоздали. Последний раз же. 

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

Дальше выезд из Ростелекома. Это ещё хуже, чем вход новых, ни разу не посещавших людей. На каждый сервак сверяется серийник. И благо, они ушли от той идеи, что мы в заявке должны указывать ещё внутренний учётный номер. Раньше было так: при ввозе они клеили наклейку с номером и в заявку надо было вбивать и его, и серийник железки. Мы с первого же раза сказали, что этой хернёй заниматься не будем, и ни разу её не вбивали. Поэтому все наши заявки проходили прекрасно по серийникам серверов.

Патч-корды — оказывается, это проблема

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

Примерно за 3 часа всё смонтировали — быстрее, чем разбирали в РТК, потому что белорусов пустили. 

Но! Для того чтобы в IXcellerate связать наш meet-me-room с новой инсталляцией (она у нас идёт как отдельный контур), понадобилась парочка отдельных патч-кордов. Трассы проложены, кроссы разварены, трансиверы есть. И вот нам, значит, нужен обычный патч-корд, FC — LC-дуплекс.

Заказываем его 30-го, в среду. 

На «Всех инструментах» патч-корды были, на них было написано «доставка 1 день», но при добавлении в корзину дата доставки превращалась в 5 августа. 

Нашли на Nag.ru. Они такие — «сейчас привезём!» Оплачиваем супернаценку за доставку СДЭКом. Это, кстати, в два раза дороже, чем сами патч-корды, чтобы доставить день в день. 

И СДЭК их морозит на хрен. 

Вот точно такие же, только совсем другие
Вот точно такие же, только совсем другие

Прикол в том, что у нас собрано уже всё. Контур заведён, уже всё крутится. Связать его с ядром сети — два, два маленьких патч-корда, и их не хватает! 

То есть все, кто ждали нашего облака, имейте в виду, вы ждали два патч-корда, которые мы заказали в трёх разных местах. Мы с коллегами из ЮЛ-Ком уже шутили на предмет купить аппарат для сварки этих патч-кордов и варить их самим. Оказалось, это стандарт рынка. Это боль. Оказалось, что у многих это блокер включения нового клиента. Потому что две недели ждать патч-корды! Что происходит, почему в Москве их дефицит, я не знаю.

СДЭК привёз заказ день в день через 6 дней. 

Изменения в архитектуре демоинсталляции

Была архитектура, растянутая на VLAN’ах. Пять физически изолированных сетей (для управления, хранения, публичного трафика и т.д.), которые всё равно терминировались как разные VLAN на одном маршрутизаторе. Мы жили даже в продакшене с MTU 1500 (!), что создавало проблемы для оверлейных сетей и производительности. И не спрашивайте, почему мы не пробовали его увеличить — мы пробовали, но пришлось откатиться. Это мешало построить полноценную оверлейную сеть Kube-OVN и изолировать теннаты друг от друга. 

Сейчас полностью перешли на микросервисную архитектуру, выпилив все рудименты. Сеть теперь построена на EVPN VXLAN с физической топологией Dragonfly+. На уровне отдельной группы стоек — Clos (Node, Leaf, Spine), между Спайнами — full-mesh. Там тоже не без сюрпризов, про то, какие грабли поймали, напишем отдельно.

Выкатили API напрямую. Здесь мы вдохновлялись подходом AWS, которые через свой IAM прокачивают до миллиарда запросов. Наш API станет точкой входа для веб-интерфейса, CLI и внешних инструментов типа Terraform’а. То, что вы просили с беты, тоже запустим. Теперь эти доработки делаются ещё быстрее. Будут VPC для объединения машин в разных зонах доступности, Managed Kubernetes, управление DNS-зонами, очереди сообщений (Kafka, RabbitMQ, NATS).

Про бесплатный доступ

Для юрлиц сделали ролевую модель доступа (RBAC) для создания и управления пользователями с разными правами. Корпораты, добро пожаловать! При регистрации юрлица сразу даём 50 тысяч бонусов на 3 месяца.

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

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

Комментарии (2)


  1. fcoder
    14.08.2025 12:46

    Отдельное спасибо за то что называете компании своими именами, а не вот эти все "разноцветные банки"


  1. esca7a
    14.08.2025 12:46

    Если я увижу еще раз от вас хоть пост
    опять лайкну
    Спасибо, очень интересно!