Виктор Никитин
2 365
Блоги

Решение: что делать, если ваш сервис на Amazon заблокирован Роскомнадзором

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

Поделиться

В избранное

В избранном

Причина проблем. Многим известно, что в попытке заблокировать Telegram Роскомнадзор начал веерно блокировать IP-адреса крупных мировых хостингов, которые Telegram использовал для восстановления работы. Самые крупные из них — Amazon (AWS) и Google Cloud. Многие российские и зарубежные сервисы, использовавшие эти хостинги, оказались заблокированы и стали не доступными через большинство российских провайдеров связи.

Масштаб проблемы. Заблокированными оказались 18 млн IP-адресов и 34 тысяч российских сайтов. Статистику блокировки IP-адресов и числа пострадавших российских сервисов ведёт Филипп Кулин на сайте usher2.club.

Число заблокированных IP-адресов по дням (выгрузка 26 апреля, 12:00)

Статистика по Amazon:

  • Заблокировано подсетей: 116 из 743 (16%).
  • Число IP-адресов в заблокированных подсетях: 12,8 млн из 32,3 млн (40%).
  • Дата-центров с заблокированными подсетями: 15 из 20 (75%).

Заблокировано большинство старых дата-центров с большим набором сервисов. Пять новых небольших дата-центров полностью не заблокированы. Ещё три новых дата-центра имеют по одной заблокированной подсети.

Как это затронуло нас. Наша облачная бизнес-платформа Bpium оказалась частично заблокирована. Сначала у части клиентов перестали скачиваться файлы, далее начались перебои в работе API. У некоторых клиентов сервис нестабильно работал в течении трёх дней.

А из-за перенастройки у нас были кратковременные даунтаймы по несколько минут, суммарно около одного-двух часов. Как выяснилось позже, некоторые наши серверы попадали в заблокированные подсети. Казалось бы, нужно всего лишь переехать на серверы с незаблокированными адресами, но не всё так просто. Есть две проблемы: особенность работы Amazon и неясность, куда переезжать.

Особенность работы в Amazon

Одно из главных преимуществ Amazon оказалось главной проблемой. Наш сервис использует динамическое облако: число серверов автоматически увеличивается при увеличении нагрузки и уменьшается, когда её нет. Это позволяет сохранить высокий уровень работы сервиса без избыточных расходов. Такой подход используют многие облачные сервисы в Amazon.

Осознание проблемы. Проблема в том, что новые серверы создаются на IP-адресах в разных подсетях, порой в заблокированных Роскомнадзором. К сожалению, Amazon даёт возможность выбирать лишь макроподсеть, внутри которой множество как заблокированных, так и рабочих подсетей.

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

Выбор решения. Нам потребовалось время, чтобы понять причину несистематичных сбоев у разных клиентов. В этом нам помог Telegram-бот @rkn_block_check_bot. Он позволяет проверить IP-адрес на предмет блокировки Роскомнадзором. Осознав проблему, мы решили попытаться найти незаблокированный Роскомнадзором дата-центр в Amazon (их более 20).

Формат ответа бота на запрос по IP-адресу

Совет: с помощью бота @rkn_block_check_bot вы можете проверить, попадает ли ваш сервис в заблокированные подсети. Или проверить, почему не работает какой-либо сторонний сервис.

Поиск незаблокированного дата-центра Amazon

Первым делом мы нашли список IP-адресов всех дата-центров Amazon — миллионы IP-адресов. Встала задача проверить все диапазоны, чтобы найти дата-центр с незаблокированными подсетями.

Мы обратились к Дмитрию Москину, автору Telegram-бота, с просьбой проверить список IP-адресов Amazon по базе заблокированных адресов. Дмитрий согласился помочь, провёл анализ и сделал документ с полным списком IP-адресов Amazon, разделённым по дата-центрам.

Совет: используя этот список, облачные сервисы могут выбрать дата-центр для работы в зависимости от того, какие сервисы Amazon используют. Дмитрий, спасибо!

Переезд в новый дата-центр Amazon

Выбрав новый дата-центр, мы попытались клонировать наше решение. Оказалось, Amazon не даёт возможности клонировать настройки и ресурсы между дата-центрами. Всё облако пришлось создавать с нуля и мигрировать данные. Воссоздание инфраструктуры нашего облака заняло у нас шесть часов.

Совет: для переноса файлов между файловыми хранилищами (Amazon S3) дата-центров мы использовали сервис Flexify.io, который посоветовали коллеги из Mail.Ru Group. Для переноса баз данных RDS можно воспользоваться функцией создания «Read replica» в другом регионе, а позже отвязать её от мастера («Promote read replica»), благодаря этому можно обойтись даунтаймом в несколько секунд.

Поиск альтернативного хостинга

Анализ российского рынка. Во время сбоев мы активно изучали российские хостинги. К сожалению, на нашем рынке мы не нашли ни одного близкого аналога. Российские хостинги на текущем этапе развития предоставляют «голые» серверы, а не готовую инфраструктуру и сервисы. Воссоздать столь гибкое и управляемое облако требует много времени, знаний и больших ресурсов. Контролировать и управлять таким решением сложно, вероятность рисков сбоев высока.

Надежда на светлое будущее. Из российских мы нашли лишь один хостинг, который следует пути развития IaaS — инфраструктуры близкой к идеологии Amazon. Это решение от Mail.Ru Group. Функционально сервис ещё слаб и не подошёл нам, так как ещё не позволяет использовать сертификаты безопасности на балансировщике.

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

#блокировки #amazone #роскомнадзор

{ "author_name": "Виктор Никитин", "author_type": "self", "tags": ["\u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0438","amazone","\u0440\u043e\u0441\u043a\u043e\u043c\u043d\u0430\u0434\u0437\u043e\u0440"], "comments": 17, "likes": 15, "favorites": 5, "is_advertisement": false, "section_name": "blog", "id": "37100", "is_wide": "" }
{ "is_needs_advanced_access": false }

Комментарии Комм.

Популярные

По порядку

0

Прямой эфир

Подписаться на push-уведомления
[ { "id": 1, "label": "100%×150_Branding_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox_method": "createAdaptive", "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfl" } } }, { "id": 2, "label": "1200х400", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfn" } } }, { "id": 3, "label": "240х200 _ТГБ_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fizc" } } }, { "id": 4, "label": "240х200_mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "flbq" } } }, { "id": 5, "label": "300x500_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfk" } } }, { "id": 6, "label": "1180х250_Interpool_баннер над комментариями_Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "bugf", "p2": "ffyh" } } }, { "id": 7, "label": "Article Footer 100%_desktop_mobile", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjxb" } } }, { "id": 8, "label": "Fullscreen Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjoh" } } }, { "id": 9, "label": "Fullscreen Mobile", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjog" } } }, { "id": 10, "disable": true, "label": "Native Partner Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyb" } } }, { "id": 11, "disable": true, "label": "Native Partner Mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyc" } } }, { "id": 12, "label": "Кнопка в шапке", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "p1": "bscsh", "p2": "fdhx" } } }, { "id": 13, "label": "DM InPage Video PartnerCode", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox_method": "createAdaptive", "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "bugf", "p2": "flvn" } } }, { "id": 14, "label": "Yandex context video banner", "provider": "yandex", "yandex": { "block_id": "VI-223676-0", "render_to": "inpage_VI-223676-0-1104503429", "adfox_url": "//ads.adfox.ru/228129/getCode?pp=h&ps=bugf&p2=fpjw&puid1=&puid2=&puid3=&puid4=&puid8=&puid9=&puid10=&puid21=&puid22=&puid31=&puid32=&puid33=&fmt=1&dl={REFERER}&pr=" } }, { "id": 15, "label": "Плашка на главной", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "byudx", "p2": "ftjf" } } }, { "id": 16, "label": "Кнопка в шапке мобайл", "provider": "adfox", "adaptive": [ "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "byzqf", "p2": "ftwx" } } }, { "id": 17, "label": "Stratum Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fzvb" } } }, { "id": 18, "label": "Stratum Mobile", "provider": "adfox", "adaptive": [ "tablet", "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fzvc" } } } ]