Привет, Хабр! С вами команда Топвизора: DevOps Артём Артёмкин, агент поддержки Настя Резепина и директор по продукту Юля Федотова. В статье мы расскажем, как боролись за доступность сайта для всех пользователей, с какими препятствиями сталкивались и как их обходили.
Увертюра
Топвизор — сервис поисковой аналитики для сеошников и маркетологов, которые используют его для рабочих задач и отчётности. Поэтому даже временная недоступность сайта — большая проблема для пользователей, у которых фактически может встать из-за нас весь рабочий процесс. Так что обеспечить бесперебойный доступ к сервису для каждого пользователя — одна из наших важнейших задач.
Как водится, с первыми проблемами мы столкнулись весной 2022 года, когда часть наших пользователей потеряла доступ к нашему сайту topvisor.com. Наша компания со своей стороны никогда не ограничивала доступ по геолокации или способу оплаты, и мы не хотели перекладывать ответственность за доступность сайта на пользователей и советовать им обходить блокировки. Мы старались решать проблемы такого рода с минимальным участием юзеров, и нашей политикой всегда была полная доступность сайта для всех без каких-либо ограничений. Так что при каждом сообщении о недоступности сайта или проблем с открытием каких-то связанных с ним ресурсов (платёжных шлюзов, домена, который мы используем для создания коротких ссылок на отчёты в сервисе) мы проводили тщательный анализ и старались решить проблему.
Акт первый: как заблокировали запросы из Европы в Россию
Изначально мы использовали только один домен, Name-сервера которого располагались в России. Общение происходило примерно так:
![](https://habrastorage.org/getpro/habr/upload_files/86a/fdb/2d6/86afdb2d652354a5b629351d95a3f464.png)
Пользователь ищет topvisor.com, получает его IP и отправляет запрос непосредственно на наши серверы.
![](https://habrastorage.org/getpro/habr/upload_files/d4b/448/b7b/d4b448b7bc5bf88b86443a403202da1c.png)
Однако в 2022-м году недоступность сайта стала массовой, потому что в некоторых локациях заблокировали доступ по сети к хостингу, где располагался наш сайт. Чтобы быстро восстановить работу, мы подняли балансировщик в Европе и заказали новый домен topvisor.net — специально для иностранных пользователей. Настроили DNS, чтобы topvisor.net резолвился в IP зарубежного балансировщика, а topvisor.com — в IP российского. Домен для иностранных пользователей лежал рядом с Сокращателем ссылок tpv.sr. Сокращатель чаще всего используется для генерации так называемых Гостевых ссылок — коротких ссылок на отчёты о проделанной в сервисе работе. Теперь общение с сайтом происходило так:
![](https://habrastorage.org/getpro/habr/upload_files/eb0/512/ebf/eb0512ebfd58ff7c552dad77b4912a54.png)
Благодаря этому наши сервисы снова стали доступны из любой точки мира. Все данные пользователя были доступны и на новом домене, и его логин и пароль от основного сайта подходили к зеркалу, то есть создавать аккаунт с нуля не требовалось. Для поддержки мы написали инструкцию, что делать, если у пользователя не открывается основной домен: шаблон про зеркала и порядок действий по определению причины недоступности сайта и выполнению трассировки.
Акт второй: как заблокировали запросы из России в Европу
Весной 2024 года блокировки пошли с другой стороны. Мы столкнулись с недоступностью topvisor.net и tpv.sr для российских пользователей.
По трассировкам пакетов нашли конкретный IP, после которого в трассе шла «тишина». Маршрут пакетов по сети всегда лежал через него, несмотря на разные узлы-отправители. Для обхода проблемы мы решили использовать GeoDNS. Это такой же DNS, только дающий разные IP в зависимости от геолокации узла, запрашивающего адрес. Теперь схема работала так:
![](https://habrastorage.org/getpro/habr/upload_files/0c8/e06/486/0c8e064868d4f825b87bd46780ea0814.png)
Российским пользователям мы стали выдавать IP серверов в России, а зарубежным пользователям — IP за рубежом.
Акт третий: как Суринам заблокировал нам вообще всё на 46 дней
Для перехода к новому DNS настроили балансировщики на прослушку topvisor.net и tpv.sr. По неизвестной причине перед переходом на GeoDNS нужно сначала удалить старую зону. Первая мысль: «Что может пойти не так? Мы точно успеем перейти на новый DNS за время жизни кэша старых записей на узлах пользователей, и проблем с доступом точно не возникнет». Для уверенности переход был запланирован на выходные, когда онлайн небольшой.
В назначенный день была удалена старая зона, создана новая и перенесены DNS-записи. Все заняло около 5 минут. GeoDNS topvisor.net заработал почти сразу, а tpv.sr — нет. Через несколько минут мы получили большое число тикетов об этой проблеме. Пользователям необходимо было без промедлений отчитываться перед клиентами, а Гостевые ссылки — это самый удобный и прозрачный способ для этого.
Мы подождали распространения DNS записей сутки, как рекомендуется, но они так и не обновились. Когда мы написали нашему регистратору домена tpv.sr, оказалось, что они не имеют прямой доступ к Name-серверам для .sr — это домен верхнего уровня для Суринама. Чтобы изменить записи на их серверах, наш регистратор связывался со своим международным партнером. Пока они это делали, резолв tpv.sr был недоступен.
![](https://habrastorage.org/getpro/habr/upload_files/af2/53f/c83/af253fc8310cb681d24f2bc3272112f3.png)
Даунтайм tpv.sr составил 46 дней. За это время мы подняли новый домен tpvsr.com и дали пользователям его. Из этой ситуации мы извлекли урок, что лучше покупать домены .com или .ru, потому что к ним есть быстрый доступ. Однако по итогу домен tpv.sr всё равно вернули: уж слишком он красивый и подходит к нашему названию.
Финал
Когда tpv.sr снова заработал, мы выдохнули с облегчением, получили кучу благодарностей от пользователей, а наш генеральный директор прислал нам в подарок 5 суринамских долларов. Знаете такие рамочки с надписью «В СЛУЧАЕ НЕОБХОДИМОСТИ РАЗБИТЬ СТЕКЛО» из двухтысячных, где были всякие мелочи типа денег и маленьких бутылочек с алкоголем?
![](https://habrastorage.org/getpro/habr/upload_files/9c1/383/955/9c1383955ac36604e2ab6a53c84cbd64.jpg)
Дальнейшие перспективы нашего развития в этом направлении — масштабирование балансировщиков и настройка DNS Failover — механизма перестройки A-записей DNS при недоступности текущих серверов. Он поможет нам с исправлением сетевых проблем без вмешательства инженеров. Мы уверены, что проблемы недоступности некоторых доменов будут продолжаться и в будущем, но мы готовы с ними справиться! А ещё — писать письма в Суринам в непредвиденных случаях.