Yandex Cloud
  • Сервисы
  • Решения
  • Почему Yandex Cloud
  • Сообщество
  • Тарифы
  • Документация
  • Связаться с нами
Подключиться
Language / Region
© 2022 ООО «Яндекс.Облако»
Yandex Application Load Balancer
  • Начало работы
  • Пошаговые инструкции
    • Все инструкции
    • Целевые группы
      • Создать целевую группу
      • Изменить целевую группу
      • Удалить целевую группу
    • Группы бэкендов
      • Создать группу бэкендов
      • Изменить группу бэкендов
      • Удалить группу бэкендов
    • HTTP-роутеры
      • Создать HTTP-роутер для HTTP-трафика
      • Создать HTTP-роутер для gRPC-трафика
      • Изменить HTTP-роутер
      • Удалить HTTP-роутер
    • L7-балансировщики
      • Создать L7-балансировщик
      • Изменить L7-балансировщик
      • Посмотреть статистику L7-балансировщика
      • Посмотреть логи L7-балансировщика
      • Получить идентификатор лог-группы L7-балансировщика
      • Остановить и запустить L7-балансировщик
      • Удалить L7-балансировщик
    • Ingress-контроллер для Managed Service for Kubernetes
      • Установить Ingress-контроллер
      • Создать или изменить ресурсы по конфигурации
  • Практические руководства
    • Организация виртуального хостинга
    • Создание балансировщика с защитой от DDoS
    • Интеграция L7-балансировщика с CDN и Object Storage
    • Сине-зеленое и канареечное развертывание версий сервиса
    • Терминирование TLS-соединений
    • Запись логов балансировщика в PostgreSQL
  • Концепции
    • Обзор
    • Балансировщики нагрузки
    • HTTP-роутеры
    • Группы бэкендов
    • Целевые группы
    • Квоты и лимиты
  • Инструменты
    • Ingress Controller для Managed Service for Kubernetes
      • Обзор
      • Принципы работы
      • Группы безопасности
      • Сервисный аккаунт
  • Управление доступом
  • Правила тарификации
  • Справочник API
    • Аутентификация в API
    • gRPC (англ.)
      • Overview
      • BackendGroupService
      • HttpRouterService
      • LoadBalancerService
      • TargetGroupService
      • VirtualHostService
      • OperationService
    • REST (англ.)
      • Overview
      • BackendGroup
        • Overview
        • addBackend
        • create
        • delete
        • get
        • list
        • listOperations
        • removeBackend
        • update
        • updateBackend
      • HttpRouter
        • Overview
        • create
        • delete
        • get
        • list
        • listOperations
        • update
      • LoadBalancer
        • Overview
        • addListener
        • addSniMatch
        • create
        • delete
        • get
        • getTargetStates
        • list
        • listOperations
        • removeListener
        • removeSniMatch
        • start
        • stop
        • update
        • updateListener
        • updateSniMatch
      • TargetGroup
        • Overview
        • addTargets
        • create
        • delete
        • get
        • list
        • listOperations
        • removeTargets
        • update
      • VirtualHost
        • Overview
        • create
        • delete
        • get
        • list
        • removeRoute
        • update
        • updateRoute
  • Справочник Ingress-контроллера
    • Обзор
    • Ingress
    • HttpBackendGroup
    • Service
  • Справочник логов
  1. Практические руководства
  2. Терминирование TLS-соединений

Терминирование TLS-соединений

Статья создана
Yandex Cloud
  • Подготовьте облако к работе
    • Необходимые платные ресурсы
  • Создайте облачную сеть
  • Зарезервируйте статический публичный IP-адрес
  • Создайте группы безопасности
  • Импортируйте TLS-сертификат сайта в Certificate Manager
  • Создайте группу ВМ для сайта
  • Загрузите файлы сайта на ВМ
  • Создайте группу бэкендов
  • Создайте и настройте HTTP-роутер
  • Создайте L7-балансировщик
  • Проверьте работу хостинга
  • Удалите созданные ресурсы

L7-балансировщики Application Load Balancer могут терминировать TLS-соединения: отправлять клиентам сертификаты, дешифровать входящий трафик для отправки бэкендам и шифровать ответы бэкендов для отправки клиентам. Сценарий рассказывает, как настроить балансировщик, чтобы он терминировал TLS-соединения с помощью сертификата из Certificate Manager и перенаправлял HTTP-запросы на HTTPS.

В качестве примера в сценарии используется доменное имя my-site.com.

Чтобы создать виртуальный хостинг:

  1. Подготовьте облако к работе.
  2. Создайте облачную сеть.
  3. Зарезервируйте статический публичный IP-адрес.
  4. Создайте группы безопасности.
  5. Импортируйте TLS-сертификат сайта в Certificate Manager.
  6. Создайте группу ВМ для сайта.
  7. Загрузите файлы сайта на ВМ.
  8. Создайте группу бэкендов.
  9. Создайте и настройте HTTP-роутер.
  10. Создайте L7-балансировщик.
  11. Проверьте работу хостинга.

Если созданные ресурсы вам больше не нужны, удалите их.

Подготовьте облако к работе

Перед работой нужно зарегистрироваться в Yandex Cloud и создать платежный аккаунт:

  1. Перейдите в консоль управления, затем войдите в Yandex Cloud или зарегистрируйтесь, если вы еще не зарегистрированы.
  2. На странице биллинга убедитесь, что у вас подключен платежный аккаунт, и он находится в статусе ACTIVE или TRIAL_ACTIVE. Если платежного аккаунта нет, создайте его.

Если у вас есть активный платежный аккаунт, вы можете создать или выбрать каталог, в котором будет работать ваша инфраструктура, на странице облака.

Подробнее об облаках и каталогах.

Необходимые платные ресурсы

В стоимость поддержки виртуального хостинга входят:

  • плата за постоянно запущенные виртуальные машины (см. тарифы Yandex Compute Cloud);
  • плата за использование публичного статического IP-адреса (см. тарифы Yandex Virtual Private Cloud).

Создайте облачную сеть

Все ресурсы, созданные в сценарии, будут относиться к одной облачной сети.

Чтобы создать сеть:

Консоль управления
  1. В консоли управления выберите сервис Virtual Private Cloud.
  2. Нажмите кнопку Создать сеть.
  3. Укажите Имя сети: mysite-network.
  4. В поле Дополнительно выберите опцию Создать подсети.
  5. Нажмите кнопку Создать сеть.

Зарезервируйте статический публичный IP-адрес

Для работы виртуального хостинга потребуется статический публичный IP-адрес, который будет назначен L7-балансировщику.

Чтобы зарезервировать адрес:

Консоль управления
  1. В консоли управления выберите сервис Virtual Private Cloud.
  2. Откройте вкладку IP-адреса. Нажмите кнопку Зарезервировать адрес.
  3. В открывшемся окне выберите зону доступности ru-central1-a. Нажмите кнопку Зарезервировать.

Создайте группы безопасности

Примечание

Группы безопасности находятся на стадии Preview. Если они недоступны в вашей сети, для ресурсов будет разрешен весь входящий и исходящий трафик, и дополнительной настройки не требуется.

Группы безопасности содержат правила, которые разрешают балансировщику получать входящий трафик и отправлять его на ВМ, а ВМ — получать этот трафик. В сценарии будут созданы две группы безопасности: для балансировщика и для всех ВМ.

Чтобы создать группы безопасности:

Консоль управления
  1. В консоли управления выберите сервис Virtual Private Cloud.

  2. Откройте вкладку Группы безопасности.

  3. Создайте группу безопасности для балансировщика:

    1. Нажмите кнопку Создать группу.

    2. Укажите Имя группы: mysite-sg-balancer.

    3. Выберите Сеть mysite-network.

    4. В блоке Правила создайте следующие правила по инструкции под таблицей:

      Направление
      трафика
      Описание Диапазон
      портов
      Протокол Тип источника /
      назначения
      Источник /
      назначение
      Исходящий any Весь Любой CIDR 0.0.0.0/0
      Входящий ext-http 80 TCP CIDR 0.0.0.0/0
      Входящий ext-https 443 TCP CIDR 0.0.0.0/0
      Входящий healthchecks 30080 TCP CIDR 198.18.235.0/24
      198.18.248.0/24
      1. Выберите вкладку Исходящий трафик или Входящий трафик.

      2. Нажмите кнопку Добавить правило.

      3. В открывшемся окне в поле Диапазон портов укажите один порт или диапазон портов, куда или откуда будет поступать трафик.

      4. В поле Протокол укажите нужный протокол или оставьте Любой, чтобы разрешить передачу трафика по всем протоколам.

      5. В поле Назначение или Источник выберите назначение правила:

        • CIDR — правило будет применено к диапазону IP-адресов. В поле CIDR блоки укажите CIDR и маски подсетей, в которые или из которых будет поступать трафик. Чтобы добавить несколько CIDR, нажимайте кнопку Добавить CIDR.
        • Группа безопасности — правило будет применено к ВМ из текущей группы или из выбранной группы безопасности.
      6. Нажмите кнопку Сохранить. Таким образом создайте все правила из таблицы.

    5. Нажмите кнопку Сохранить.

  4. Аналогично для ВМ создайте группу безопасности mysite-sg-vms и сетью mysite-network со следующими правилами:

    Направление
    трафика
    Описание Диапазон
    портов
    Протокол Тип источника /
    назначения
    Источник /
    назначение
    Входящий balancer 80 TCP Группа безопасности mysite-sg-balancer
    Входящий ssh 22 TCP CIDR 0.0.0.0/0

Импортируйте TLS-сертификат сайта в Certificate Manager

Чтобы пользователи могли обращаться к сайту по защищенному протоколу HTTPS (HTTP over TLS), для него должен быть выпущен TLS-сертификат. Для использования в L7-балансировщике сертификат нужно импортировать в Certificate Manager.

Если у вашего сайта нет сертификата, вы можете получить в Certificate Manager сертификат от Let's Encrypt®. В этом случае дополнительных действий после создания сертификата не потребуется: он — импортируется автоматически.

Чтобы импортировать уже имеющийся сертификат для сайта my-site.com:

Консоль управления
  1. В консоли управления выберите сервис Certificate Manager.
  2. Нажмите кнопку Добавить сертификат и выберите пункт Пользовательский сертификат.
  3. Укажите Имя сертификата: mysite-cert.
  4. В поле Сертификат нажмите кнопку Добавить сертификат. Загрузите Файл с вашим сертификатом или укажите его Содержимое и нажмите кнопку Добавить.
  5. Если ваш сертификат выпущен сторонним центром сертификации, в поле Цепочка промежуточных сертификатов нажмите кнопку Добавить цепочку. Загрузите Файл с цепочкой сертификатов или укажите его Содержимое и нажмите кнопку Добавить.
  6. В поле Приватный ключ нажмите кнопку Добавить приватный ключ. Загрузите Файл с ключом или укажите его Содержимое и нажмите кнопку Добавить.
  7. Нажмите кнопку Создать.

Создайте группу ВМ для сайта

Чтобы создать группу ВМ для сайта my-site.com:

Консоль управления
  1. В консоли управления выберите сервис Compute Cloud.

  2. Откройте вкладку Группы виртуальных машин. Нажмите кнопку Создать группу.

  3. Укажите имя группы ВМ: mysite-ig.

  4. В блоке Распределение выберите несколько зон доступности, чтобы обеспечить отказоустойчивость хостинга.

  5. В блоке Шаблон виртуальной машины нажмите кнопку Задать.

  6. В блоке Выбор образа/загрузочного диска откройте вкладку Cloud Marketplace и нажмите кнопку Посмотреть больше. Выберите продукт LEMP и нажмите кнопку Использовать.

  7. В блоке Вычислительные ресурсы:

    • Выберите платформу виртуальной машины.
    • Укажите необходимое количество vCPU и объем RAM.

    Для функционального тестирования сайта хватит минимальной конфигурации:

    • Платформа — Intel Cascade Lake.
    • Гарантированная доля vCPU — 5%.
    • vCPU — 2.
    • RAM — 1 ГБ.
  8. В блоке Сетевые настройки выберите Сеть mysite-network, созданную ранее, и ее подсети.

  9. Выберите группу безопасности mysite-sg-vms, созданную ранее.

  10. Укажите данные для доступа на виртуальную машину:

    • В поле Логин введите имя пользователя.

    • В поле SSH-ключ вставьте содержимое файла открытого ключа.

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

    Внимание

    IP-адрес и имя хоста (FQDN) для подключения к машине назначаются ей при создании. Если вы выбрали вариант Без адреса в поле Публичный адрес, вы не сможете обращаться к ВМ из интернета.

  11. Нажмите кнопку Сохранить.

  12. В блоке Масштабирование укажите Размер группы ВМ — 2.

  13. В блоке Интеграция с Application Load Balancer выберите опцию Создать целевую группу и укажите имя группы — mysite-tg. Подробнее о целевых группах.

  14. Нажмите кнопку Создать.

Создание группы ВМ может занять несколько минут. Когда группа перейдет в статус RUNNING, а все ВМ в ней — в статус RUNNING_ACTUAL, вы можете загрузить на них файлы веб-сайта.

Загрузите файлы сайта на ВМ

Чтобы проверить работу веб-серверов, загрузите на виртуальные машины файлы index.html.

Пример файла index.html
<!DOCTYPE html>
<html>
  <head>
    <title>My site</title>
  </head>
  <body>
    <h1>This is my site</h1>
  </body>
</html>

Чтобы загрузить файл на ВМ:

  1. В блоке Сеть на странице ВМ в консоли управления найдите публичный IP-адрес ВМ.

  2. Подключитесь к ВМ по протоколу SSH.

  3. Выдайте права на запись для вашего пользователя на директорию /var/www/html:

    Ubuntu
    CentOS
    sudo chown -R "$USER":www-data /var/www/html
    
    sudo chown -R "$USER":apache /var/www/html
    
  4. Загрузите на ВМ файлы веб-сайта с помощью протокола SCP.

    Linux/macOS
    Windows

    Используйте утилиту командной строки scp:

    scp -r <путь до директории с файлами> <имя пользователя ВМ>@<IP-адрес виртуальной машины>:/var/www/html
    

    С помощью программы WinSCP скопируйте локальную директорию с файлами в директорию /var/www/html на ВМ.

Создайте группу бэкендов

Целевую группу, созданную вместе с группой ВМ, нужно привязать к группе бэкендов с настройками распределения трафика.

Для бэкендов в группе будут созданы проверки состояния: балансировщик будет периодически отправлять проверочные запросы к ВМ и ожидать ответа в течение определенного периода.

Чтобы создать группу бэкендов для сайта my-site.com:

Консоль управления
  1. В консоли управления выберите сервис Application Load Balancer.
  2. Откройте вкладку Группы бэкендов. Нажмите кнопку Создать группу бэкендов.
  3. Укажите Имя группы бэкендов: my-site-bg.
  4. В блоке Бэкенды нажмите кнопку Добавить.
  5. Укажите Имя бэкенда: mysite-backend.
  6. В поле Целевая группа выберите группу mysite-tg.
  7. Укажите Порт, на котором ВМ бэкенда будут принимать входящий трафик от балансировщика: 80.
  8. Нажмите кнопку Добавить проверку состояния.
  9. Укажите Порт, на котором ВМ бэкенда будут принимать проверочные соединения: 80.
  10. Укажите Путь, к которому будет обращаться балансировщик при проверке состояния: /.
  11. Нажмите кнопку Создать.

Создайте и настройте HTTP-роутер

Группу бэкендов нужно привязать к HTTP-роутеру с правилами маршрутизации.

Чтобы создать HTTP-роутер:

Консоль управления
  1. В консоли управления выберите сервис Application Load Balancer.
  2. Откройте вкладку HTTP-роутеры. Нажмите кнопку Создать HTTP-роутер.
  3. Укажите Имя HTTP-роутера: mysite-router.
  4. Нажмите кнопку Добавить виртуальный хост.
  5. Укажите Имя виртуального хоста: mysite-host.
  6. В поле Authority укажите доменное имя сайта: my-site.com.
  7. Нажмите кнопку Добавить маршрут.
  8. Укажите Имя маршрута: mysite-route.
  9. В поле Группа бэкендов выберите группу my-site-bg.
  10. Нажмите кнопку Создать.

Создайте L7-балансировщик

Консоль управления
  1. В консоли управления выберите сервис Application Load Balancer.

  2. Нажмите кнопку Создать L7-балансировщик.

  3. Укажите Имя балансировщика: mysite-alb.

  4. В блоке Сетевые настройки выберите группу безопасности mysite-sg-balancer, созданную ранее.

  5. Создайте обработчик для перенаправления HTTP-запросов на HTTPS:

    1. В блоке Обработчики нажмите кнопку Добавить обработчик.
    2. Укажите Имя обработчика: listener-http.
    3. В блоке Настройки публичного IP-адреса выберите тип Список и IP-адрес, зарезервированный ранее.
    4. В поле Протокол выберите пункт Перенаправлять на HTTPS.
  6. Создайте обработчик HTTPS-запросов:

    1. Снова нажмите кнопку Добавить обработчик.

    2. Укажите Имя обработчика: listener-https.

    3. В блоке Настройки публичного IP-адреса выберите тип Список и IP-адрес, зарезервированный ранее.

    4. В поле Протокол выберите пункт HTTPS.

    5. В блоке Основной обработчик выберите сертификат mysite-cert и HTTP-роутер mysite-router.

    6. Добавьте обработчик SNI для сайта my-site.com:

      1. Нажмите кнопку Добавить обработчик SNI.
      2. Укажите Имя обработчика SNI: mysite-sni.
      3. В поле Имена серверов укажите my-site.com.
      4. Выберите сертификат mysite-cert и HTTP-роутер mysite-router.
  7. Нажмите кнопку Создать.

Через 15–20 минут после настройки DNS вы сможете проверить работу сайта.

Проверьте работу хостинга

Чтобы проверить работу хостинга, в браузере откройте сайт по адресу http://my-site.com — должно произойти перенаправление на страницу https://my-site.com, где уже подключен TLS-сертификат из Certificate Manager.

Удалите созданные ресурсы

Чтобы остановить работу хостинга и перестать платить за созданные ресурсы:

  1. Удалите нетарифицируемые ресурсы, которые блокируют удаление тарифицируемых ресурсов:

    1. Удалите L7-балансировщик mysite-alb.
    2. Удалите HTTP-роутер mysite-router.
    3. Удалите группу бэкендов my-site-bg.
  2. Удалите группу виртуальных машин mysite-ig.

  3. Удалите зарезервированный статический публичный адрес.

Была ли статья полезна?

Language / Region
© 2022 ООО «Яндекс.Облако»
В этой статье:
  • Подготовьте облако к работе
  • Необходимые платные ресурсы
  • Создайте облачную сеть
  • Зарезервируйте статический публичный IP-адрес
  • Создайте группы безопасности
  • Импортируйте TLS-сертификат сайта в Certificate Manager
  • Создайте группу ВМ для сайта
  • Загрузите файлы сайта на ВМ
  • Создайте группу бэкендов
  • Создайте и настройте HTTP-роутер
  • Создайте L7-балансировщик
  • Проверьте работу хостинга
  • Удалите созданные ресурсы