Зеркало (mirror) — точная копия ресурса, расположенная на отдельном сервере или домене. Используется для повышения доступности, ускорения загрузки в разных регионах и обеспечения отказоустойчивости при недоступности основного источника.
Как работает
Зеркало синхронизируется с источником через rsync, FTP или специализированный протокол репликации. Синхронизация может быть: полная (все файлы каждый раз), инкрементальная (только изменения), потоковая (в реальном времени). Пользователь перенаправляется на ближайшее зеркало через GeoDNS, HTTP-редирект или список зеркал на сайте.
В контексте баз данных зеркало — реплика: master принимает записи, read-реплики обслуживают SELECT-запросы. Распределение нагрузки чтения на реплики позволяет обслуживать в 5-10 раз больше одновременных читателей.
История
Концепция зеркал появилась с распространением FTP-серверов в 1980-90-х. Крупные проекты с открытым ПО (Linux, Apache) создавали сеть FTP-зеркал по всему миру: каждый университет или провайдер мог предоставить локальную копию. Это решало проблему перегрузки центрального сервера при росте популярности. Сегодня функцию зеркал для конечных пользователей выполняют CDN-сети, но зеркала репозиториев (Ubuntu, CentOS, CRAN) по-прежнему актуальны.
Зеркала пакетных репозиториев
Российские зеркала популярных репозиториев ускоряют установку пакетов:
# Зеркало Ubuntu (Яндекс)
deb http://mirror.yandex.ru/ubuntu focal main restricted
# Зеркало Debian (Selectel)
deb http://mirror.selectel.ru/debian bookworm main
# Проверить скорость зеркала
curl -o /dev/null -s -w "%{time_total}
" http://mirror.yandex.ru/ubuntu/ls-lR.gz
На российских VPS зеркало Яндекса или Selectel даёт скорость загрузки пакетов 50-100 МБ/с против 2-5 МБ/с от зарубежных источников.
Зеркало сайта для SEO и защиты
Зеркало сайта на другом домене создаётся для: защиты от DDoS (трафик переключается на зеркало при атаке на основной домен), региональной доступности (зеркало в РФ при заблокированном зарубежном сервере), резервного копирования с мгновенным переключением.
Зеркало и SEO: поисковики воспринимают зеркало как дублированный контент. Для ускорения доступа к сайту лучше использовать CDN с одним каноническим URL. Если зеркало необходимо — настройте rel=canonical или robots.txt с Disallow на зеркальном домене.
Зеркало Docker-реестра
Для ускорения pull образов в CI/CD и обхода лимитов Docker Hub настраивается локальное зеркало-proxy. В /etc/docker/daemon.json:
{"registry-mirrors": ["https://mirror.gcr.io", "https://registry.cn-hangzhou.aliyuncs.com"]}
Корпоративные зеркала с кешем полностью изолируют инфраструктуру от внешних реестров: Docker Hub недоступен — образы берутся из локального кеша.
На что обращать внимание
Устаревшее зеркало опаснее его отсутствия: пользователи получают устаревшие версии ПО с незакрытыми уязвимостями. Настройте мониторинг freshness: алерт если зеркало не синхронизировалось более N часов. Для высокодоступных систем используйте active-active конфигурацию с балансировкой нагрузки вместо зеркала как горячего резерва.