Теория
CDN
CDN (Content Delivery Network) — распределённый edge-слой PoP'ов с кэшем и compute близко к пользователю. Цели:
- снизить RTT и TTFB;
- разгрузить origin от повторяющихся чтений;
- абсорбировать локальные сбои и DDoS.
Путь запроса: клиент → DNS/Anycast → edge PoP → (cache hit → ответ) или (cache miss → upper cache tier → origin).
Anycast (RFC 4786)
Anycast — один IP-префикс анонсируется из нескольких локаций; трафик попадает в топологически ближайший узел по BGP best-path. Замечания:
- "ближайший" — по AS_PATH/IGP, не по geo;
- путь определяется BGP-политиками транзитов, а не централизованным алгоритмом;
- асимметрия маршрутов возможна (входящий и исходящий идут разными путями).
Anycast лучше подходит к stateless-сервисам (DNS, HTTP-edge с кешем). Для long-lived stateful-сессий смена маршрута может привести поток в другой PoP — нужны session affinity, replication/draining состояния или дизайн без жёсткой привязки к одному PoP.
Эксплуатационные ограничения
- нет гарантии равномерного load-balancing между PoP — распределение зависит от eyeball-провайдеров;
- инциденты нужно разбирать по AS/региону, не только глобально;
- происходят BGP-induced flaps при route change у транзитов.
Практика
1. Проверьте DNS-поведение и TTL
dig +nocmd example.com A +noall +answer
dig +nocmd example.com AAAA +noall +answer
Смотрите:
- TTL;
- используемые edge IP;
- согласованность ответов между резолверами.
2. Проверьте путь до anycast IP из разных точек
mtr -rwzbc 50 <edge-ip>
traceroute <edge-ip>
Сравнивайте:
- задержку;
- AS-path/узлы;
- стабильность маршрута по регионам.
3. Проверьте cache hit/miss на edge
curl -I https://example.com/static/app.js
curl -I https://example.com/static/app.js
Проверьте заголовки CDN-платформы (cache-status/age и эквиваленты), чтобы убедиться, что объект реально кэшируется.
4. Протестируйте деградационный сценарий origin
Минимальный сценарий:
- ограничить доступность части origin-инстансов в test/stage;
- проверить, что edge продолжает обслуживать горячий контент из кэша;
- зафиксировать поведение latency/error-rate по регионам.
Вывод
CDN + Anycast дают выигрыш по latency и resiliency, но это не "самонастраивающаяся магия".
Нужны:
- корректная cache-стратегия,
- явная защита origin,
- региональная сетево-прикладная observability,
- регулярная проверка деградационных сценариев.
Ссылки
- RFC 4786 — Operation of Anycast Services
- Cloudflare Reference Architecture: CDN
- Cloudflare Learning Center: Anycast network