Yandex Cloud
  • Сервисы
  • Решения
  • Почему Yandex Cloud
  • Сообщество
  • Тарифы
  • Документация
  • Связаться с нами
Подключиться
Language / Region
© 2022 ООО «Яндекс.Облако»
Практические руководства
  • Веб-сервис
    • Все руководства
    • Cтатический сайт в Object Storage
    • Cайт на LAMP- или LEMP-стеке
    • Отказоустойчивый сайт с балансировкой нагрузки через Network Load Balancer
    • Отказоустойчивый сайт с балансировкой нагрузки через Application Load Balancer
    • Сайт на базе Joomla с БД PostgreSQL
    • Сайт на WordPress
    • Сайт на WordPress с БД MySQL
    • Перенос WordPress сайта с хостинга в Yandex Cloud
    • Веб-сайт на базе 1С-Битрикс
    • Интеграция L7-балансировщика с Cloud CDN и Object Storage
    • Сине-зеленое и канареечное развертывание версий сервиса
  • Интернет-магазины
    • Все руководства
    • Интернет-магазин на 1С-Битрикс
    • Интернет-магазин на Opencart
  • Архив данных
    • Все руководства
    • Однонодовый файловый сервер
    • Настройка SFTP-сервера на Centos 7
    • Резервное копирование в Object Storage через Acronis
    • Резервное копирование в Object Storage через CloudBerry Desktop Backup
    • Резервное копирование в Object Storage через Duplicati
    • Резервное копирование в Object Storage через Bacula
    • Резервное копирование в Object Storage через Veritas Backup Exec
    • Оцифровка архива в Yandex Vision
  • Тестовая среда
    • Все руководства
    • Тестирование приложений с помощью GitLab
    • Создание тестовых ВМ через GitLab CI
    • Высокопроизводительные вычисления на прерываемых виртуальных машинах
    • Эмуляция множества IoT-устройств
    • Нагрузочное тестирование gRPC-сервиса
    • HTTPS-тест с постоянной нагрузкой с помощью Phantom
    • HTTPS-тест со ступенчатой нагрузкой с помощью Pandora
  • Управление инфраструктурой
    • Все руководства
    • Начало работы с Terraform
    • Загрузка состояний Terraform в Object Storage
    • Начало работы с Packer
    • Сборка образа ВМ с набором инфраструктурных инструментов с помощью Packer
    • Автоматизация сборки образов ВМ с помощью Jenkins
    • Непрерывное развертывание контейнеризованных приложений с помощью GitLab
    • Создание кластера Linux-серверов «1С:Предприятия» с кластером Managed Service for PostgreSQL
    • Создание кластера Windows-серверов «1С:Предприятия» с базой данных SQL Server
    • Миграция в Yandex Cloud с помощью Hystax Acura
    • Защита от сбоев с помощью Hystax Acura
    • Настройка отказоустойчивой архитектуры в Yandex Cloud
    • Создание SAP-программы в Yandex Cloud
  • Построение Data Platform
    • Все руководства
    • Синхронизация данных из MySQL с помощью Yandex Data Transfer
    • Миграция базы данных из Yandex Managed Service for MySQL в MySQL
    • Настройка управляемой базы данных в кластере ClickHouse для Graphite
    • Обмен данными между Yandex Managed Service for ClickHouse и Yandex Data Proc
    • Импорт базы данных в Yandex Data Proc с использованием Sqoop
    • Использование Confluent Schema Registry с Yandex Managed Service for Apache Kafka®
    • Поставка данных из Yandex Managed Service for PostgreSQL в Yandex Managed Service for Apache Kafka® с помощью Debezium
    • Поставка данных из Yandex Managed Service for PostgreSQL в Yandex Managed Service for Apache Kafka® с помощью Yandex Data Transfer
    • Миграция данных в Yandex Managed Service for Apache Kafka®
    • Перенос коллекций из MongoDB в Yandex Managed Service for MongoDB
    • Миграция базы данных в Yandex Managed Service for SQL Server
    • Перенос данных из PostgreSQL в ClickHouse с помощью Yandex Data Transfer
    • Настройка Kafka Connect для работы с кластером Yandex Managed Service for Apache Kafka®
    • Настройка Yandex Cloud DNS для доступа к кластерам управляемых баз данных из других облачных сетей
    • Миграция в Yandex Managed Service for Elasticsearch с помощью Reindex API
    • Использование скриптов инициализации для настройки GeeseFS в Yandex Data Proc
  • Windows в Yandex Cloud
    • Все руководства
    • Развертывание Active Directory
    • Развертывание Microsoft Exchange
    • Развертывание Remote Desktop Services
    • Развертывание группы доступности Always On
    • Развертывание группы доступности Always On с внутренним сетевым балансировщиком
    • Развертывание Remote Desktop Gateway
  • Сетевая маршрутизация
    • Все руководства
    • Маршрутизация с помощью NAT-инстанса
    • Создание VPN-туннеля
    • Установка виртуального роутера Cisco CSR1000v
    • Установка виртуального роутера Mikrotik CHR
    • Соединение с облачной сетью при помощи OpenVPN
    • Настройка сети для Yandex Data Proc
  • Визуализация и анализ данных
    • Все руководства
    • Визуализация данных из CSV-файла
    • Создание и публикация диаграммы с картой Москвы из CSV-файла
    • Анализ продаж сети магазинов из БД ClickHouse
    • Анализ открытых данных ДТП на дорогах России
    • Анализ продаж и локаций пиццерий на данных из БД ClickHouse и Marketplace
    • Веб-аналитика с подключением к Яндекс Метрике
    • Веб-аналитика с расчетом воронок и когорт на данных Яндекс Метрики
    • Аналитика мобильного приложения на данных AppMetrica
    • Анализ статистики подкастов Яндекс Музыки (для авторов подкастов)
    • Визуализация данных с помощью SQL-чарта
    • Анализ customer journey мобильного приложения на данных AppMetrica
    • Анализ логов Object Storage при помощи DataLens
  • Интернет вещей
    • Руководства по работе с интернетом вещей
    • Мониторинг состояния географически распределенных устройств
    • Мониторинг показаний датчиков и уведомления о событиях
  • Бессерверные технологии
    • Сокращатель ссылок
    • Ввод данных в системы хранения
    • Хранение журналов работы приложения
  1. Веб-сервис
  2. Отказоустойчивый сайт с балансировкой нагрузки через Application Load Balancer

Отказоустойчивый сайт с балансировкой нагрузки с помощью Yandex Application Load Balancer

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

Создайте и настройте веб-сайт с балансировкой нагрузки через Application Load Balancer между тремя зонами доступности, защищенный от сбоев в одной зоне.

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

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

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

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

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

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

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

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

В стоимость поддержки инфраструктуры входит:

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

Подготовьте сетевую инфраструктуру

Перед тем, как создавать ВМ:

  1. Перейдите в консоль управления Yandex Cloud и выберите каталог, в котором будете выполнять операции.

  2. Убедитесь, что в выбранном каталоге есть сеть с подсетями в зонах доступности ru-central1-a, ru-central1-b и ru-central1-с. Для этого на странице каталога выберите сервис Virtual Private Cloud. Если нужной сети или подсетей нет, создайте их.

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

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

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

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

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

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

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

    2. Введите имя группы, например alb-sg.

    3. Выберите сеть, которой будет назначена группа безопасности.

    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. Аналогично создайте группу безопасности для группы ВМ с именем alb-vm-sg, той же сетью и следующими правилами:

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

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

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

Чтобы создать группу ВМ с минимальной конфигурацией:

  1. В консоли управления откройте сервис Compute Cloud.

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

  3. В блоке Базовые параметры:

    • Введите имя группы ВМ, например alb-vm-group.
    • Выберите сервисный аккаунт из списка или создайте новый. Чтобы иметь возможность создавать, обновлять и удалять ВМ в группе, назначьте сервисному аккаунту роль editor. По умолчанию все операции в Instance Groups выполняются от имени сервисного аккаунта.
  4. В блоке Распределение выберите три зоны доступности (ru-central1-a, ru-central1-b и ru-central1-с), чтобы обеспечить отказоустойчивость хостинга.

  5. В блоке Шаблон виртуальной машины нажмите кнопку Задать и укажите конфигурацию базовой ВМ:

    • В блоке Базовые параметры введите Описание шаблона.
    • В блоке Выбор образа/загрузочного диска откройте вкладку Cloud Marketplace и нажмите кнопку Посмотреть больше. Выберите продукт LEMP и нажмите кнопку Использовать.
    • В блоке Диски укажите:
      • Тип диска — HDD.
      • Размер — 3 ГБ.
    • В блоке Вычислительные ресурсы укажите:
      • Платформа — Intel Cascade Lake.
      • vCPU — 2.
      • Гарантированная доля vCPU — 5%.
      • RAM — 1 ГБ.
    • В блоке Сетевые настройки:
      • Выберите облачную сеть и ее подсети.
      • В поле Публичный адрес выберите Автоматически.
      • Выберите группу безопасности alb-vm-sg.
    • В блоке Доступ укажите данные для доступа на виртуальную машину:
      • В поле Сервисный аккаунт выберите сервисный аккаунт для привязки к ВМ.
      • В поле Логин введите имя пользователя.
      • В поле SSH-ключ вставьте содержимое файла открытого ключа.
        Для подключения по SSH необходимо создать пару ключей. Подробнее в разделе Подключиться к виртуальной машине Linux по SSH.
    • Нажмите кнопку Сохранить.
  6. В блоке Масштабирование укажите Размер группы ВМ — 3.

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

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

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

См. также

  • Подключиться к виртуальной машине Linux по SSH

Загрузите файлы веб-сайта

Чтобы проверить работу веб-сервера, необходимо загрузить файлы сайта на каждую ВМ. Для примера вы можете использовать файл index.html из архива.

Для каждой виртуальной машины в созданной группе выполните следующее:

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

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

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

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

    Linux/macOS
    Windows

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

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

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

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

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

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

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

  1. Откройте сервис Application Load Balancer в каталоге, где создана группа ВМ.

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

  3. Нажмите кнопку Создать группу бэкендов.

  4. Введите имя группы бэкендов, например alb-bg.

  5. В блоке Бэкенды нажмите кнопку Добавить.

  6. Введите имя бэкенда, например backend-1.

  7. В поле Целевая группа выберите созданную ранее целевую группу alb-tg.

  8. Укажите Порт, на котором ВМ бэкенда будут принимать входящий трафик от балансировщика: 80.

  9. Нажмите кнопку Добавить проверку состояния.

  10. Укажите Порт, на котором ВМ бэкенда будут принимать проверочные соединения: 80.

  11. Укажите Путь, к которому будет обращаться балансировщик при проверке состояния: /.

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

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

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

Чтобы создать HTTP-роутер и добавить в него маршрут:

  1. Откройте вкладку HTTP-роутеры.

  2. Нажмите кнопку Создать HTTP-роутер.

  3. Введите имя роутера, например alb-router.

  4. Нажмите кнопку Добавить виртуальный хост.

  5. Введите имя виртуального хоста, например alb-host.

  6. В поле Authority введите доменное имя сайта: alb-example.com.

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

  8. Введите имя, например route-1.

  9. В поле Группа бэкендов выберите созданную ранее группу alb-bg.

  10. Остальные настройки оставьте без изменений и нажмите кнопку Создать.

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

Чтобы создать балансировщик:

  1. Откройте вкладку Балансировщики.

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

  3. Введите имя балансировщика, например alb-1.

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

  5. В блоке Размещение выберите подсети для узлов балансировщика в каждой зоне доступности и включите прием трафика.

  6. В блоке Обработчики нажмите кнопку Добавить обработчик.

  7. Введите имя обработчика, например alb-listener.

  8. В блоке Настройки публичного IP-адреса включите передачу трафика.

  9. Укажите порт 80.

  10. В поле HTTP-роутер выберите созданный ранее роутер alb-router.

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

Настройте DNS

Доменное имя, которое вы хотите использовать для веб-сайта, нужно связать с IP-адресом балансировщика. Для управления доменом можно использовать сервис Cloud DNS.

В инструкции ниже описана настройка DNS для доменного имени alb-example.com.

Добавьте зону

  1. Откройте сервис Cloud DNS в каталоге, где создана группа ВМ.

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

  3. Задайте настройки зоны:

    • Зона: alb-example.com.. Укажите ваш зарегистрированный домен.
    • Тип: Публичная.
    • Имя: alb-zone.
  4. Нажмите кнопку Создать.

Добавьте ресурсные записи

Создайте в публичной зоне записи DNS:

  1. Откройте сервис Application Load Balancer. В списке балансировщиков найдите IP-адрес ранее созданного балансировщика alb-1.

  2. В сервисе Cloud DNS выберите зону alb-example.com. из списка.

  3. Создайте запись типа А:

    1. Нажмите кнопку Создать запись.
    2. Задайте параметры записи:
      • Имя: оставьте пустым.
      • Тип записи: оставьте значение А.
      • TTL (время кэширования записи): оставьте значение по умолчанию.
      • Значение: введите публичный адрес балансировщика alb-1.
    3. Нажмите кнопку Создать.
  4. Создайте запись типа CNAME:

    1. Нажмите кнопку Создать запись.
    2. Задайте параметры записи:
      • Имя: www.
      • Тип записи: выберите значение CNAME.
      • TTL (время кэширования записи): оставьте значение по умолчанию.
      • Значение: введите alb-example.com.
    3. Нажмите кнопку Создать.

Протестируйте отказоустойчивость

  1. В консоли управления откройте сервис Compute Cloud.

  2. Перейдите на страницу ВМ из созданной ранее группы. В блоке Сеть найдите публичный IP-адрес.

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

  4. Остановите веб-сервис, чтобы сымитировать сбой в работе веб-сервера:

    sudo service nginx stop
    
  5. Подключитесь к вашему веб-сайту через браузер. Несмотря на сбой в работе одного из веб-серверов, подключение должно пройти успешно.

  6. После завершения проверки запустите веб-сервис:

    sudo service nginx start
    

Как удалить созданные ресурсы

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

  1. Удалите компоненты Application Load Balancer:

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

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

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