Перейти к основному содержимому

FAQ по CDN

Продолжит ли CDN работать при недоступности S3 в SPB-1? Как он ведет себя для закэшированных объектов и при cache miss?

Только если заранее включена опция отдачи контента из кэша при ошибках источника (Use Stale) — если источник отвечает ошибкой, CDN-серверы будут отдавать последнюю сохраненную в кэш версию контента с заголовком Cache: Stale. Можно выбрать, при каких ошибках отдавать кэш: error, timeout, invalid_header, http_500, http_502, http_503, http_504 и другие. CDN-серверы продолжат проверять доступность источника с каждым новым запросом и обновят кэш, когда источник восстановится.

Если объекта нет в кэше CDN-сервера и шилдинг-сервера, контент получить неоткуда — CDN-сервер вернет ошибку. Use Stale работает только для объектов, которые уже были закэшированы, — сайт может отображаться не полностью.

Поддерживается ли настройка резервного origin в другом регионе с автоматическим переключением при недоступности основного?

Да. Для CDN-ресурса можно добавить несколько источников контента — основные и бэкапные. Для каждого источника задаются вес (приоритет) и число неудачных попыток соединения, после которых CDN направит запросы к следующему источнику. Если все основные источники недоступны, CDN-сервер запросит контент у бэкапного источника. Когда основной источник с самым большим весом снова станет доступен, переключение обратно произойдет автоматически. Бэкапный источник должен содержать те же файлы, что и основной.

Как определяется отказ origin, сколько времени занимает переключение и возможны ли сброс кеша или массовые ошибки при восстановлении?

Отказ источника определяется по превышению таймаутов при обращении к источнику контента и числу неудачных попыток соединения. Таймаут задается отдельно для каждого этапа обращения к источнику (установка соединения, отправка запроса, получение ответа) — по умолчанию 10 секунд на этап. Число неудачных попыток (по умолчанию 10) настраивается для каждого источника. Если источник один, при превышении любого из таймаутов контент не будет доставлен — CDN-сервер вернет 504 Gateway Timeout и при новом запросе снова обратится к источнику.

Скорость переключения на резервный источник зависит от настроенных таймаутов и числа неудачных попыток. Переключение источников не сбрасывает кэш. Чтобы сгладить момент восстановления источника, используйте опцию Use Stale с параметром updating — она позволяет отдавать устаревший закэшированный ответ, пока файлы в кэше обновляются.

Какие компоненты CDN и его управляющей инфраструктуры являются общими для регионов и могут стать единой точкой отказа?

CDN — распределенная сеть кэширующих CDN-серверов с точками присутствия в 30+ городах: файл кэшируется на том сервере, который получил запрос. Недоступность отдельного региона или группы регионов не останавливает отдачу контента из остальных точек сети. Файл кэшируется на том CDN-сервере, который получил запрос, — доступность самого источника контента на отдачу закэшированных объектов не влияет.

Общие для всей сети компоненты это шилдинг-серверы и авторитетные DNS-серверы. Шилдинг-серверы кэшируют все файлы, которые запрашивают CDN-серверы, и снижают нагрузку на источник контента. Если шилдинг-сервер недоступен, а файла нет в кэше CDN-сервера, контент получить не удастся. Авторитетные DNS-серверы обслуживают адреса CDN-ресурса. Их недоступность затрагивает отдачу контента во всех регионах.

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