Миграция в Yandex Cloud CDN из стороннего CDN-провайдера
- Схема решения
- Перед началом работы
- Подключитесь к провайдеру Cloud CDN
- Создайте CNAME-запись поддомена для нового CDN-ресурса
- Добавьте TLS-сертификат в Yandex Certificate Manager
- Создайте CDN-ресурс в Cloud CDN
- Перенастройте ваш сайт на использование нового CDN-ресурса
- Добавьте дополнительный домен к CDN-ресурсу в Cloud CDN
Если ваш динамический сайт использует сторонний CDN-ресурс для предоставления пользователям доступа к статическому контенту, вы можете бесшовно перейти на использование Yandex Cloud CDN. В данном руководстве описаны шаги, которые позволят выполнить такой переход, сохранив доступность вашего контента на протяжении всего процесса перехода.
Схема решения
Для бесшовного перехода вы создадите в Yandex Cloud CDN новый CDN-ресурс, использующий тот же источник, который использует сторонний CDN-ресурс. Для нового CDN-ресурса вы создадите новый поддомен, а для домена второго уровня и всех его поддоменов третьего уровня выпустите новый TLS-сертификат в Yandex Certificate Manager.
Убедившись в работоспособности нового CDN-ресурса, на вашем динамическом сайте вы перенастроите ссылки на статический контент, перенаправив их на новый CDN-ресурс. Затем вы удалите сторонний CDN-ресурс, добавив использовавшееся им доменное имя как дополнительное в CDN-ресурс Yandex Cloud CDN.
В процессе перехода со стороннего CDN-ресурса на CDN-ресурс в Cloud CDN будет обеспечена непрерывная доступность статического контента для вашего динамического сайта.
Чтобы перенести CDN-ресурс в Yandex Cloud CDN:
- Подготовьте облако к работе.
- Подключитесь к провайдеру Cloud CDN.
- Создайте CNAME-запись поддомена для нового CDN-ресурса.
- Добавьте TLS-сертификат в Yandex Certificate Manager.
- Создайте CDN-ресурс в Cloud CDN.
- Перенастройте ваш сайт на использование нового CDN-ресурса.
- Добавьте дополнительный домен к CDN-ресурсу в Cloud CDN.
Перед началом работы
Зарегистрируйтесь в Yandex Cloud и создайте платежный аккаунт:
- Перейдите в консоль управления
, затем войдите в Yandex Cloud или зарегистрируйтесь. - На странице Yandex Cloud Billing
убедитесь, что у вас подключен платежный аккаунт, и он находится в статусеACTIVE
илиTRIAL_ACTIVE
. Если платежного аккаунта нет, создайте его и привяжите к нему облако.
Если у вас есть активный платежный аккаунт, вы можете создать или выбрать каталог, в котором будет работать ваша инфраструктура, на странице облака
Подробнее об облаках и каталогах.
Доступ к настройкам DNS
Убедитесь, что у вас есть доступ к настройкам DNS на сайте компании, которая предоставляет вам услуги DNS-хостинга. Обычно это компания-регистратор вашего домена.
Предполагается, что в вашем личном кабинете DNS-провайдера создана публичная доменная зона, соответствующая вашему доменному имени (например, example.com.
), и в этой публичной зоне существует CNAME-запись для вашего текущего CDN-поддомена (например, cdn.example.com
), указывающая на стороннего CDN-провайдера.
Необходимые платные ресурсы
В стоимость поддержки создаваемой CDN-инфраструктуры входит плата за исходящий трафик с CDN-серверов (см. тарифы Cloud CDN).
Подключитесь к провайдеру Cloud CDN
Создать в каталоге CDN-ресурс можно только в том случае, если этот каталог подключен к CDN-провайдеру Cloud CDN. При подключении к CDN-провайдеру вашему каталогу будет присвоено уникальное значение cname
, которое необходимо для создания CNAME-записей для поддоменов, используемых создаваемыми в этом каталоге CDN-ресурсами.
Чтобы подключить каталог к CDN-провайдеру и получить значение cname
:
-
В консоли управления
выберите каталог, который нужно подключить к CDN-провайдеру. -
В списке сервисов выберите Cloud CDN.
-
Если CDN-провайдер еще не активирован, нажмите кнопку Подключиться к провайдеру. Подключение произойдет автоматически.
Если кнопки Подключиться к провайдеру нет и вам доступно создание ресурсов и групп источников — провайдер уже активирован.
-
Нажмите кнопку Создать ресурс и в блоке Доменные имена для раздачи контента скопируйте значение
cname
, необходимое для создания ресурсной записи нового поддомена для CDN-ресурса. -
Нажмите кнопку Отменить. CDN-ресурс вы создадите позднее.
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
-
Подключитесь к провайдеру:
yc cdn provider activate --type gcore
-
Получите значение CNAME-записи для CDN-ресурса:
yc cdn resource get-provider-cname
Результат:
cname: cl-ms6*****90.edgecdn.ru folder_id: b1gt6g8ht345********
Сохраните полученное значение CNAME-записи, оно понадобится на следующем шаге.
Создайте CNAME-запись поддомена для нового CDN-ресурса
Для бесшовного переключения вашего сайта на новый CDN-ресурс вам понадобится новый CDN-поддомен. В публичной доменной зоне, к которой относится доменное имя вашего сайта, создайте CNAME-запись для нового CDN-поддомена, который будет использоваться новым CDN-ресурсом:
- Имя записи: имя нового CDN-поддомена. Например:
cdn-new.example.com.
. - Тип записи:
CNAME
. - Значение записи: полученное ранее значение
cname
для вашего каталога.
Если домен вашего сайта делегирован Yandex Cloud DNS, для создания CNAME-записи воспользуйтесь инструкцией. В остальных случаях воспользуйтесь документацией вашего DNS-провайдера или обратитесь в его службу технической поддержки.
Добавьте TLS-сертификат в Yandex Certificate Manager
Чтобы обеспечить шифрование данных при обращении к новому CDN-ресурсу, добавьте в сервис Yandex Certificate Manager новый TLS-сертификат от Let's Encrypt® для домена вашего сайта и всех его поддоменов (wildcard-сертификат):
-
Создайте новый TLS-сертификат:
Консоль управленияCLI- В консоли управления
выберите каталог, в который будет добавлен сертификат. - В списке сервисов выберите Certificate Manager.
- Нажмите кнопку Добавить сертификат и выберите Сертификат от Let's Encrypt.
- В открывшемся окне в поле Имя введите имя сертификата. Например:
my-cdn-certificate
. - В поле Домены задайте маску для вашего домена и его поддоменов. Например:
*.example.com
, гдеexample.com
— доменное имя вашего сайта. - В поле Тип проверки выберите
DNS
. - Нажмите кнопку Создать.
-
Запросите новый wildcard-сертификат. Для этого выполните команду:
yc certificate-manager certificate request \ --name my-cdn-certificate \ --domains "*.<доменное_имя_вашего_сайта>"
Где:
--name
— имя сертификата. Например:my-cdn-certificate
.--domains
— маска для вашего домена и его поддоменов. Например:*.example.com
, гдеexample.com
— доменное имя вашего сайта.
Результат:
id: fpqba7lpgmp7******** folder_id: b1gt6g8ht345******** created_at: "2025-02-09T20:41:05.916923798Z" name: my-cdn-certificate type: MANAGED domains: - '*.example.com' status: VALIDATING updated_at: "2025-02-09T20:41:05.916923798Z"
Сохраните идентификатор запрошенного сертификата (значение поля
id
) — он понадобится на последующих шагах.Подробнее о команде
yc certificate-manager certificate request
читайте в справочнике CLI.
- В консоли управления
-
Пройдите процедуру подтверждения прав на домен:
Консоль управленияCLI-
В консоли управления
выберите каталог, в который был добавлен сертификат. -
В списке сервисов выберите Certificate Manager.
-
В списке сертификатов выберите сертификат, для которого необходимо пройти процедуру проверки.
-
В открывшемся окне в блоке Проверка прав на домены будет указана информация для прохождения процедуры проверки прав.
На вкладке CNAME-запись скопируйте и сохраните значения полей Имя и Значение. Они понадобятся для создания CNAME-записи.
-
Получите значения CNAME-записи, необходимые для прохождения процедуры проверки прав на домен. Для этого выполните команду, указав сохраненный ранее идентификатор сертификата:
yc certificate-manager certificate get <идентификатор_сертификата> \ --full \ --format=json | \ jq -r ".challenges[].dns_challenge"
Результат:
{ "name": "_acme-challenge.example.com.", "type": "CNAME", "value": "fpqba7lpgmp7********.cm.yandexcloud.net." } { "name": "_acme-challenge.example.com.", "type": "TXT", "value": "oRnpmIJau5SWFDYqKwwUJMn-61HHdulvqk7********" }
Сохраните значения полей
name
иvalue
для типа записиCNAME
. Они понадобятся для создания CNAME-записи.Подробнее о команде
yc certificate-manager certificate get
читайте в справочнике CLI.
-
-
Используя сохраненные на предыдущем шаге значения, создайте в публичной доменной зоне доменного имени вашего сайта CNAME-запись для подтверждения ваших прав на домен:
Если домен вашего сайта делегирован Yandex Cloud DNS, для создания CNAME-записи воспользуйтесь инструкцией. В остальных случаях воспользуйтесь документацией вашего DNS-провайдера или обратитесь в его службу технической поддержки.
Примечание
Чтобы DNS-проверка прав на домен по записи
CNAME
прошла успешно, для поддомена_acme-challenge
проверяемого доменного имени не должно быть других ресурсных записей, кромеCNAME
. Например, для имени_acme-challenge.example.com.
должна существовать только CNAME-запись и не должно быть TXT-записи.
Дождитесь успешного прохождения проверки прав на домен, в результате которого созданный wildcard-сертификат будет выпущен и перейдет в статус Issued
.
Проверить статус сертификата можно на странице сертификата в консоли управленияyc certificate-manager certificate get <идентификатор_сертификата>
.
Создайте CDN-ресурс в Cloud CDN
В данном разделе приведена инструкция по созданию CDN-ресурса с типом источника Сервер
. Если в качестве источника вы используете бакет Yandex Object Storage или балансировщик Yandex Application Load Balancer, при создании CDN-ресурса воспользуйтесь инструкцией Создание ресурса.
Создайте новый CDN-ресурс в Yandex Cloud CDN:
-
В консоли управления
выберите каталог, в котором вы будете создавать CDN-ресурс. -
В списке сервисов выберите Cloud CDN.
-
Нажмите Создать ресурс.
-
В блоке Контент укажите:
- Запрос контента —
Из одного источника
. - Тип источника —
Сервер
. - В поле Доменное имя источника укажите доменное имя или публичный IP-адрес вашего источника статического контента.
- Запрос контента —
-
В блоке Доменные имена для раздачи контента в поле Доменное имя укажите новое доменное имя, которое вы присвоили вашему новому CDN-ресурсу. Например:
cdn-new.example.com
. -
В блоке Дополнительно:
- В поле Протокол для источников выберите протокол, по которому CDN-ресурс будет взаимодействовать с источником. Если вы выбираете варианты
HTTPS
илиКак у клиента
, убедитесь, что ваш источник поддерживает HTTPS. - В поле Переадресация клиентов выберите
Не использовать
. - В поле Тип сертификата выберите
Сертификат из Certificate Manager
и в появившемся списке выберите созданный ранее сертификат, например:my-cdn-certificate
. - В поле Заголовок Host выберите
Основное доменное имя
.
- В поле Протокол для источников выберите протокол, по которому CDN-ресурс будет взаимодействовать с источником. Если вы выбираете варианты
-
Нажмите Создать.
-
Выполните команду:
yc cdn resource create <имя_поддомена> \ --origin-custom-source '<IP-адрес_или_доменное_имя_источника>' \ --origin-protocol '<протокол_для_источника>' \ --cert-manager-ssl-cert-id <идентификатор_сертификата>
Где:
-
<имя_поддомена>
— доменное имя, для которого ранее была создана CNAME-запись и которое будет использоваться новым CDN-ресурсом. Например:cdn-new.example.com
. -
--origin-custom-source
— доменное имя или публичный IP-адрес вашего источника статического контента. -
--origin-protocol
— протокол, который будет использоваться для взаимодействия CDN-ресурса с источником. Возможные значения:http
— использовать протокол HTTP.https
— использовать протокол HTTPS.match
— использовать такое же значение, как и у заголовкаHost
в запросе клиента к CDN.
Выбирая вариант
https
илиmatch
, убедитесь, что ваш источник поддерживает HTTPS. -
--cert-manager-ssl-cert-id
— идентификатор TLS-сертификата, сохраненный ранее при его создании.
Результат
id: bc8cfqtx2mkx******** folder_id: b1gt6g8ht345******** cname: cdn-new.example.com created_at: "2025-02-10T07:42:24.920162Z" updated_at: "2025-02-10T07:42:24.920187Z" active: true options: edge_cache_settings: enabled: true default_value: "345600" query_params_options: ignore_query_string: enabled: true value: true stale: enabled: true value: - error - updating origin_group_id: "352269" origin_group_name: Origins for cdn-new.example.com (302798) origin_protocol: HTTP ssl_certificate: type: CM status: READY data: cm: id: fpqnetjumkhn********
Сохраните идентификатор созданного CDN-ресурса (значение поля
id
) — он понадобится позднее.Подробнее о команде
yc cdn resource create
читайте в справочнике CLI. -
Важно
После создания CDN-ресурса может пройти до 15 минут, прежде чем ресурс фактически заработает.
Прежде чем приступать к следующим шагам, убедитесь, что вновь созданный CDN-ресурс полностью работоспособен.
Перенастройте ваш сайт на использование нового CDN-ресурса
После того как вы создали в Cloud CDN новый CDN-ресурс и убедились в его работоспособности, вы можете переходить к перенастройке вашего сайта и удалению старого CDN-ресурса.
Перенаправьте ссылки с динамического сайта
Перенаправьте на новый CDN-поддомен ссылки на статический контент, которые генерирует ваш динамический сайт. Например, заменив в генерируемых ссылках имя домена с cdn.example.com
на cdn-new.example.com
. Это действие должен выполнить администратор вашего динамического сайта.
Произведя все необходимые изменения, убедитесь, что ссылки на статический контент, генерируемые вашим сайтом, работают, а контент — доступен. Также убедитесь, что на старом CDN-ресурсе прекратился исходящий трафик: для этого воспользуйтесь инструментами статистики и мониторинга стороннего CDN-провайдера.
На этом этапе ваш динамический сайт полностью перешел на использование Yandex Cloud CDN.
Измените CNAME-запись исходного CDN-поддомена
Чтобы исходный CDN-поддомен вашего сайта продолжил работать на новом CDN-ресурсе Cloud CDN, замените значение ресурсной CNAME-записи исходного поддомена на значение, полученное ранее при подключении к провайдеру Cloud CDN:
- Имя записи: имя исходного CDN-поддомена. Например:
cdn.example.com.
. - Тип записи:
CNAME
. - Значение записи: полученное ранее значение
cname
для вашего каталога.
Если домен вашего сайта делегирован Yandex Cloud DNS, для изменения CNAME-записи воспользуйтесь инструкцией. В остальных случаях воспользуйтесь документацией вашего DNS-провайдера или обратитесь в его службу технической поддержки.
Удалите сторонний CDN-ресурс
Убедившись, что исходный CDN-ресурс у стороннего CDN-провайдера перестал генерировать исходящий трафик, удалите этот CDN-ресурс. Для этого воспользуйтесь документацией стороннего CDN-провайдера или обратитесь в его службу технической поддержки.
Добавьте дополнительный домен к CDN-ресурсу в Cloud CDN
После удаления стороннего CDN-ресурса, использовавшего исходный CDN-поддомен, вы можете добавить этот освободившийся поддомен к вашему новому CDN-ресурсу в Cloud CDN в качестве дополнительного домена. Для этого:
- В консоли управления
выберите каталог, в котором расположен ваш CDN-ресурс. - В списке сервисов выберите Cloud CDN.
- В строке с созданным ранее CDN-ресурсом нажмите значок
и выберите Редактировать. - В блоке Доменные имена для раздачи контента нажмите кнопку
Добавить доменное имя и в появившемся поле введите доменное имя, оставшееся от прежнего CDN-ресурса. Например:cdn.example.com
. - Нажмите кнопку Сохранить.
-
Выполните команду:
yc cdn resource update <идентификатор_CDN-ресурса> \ --secondary-hostnames '<прежний_CDN-поддомен>'
Где:
<идентификатор_CDN-ресурса>
— сохраненный ранее идентификатор CDN-ресурса Cloud CDN.--secondary-hostnames
— освободившееся после удаления стороннего CDN-ресурса доменное имя. Например:cdn.example.com
.
Важно
Команда удалит все дополнительные домены, которые до этого были привязаны к CDN-ресурсу.
Чтобы привязать дополнительный домен к CDN-ресурсу, уже имеющему привязанные дополнительные домены, укажите в параметре
--secondary-hostnames
через запятую все дополнительные домены, которые должны быть привязаны к ресурсу.Результат
id: bc845trezddi******** folder_id: b1gt6g8ht345******** cname: cdn-new.example.com created_at: "2025-01-25T21:47:21.181871Z" updated_at: "2025-02-10T17:10:37.511453Z" active: true options: edge_cache_settings: enabled: true default_value: "345600" query_params_options: ignore_query_string: enabled: true value: true stale: enabled: true value: - error - updating ignore_cookie: enabled: true secondary_hostnames: - cdn.example.com origin_group_id: "350569" origin_group_name: Origins for cdn-new.example.com (301532) origin_protocol: HTTP ssl_certificate: type: CM status: READY
Подробнее о команде
yc cdn resource update
читайте в справочнике CLI.
Обновление настроек CDN-ресурса может занять до 15 минут, после чего ваш новый CDN-ресурс станет доступен по обоим доменным именам: cdn-new.example.com
и cdn.example.com
.