Yandex Cloud
Поиск
Связаться с намиПодключиться
  • Истории успеха
  • Документация
  • Блог
  • Все сервисы
  • Статус работы сервисов
    • Популярные
    • Инфраструктура и сеть
    • Платформа данных
    • Контейнеры
    • Инструменты разработчика
    • Бессерверные вычисления
    • Безопасность
    • Мониторинг и управление ресурсами
    • AI Studio
    • Бизнес-инструменты
  • Все решения
    • По отраслям
    • По типу задач
    • Экономика платформы
    • Безопасность
    • Техническая поддержка
    • Каталог партнёров
    • Обучение и сертификация
    • Облако для стартапов
    • Облако для крупного бизнеса
    • Центр технологий для общества
    • Облако для интеграторов
    • Поддержка IT-бизнеса
    • Облако для фрилансеров
    • Обучение и сертификация
    • Блог
    • Документация
    • Контент-программа
    • Мероприятия и вебинары
    • Контакты, чаты и сообщества
    • Идеи
    • Тарифы Yandex Cloud
    • Промоакции и free tier
    • Правила тарификации
  • Истории успеха
  • Документация
  • Блог
Проект Яндекса
© 2025 ООО «Яндекс.Облако»
Yandex Smart Web Security
  • Начало работы
    • Все практические руководства
    • Создание L7-балансировщика с профилем безопасности
    • Создание L7-балансировщика с профилем безопасности через Ingress-контроллер Application Load Balancer
    • Защита API Gateway при помощи Smart Web Security
    • Экстренная защита сервисов в Application Load Balancer от DDoS на уровне L7
    • Централизованная публикация в интернете и защита приложений от DDoS
    • Развертывание веб-приложения на серверах BareMetal с L7-балансировщиком и защитой Smart Web Security
    • Обзор
    • Профили безопасности
    • WAF
    • ARL (лимит на запросы)
    • Правила
    • Условия
    • Списки
    • Защита доменов
    • Квоты и лимиты
  • Управление доступом
  • Правила тарификации
  • Справочник Terraform
  • Метрики Monitoring
  • Аудитные логи Audit Trails
  • История изменений

В этой статье:

  • Перед началом работы
  • Необходимые платные ресурсы
  • Подготовьте окружение VPC
  • Создайте облачную сеть
  • Создайте подсети
  • Создайте группы безопасности
  • Создайте виртуальную машину
  • Создайте Routing Instance
  • Проверьте наличие Routing Instance в вашем каталоге
  • Запросите создание Routing Instance
  • Подготовьте окружение BareMetal
  • Создайте виртуальный сегмент сети и приватную подсеть
  • Настройте приватное соединение с облачной сетью
  • Арендуйте серверы BareMetal
  • Разверните веб-приложение
  • Проверьте сетевую связность
  • Настройте L7-балансировщик
  • Создайте целевую группу L7-балансировщика
  • Создайте группу бэкендов
  • Создайте HTTP-роутер
  • Создайте L7-балансировщик
  • Настройте защиту от ботов, DDoS- и веб-атак
  • Создайте профиль ARL
  • Создайте профиль WAF
  • Создайте профиль безопасности
  • Включите защиту на хостах
  • Как удалить созданные ресурсы
  1. Практические руководства
  2. Развертывание веб-приложения на серверах BareMetal с L7-балансировщиком и защитой Smart Web Security

Развертывание веб-приложения на серверах Yandex BareMetal с L7-балансировщиком и защитой Smart Web Security

Статья создана
Yandex Cloud
Улучшена
mmerihsesh
Обновлена 26 июня 2025 г.
  • Перед началом работы
    • Необходимые платные ресурсы
  • Подготовьте окружение VPC
    • Создайте облачную сеть
    • Создайте подсети
    • Создайте группы безопасности
    • Создайте виртуальную машину
  • Создайте Routing Instance
    • Проверьте наличие Routing Instance в вашем каталоге
    • Запросите создание Routing Instance
  • Подготовьте окружение BareMetal
    • Создайте виртуальный сегмент сети и приватную подсеть
    • Настройте приватное соединение с облачной сетью
    • Арендуйте серверы BareMetal
    • Разверните веб-приложение
    • Проверьте сетевую связность
  • Настройте L7-балансировщик
    • Создайте целевую группу L7-балансировщика
    • Создайте группу бэкендов
    • Создайте HTTP-роутер
    • Создайте L7-балансировщик
  • Настройте защиту от ботов, DDoS- и веб-атак
    • Создайте профиль ARL
    • Создайте профиль WAF
    • Создайте профиль безопасности
    • Включите защиту на хостах
  • Как удалить созданные ресурсы

В этом руководстве вы развернете веб-приложение на серверах Yandex BareMetal. Для обеспечения равномерного распределения нагрузки на хосты с приложением вы настроите L7-балансировщик Yandex Application Load Balancer. Создаваемое веб-приложение будет защищено от ботов, DDoS- и веб-атак в помощью профиля безопасности Yandex Smart Web Security. Приватное соединение между облачной сетью Yandex Virtual Private Cloud и приватной сетью Yandex BareMetal обеспечивается с помощью Routing Instance Yandex Cloud Interconnect.

Схема решения:

Где:

  • Инфраструктура на стороне BareMetal, которая включает в себя:

    • приватную подсеть subnet-m4 в пуле серверов ru-central1-m4;
    • виртуальный сегмент сети (VRF) my-vrf;
    • два сервера BareMetal в пуле серверов ru-central1-m4 с развернутым веб-приложением — alb-back-0 и alb-back-1.
  • Routing Instance Cloud Interconnect, который обеспечивает сетевую связность между сетями Virtual Private Cloud и BareMetal.

  • Инфраструктура на стороне Virtual Private Cloud, которая включает в себя:

    • облачную сеть sample-network;
    • подсети vpc-subnet-a и vpc-subnet-b в зонах доступности ru-central1-a и ru-central1-b;
    • L7-балансировщик Application Load Balancer demo-alb-bms;
    • профиль безопасности Smart Web Security sws-demo-profile;
    • виртуальную машину vm-validator, используемую для проверки сетевой связности между сетями Virtual Private Cloud и BareMetal.

Чтобы развернуть веб-приложение на серверах Yandex BareMetal с L7-балансировщиком и защитой Yandex Smart Web Security:

  1. Подготовьте облако к работе.
  2. Подготовьте окружение VPC.
  3. Создайте Routing Instance.
  4. Подготовьте окружение BareMetal.
  5. Настройте L7-балансировщик.
  6. Настройте защиту от ботов, DDoS- и веб-атак.

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

Перед началом работыПеред началом работы

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

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

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

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

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

В стоимость поддержки инфраструктуры для развертывания веб-приложения на серверах BareMetal с L7-балансировщиком и защитой Smart Web Security входят:

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

Трафик между приватными адресами Yandex BareMetal и Yandex Virtual Private Cloud, передаваемый в обоих направлениях через Yandex Cloud Interconnect, не тарифицируется.

Подготовьте окружение VPCПодготовьте окружение VPC

Настройте инфраструктуру на стороне Virtual Private Cloud. На этом этапе вы создадите облачную сеть, подсети, необходимые группы безопасности и виртуальную машину.

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

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

Создайте подсетиСоздайте подсети

Консоль управления
  1. В консоли управления выберите каталог, в котором вы создаете облачную инфраструктуру.

  2. В списке сервисов выберите Virtual Private Cloud.

  3. На панели слева выберите Подсети.

  4. Справа сверху нажмите Создать подсеть.

  5. В поле Имя укажите vpc-subnet-a.

  6. В поле Зона выберите зону доступности ru-central1-a.

  7. В поле Сеть выберите облачную сеть sample-network.

  8. В поле CIDR укажите 192.168.6.0/24.

    Важно

    Для успешной настройки сетевой связности между подсетями BareMetal и подсетями VPC/on-prem, их диапазоны адресов, заданные CIDR, не должны совпадать или пересекаться.

  9. Нажмите Создать подсеть.

  10. Аналогичным способом создайте в сети sample-network подсеть vpc-subnet-b в зоне доступности ru-central1-b с CIDR 192.168.11.0/24.

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

Консоль управления
  1. В консоли управления выберите каталог, в котором вы создаете облачную инфраструктуру.

  2. В списке сервисов выберите Virtual Private Cloud.

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

  4. В поле Имя задайте имя vpc-ingress-sg.

  5. В поле Сеть выберите созданную ранее сеть sample-network.

  6. В блоке Правила создайте следующие правила для управления трафиком:

    Направление
    трафика
    Описание Диапазон портов Протокол Источник /
    Назначение
    CIDR блоки /
    Группа безопасности
    Входящий http 80 TCP CIDR 0.0.0.0/0
    Входящий https 443 TCP CIDR 0.0.0.0/0
    Входящий ssh 22 TCP CIDR 0.0.0.0/0
    Исходящий any Весь Любой CIDR 0.0.0.0/0
  7. Нажмите Создать.

  8. Аналогичным способом создайте в сети sample-network группу безопасности alb-sg со следующими правилами:

    Направление
    трафика
    Описание Диапазон портов Протокол Источник /
    Назначение
    CIDR блоки /
    Группа безопасности
    Входящий http 80 TCP CIDR 0.0.0.0/0
    Входящий healthchecks 30080 TCP Проверки состояния балансировщика —
    Исходящий any Весь Любой CIDR 0.0.0.0/0

Создайте виртуальную машинуСоздайте виртуальную машину

Консоль управления
  1. В консоли управления выберите каталог, в котором вы создаете инфраструктуру.

  2. В списке сервисов выберите Compute Cloud.

  3. На панели слева выберите Виртуальные машины и нажмите кнопку Создать виртуальную машину.

  4. В блоке Образ загрузочного диска выберите образ Ubuntu 24.04.

  5. В блоке Расположение выберите зону доступности ru-central1-a.

  6. В блоке Сетевые настройки:

    • В поле Подсеть выберите созданную ранее подсеть vpc-subnet-a.
    • В поле Публичный IP-адрес выберите Автоматически.
    • В поле Группы безопасности выберите созданную ранее группу безопасности vpc-ingress-sg.
  7. В блоке Доступ выберите вариант SSH-ключ и укажите данные для доступа на ВМ:

    • В поле Логин введите имя пользователя: yc-user.
    • В поле SSH-ключ выберите SSH-ключ, сохраненный в вашем профиле пользователя организации.

      Если в вашем профиле нет сохраненных SSH-ключей или вы хотите добавить новый ключ:

      • Нажмите кнопку Добавить ключ.
      • Задайте имя SSH-ключа.
      • Загрузите или вставьте содержимое открытого SSH-ключа. Пару SSH-ключей для подключения к ВМ по SSH необходимо создать самостоятельно.
      • Нажмите кнопку Добавить.

      SSH-ключ будет добавлен в ваш профиль пользователя организации.

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

  8. В блоке Общая информация задайте имя ВМ: vm-validator.

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

Создайте Routing InstanceСоздайте Routing Instance

Для организации сетевой связности между подсетями BareMetal и подсетями Virtual Private Cloud необходимо создать ресурс Routing Instance. Routing Instance можно создать через обращение в службу технической поддержки.

Если в вашем каталоге уже есть настроенная сетевая связность с использованием Cloud Interconnect (VPC-to-On-Prem), то вы можете как использовать уже существующий Routing Instance, так и запросить создание нового, дополнительного Routing Instance для организации обособленной сетевой связности.

Проверьте наличие Routing Instance в вашем каталогеПроверьте наличие Routing Instance в вашем каталоге

  1. Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.

    По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id.

  2. Проверьте наличие Routing Instance в каталоге по умолчанию:

    CLI

    Выполните команду:

    yc cloudrouter routing-instance list
    

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

    +----------------------+-------------------------------------------+--------+-----------------------+
    |          ID          |                    NAME                   | STATUS | PRIVATE CONNECTION ID |
    +----------------------+-------------------------------------------+--------+-----------------------+
    | cf35oot8f0eu******** | ajeol2afu1js********-enpcfncr6uld******** | ACTIVE | cf395uf8dg7h********  |
    +----------------------+-------------------------------------------+--------+-----------------------+
    
  3. Если у вас уже есть Routing Instance, вы можете пропустить следующий шаг и переходить к подготовке окружения BareMetal.

    Если у вас нет Routing Instance или вы хотите построить дополнительную, обособленную сетевую связность, запросите создание нового Routing Instance.

Запросите создание Routing InstanceЗапросите создание Routing Instance

Обратитесь в службу технической поддержки для создания Routing Instance в вашем каталоге.

Оформите ваше обращение следующим образом:

Тема: [CIC для BareMetal] Создать Routing Instance.

Текст обращения:
Прошу Создать Routing Instance в указанном облачном каталоге со следующими параметрами:

folder_id: <идентификатор_каталога>

vpc:
  vpc_net_id: <идентификатор_сети>
    vpc_subnets: 
      ru-central1-a: [CIDR_a1, CIDR_a2, ..., CIDR_an]
      ru-central1-b: [CIDR_b1, CIDR_b2, ..., CIDR_bn]
      ru-central1-d: [CIDR_d1, CIDR_d2, ..., CIDR_dn]

Где:

  • folder_id — идентификатор каталога.

  • vpc_net_id — идентификатор облачной сети.

  • vpc_subnets — список анонсируемых адресных префиксов для каждой из зон доступности. Например, для созданной ранее подсети VPC вы укажете ru-central1-b: [192.168.11.0/24].

    Допускается анонсирование адресных префиксов с агрегированием.

Примечание

Создание Routing Instance службой технической поддержки может занять до 24 часов. В результате вы сможете получить идентификатор созданного Routing Instance, выполнив команду Yandex Cloud CLI yc cloudrouter routing-instance list.

Подготовьте окружение BareMetalПодготовьте окружение BareMetal

Настройте инфраструктуру на стороне BareMetal. На этом этапе вы создадите виртуальный сегмент сети (VRF), приватную подсеть и настроите приватное соединение с облачной сетью, а также арендуете два сервера BareMetal.

Создайте виртуальный сегмент сети и приватную подсетьСоздайте виртуальный сегмент сети и приватную подсеть

Создайте VRF и приватную подсеть в пуле серверов ru-central1-m4:

Консоль управления
  1. В консоли управления выберите каталог, в котором вы создаете инфраструктуру.
  2. В списке сервисов выберите BareMetal.
  3. Создайте виртуальный сегмент сети:
    1. На панели слева выберите VRF и нажмите кнопку Создать VRF.
    2. В поле Имя задайте имя VRF: my-vrf.
    3. Нажмите кнопку Создать VRF.
  4. Создайте приватную подсеть:
    1. На панели слева выберите Приватные подсети и нажмите кнопку Создать подсеть.
    2. В поле Пул выберите пул серверов ru-central1-m4.
    3. В поле Имя задайте имя подсети: subnet-m4.
    4. Включите опцию IP-адресация и маршрутизация.
    5. В поле Виртуальный сетевой сегмент (VRF) выберите созданный ранее сегмент my-vrf.
    6. В поле CIDR укажите 172.28.4.0/24.
    7. В поле Шлюз по умолчанию оставьте значение по умолчанию 172.28.4.1.
    8. Включите опцию Назначение IP-адресов по DHCP и в появившемся поле Диапазон IP-адресов оставьте значения по умолчанию: 172.28.4.1 — 172.28.4.254.
    9. Нажмите кнопку Создать подсеть.

Настройте приватное соединение с облачной сетьюНастройте приватное соединение с облачной сетью

Создайте приватное соединение Cloud Interconnect в сервисе BareMetal:

Консоль управления
  1. В консоли управления выберите каталог, в котором вы хотите создать приватное соединение.

  2. В списке сервисов выберите BareMetal.

  3. На панели слева выберите VRF и выберите нужный виртуальный сегмент сети.

  4. В блоке Приватное соединение с облачными сетями нажмите кнопку Настроить соединение и в открывшемся окне:

    1. В поле Способ настройки выберите вариант Указать идентификатор и в поле Идентификатор соединения вставьте идентификатор приватного соединения Routing Instance.

      Вы также можете выбрать вариант Выбрать из каталога. В этом случае в появившемся списке выберите нужный Routing Instance.

      В результате в форме отобразятся CIDR подсетей Virtual Private Cloud, которые будут анонсироваться в Cloud Interconnect.

      Важно

      Для успешной настройки сетевой связности между подсетями BareMetal и подсетями VPC/on-prem, их диапазоны адресов, заданные CIDR, не должны совпадать или пересекаться.

    2. Чтобы создать приватное соединение с указанными CIDR подсетей, нажмите кнопку Сохранить.

В результате на странице с информацией о VRF в блоке Приватное соединение с облачными сетями отобразится идентификатор созданного соединения и его статус.

Примечание

Создание приватного соединения может занять до двух рабочих дней — в это время соединение будет находиться в статусе Creating. После создания статус соединения изменится на Ready.

Приватное соединение c облачными сетями может находиться в одном из следующих статусов:

  • CREATING — соединение создается.
  • READY — соединение сконфигурировано и готово к работе.
  • ERROR — возникла проблема с приватным соединением, для устранения необходимо обратиться в поддержку.
  • DELETING — соединение удаляется.
  • UPDATING — настройки приватного соединения обновляются.

Арендуйте серверы BareMetalАрендуйте серверы BareMetal

Консоль управления
  1. В консоли управления выберите каталог, в котором вы создаете инфраструктуру.

  2. В списке сервисов выберите BareMetal и нажмите кнопку Заказать сервер.

  3. В блоке Конфигурация нажмите фильтр Пул и выберите пул серверов ru-central1-m4.

  4. В блоке Конфигурация выберите подходящую конфигурацию сервера.

  5. (Опционально) В блоке Диск настройте разметку дисков:

    1. Нажмите кнопку Настроить разделы диска.

    2. Укажите параметры разделов. Чтобы создать новый раздел, нажмите кнопку Добавить раздел.

      Чтобы самостоятельно собрать RAID-массивы и настроить разделы дисков, нажмите кнопку Разобрать RAID.

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

  6. В блоке Образ выберите образ Debian 11.

  7. В поле Период аренды выберите период, на который вы заказываете аренду — 1 день.

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

  8. В блоке Сетевые настройки:

    1. В поле Приватная подсеть выберите созданную ранее подсеть subnet-m4.
    2. В поле Публичный адрес выберите Автоматически.
  9. В блоке Доступ:

    1. В поле Пароль воспользуйтесь одним из вариантов создания пароля для root-пользователя:

      • Чтобы сгенерировать пароль для root-пользователя, выберите опцию Новый пароль и нажмите кнопку Сгенерировать.

        Важно

        Этот вариант предусматривает ответственность пользователя за безопасность пароля. Сохраните сгенерированный пароль в надежном месте: он не сохраняется в Yandex Cloud, и после заказа сервера вы не сможете посмотреть его.

      • Чтобы использовать пароль root-пользователя, сохраненный в секрете Yandex Lockbox, выберите опцию Секрет Lockbox:

        В полях Имя, Версия и Ключ выберите соответственно секрет, его версию и ключ, в которых сохранен ваш пароль.

        Если у вас еще нет секрета Yandex Lockbox, нажмите кнопку Создать, чтобы создать его.

        Этот вариант позволяет вам как задать собственный пароль (тип секрета Пользовательский), так и использовать пароль, сгенерированный автоматически (тип секрета Генерируемый).

    2. В поле Открытый SSH-ключ выберите SSH-ключ, сохраненный в вашем профиле пользователя организации.

      Если в вашем профиле нет сохраненных SSH-ключей или вы хотите добавить новый ключ:

      • Нажмите кнопку Добавить ключ.
      • Задайте имя SSH-ключа.
      • Загрузите или вставьте содержимое открытого SSH-ключа. Пару SSH-ключей для подключения к серверу по SSH необходимо создать самостоятельно.
      • Нажмите кнопку Добавить.

      SSH-ключ будет добавлен в ваш профиль пользователя организации.

      Если в организации отключена возможность добавления пользователями SSH-ключей в свои профили, добавленный открытый SSH-ключ будет сохранен только в профиле пользователя операционной системы создаваемого сервера BareMetal.

  10. В блоке Информация о сервере в поле Имя задайте имя сервера: alb-back-0.

  11. Нажмите кнопку Заказать сервер.

  12. Аналогичным способом арендуйте в пуле серверов ru-central1-m4 еще один сервер alb-back-1.

Примечание

Подготовка сервера и установка на него операционной системы может занять до 45 минут — в это время сервер будет находиться в статусе Provisioning. После завершения установки ОС сервер перейдет в статус Ready.

Разверните веб-приложениеРазверните веб-приложение

На этом этапе вы развернете веб-приложение на серверах BareMetal. Веб-приложением на серверах будут использованы следующие ресурсы:

  • /opt/mygoapp — рабочая директория веб-сервера.
  • /opt/mygoapp/server — исполняемый файл веб-сервера.
  • /etc/systemd/system/mygoapp.service — файл конфигурации сервиса для управления веб-сервером через systemd.

Чтобы развернуть веб-приложение на сервере:

  1. Подключитесь по SSH к серверу BareMetal alb-back-0:

    ssh root@<публичный_IP-адрес_сервера>
    

    Публичный IP-адрес сервера можно узнать в консоли управления на странице Обзор с информацией о сервере BareMetal. Нужный адрес указан в блоке Публичная сеть в поле Публичный адрес.

    Все последующие действия этого шага выполняются в терминале сервера.

  2. Подготовьте рабочую директорию:

    mkdir -p /opt/mygoapp && cd /opt/mygoapp
    
  3. Загрузите исполняемый файл веб-сервера:

    wget https://storage.yandexcloud.net/yc-public-share/server
    
  4. Установите для скачанного файла разрешение на исполнение:

    chmod +x server
    
  5. Создайте в systemd новый сервис:

    1. Откройте файл конфигурации создаваемого сервиса:

      nano /etc/systemd/system/mygoapp.service
      
    2. Вставьте в открытый файл следующее содержимое:

      [Unit]
      Description=Simple Web Server on Go
      After=network.target
      [Service]
      Type=simple
      WorkingDirectory=/opt/mygoapp
      ExecStart=/opt/mygoapp/server
      Restart=always
      RestartSec=5
      [Install]
      WantedBy=multi-user.target
      
    3. Закройте файл, сохранив изменения.

  6. Инициализируйте созданный сервис:

    systemctl daemon-reload
    
  7. Запустите сервис:

    systemctl start mygoapp.service
    
  8. Проверьте работу веб-приложения. Для этого на вашем локальном компьютере вставьте публичный IP-адрес сервера alb-back-0 в адресную строку браузера.

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

    Исходный код создаваемого веб-приложения
    package main
    
    import (
      "context"
      "fmt"
      "net/http"
      "os"
      "os/signal"
      "syscall"
      "time"
      "github.com/gorilla/handlers"
    )
    
    var (
      hostname    string
      htmlContent []byte
    )
    
    const (
      serverTimeout  = 5 * time.Second
      cacheDuration  = 86400 * 30 // 30 дней в секундах
      htmlTemplate = `
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <!-- Минифицированный CSS -->
        <style>*{margin:0;padding:0;box-sizing:border-box;font-family:'Segoe UI',system-ui,sans-serif}body{min-height:100vh;display:flex;justify-content:center;align-items:center;background:linear-gradient(135deg,#1a1a1a,#2d2d2d);color:#fff;padding:20px}.container{background:rgba(255,255,255,0.1);backdrop-filter:blur(10px);border-radius:20px;padding:40px;box-shadow:0 8px 32px rgba(0,0,0,0.3);text-align:center;max-width:600px;width:100%%;transition:transform .3s ease}.server-name{font-size:1.8rem;margin-bottom:30px;color:#0f0;font-weight:600;text-shadow:0 0 10px rgba(0,255,136,0.3)}.datetime{font-size:2.5rem;letter-spacing:2px;margin-bottom:20px}.date{font-size:1.5rem;opacity:.8}@media (max-width:768px){.container{padding:25px;border-radius:15px}.server-name{font-size:1.4rem}.datetime{font-size:2rem}.date{font-size:1.2rem}}@media (max-width:480px){.datetime{font-size:1.6rem}}</style>
        <meta name="viewport" content="width=device-width,initial-scale=1">
        <title>Server Info & Time</title>
    </head>
    <body>
        <div class="container">
            <div class="server-name">Server Hostname: %s</div>
            <div class="datetime" id="datetime"></div>
            <div class="date" id="date"></div>
        </div>
        <script>
            // Минифицированный JavaScript
            const e=()=>{const e=new Date;document.getElementById("datetime").textContent=e.toLocaleTimeString("en-US",{timeZone:"Europe/Moscow",hour12:!1,hour:"2-digit",minute:"2-digit",second:"2-digit"}),document.getElementById("date").textContent=e.toLocaleDateString("en-US",{timeZone:"Europe/Moscow",weekday:"long",year:"numeric",month:"long",day:"numeric"})};e(),setInterval(e,1e3);
        </script>
    </body>
    </html>`
    )
    
    func init() {
      // Инициализация хоста при старте
      var err error
      if hostname, err = os.Hostname(); err != nil {
        hostname = "Unavailable"
      }
      
      // Предварительная генерация HTML
      htmlContent = []byte(fmt.Sprintf(htmlTemplate, hostname))
    }
    
    func main() {
      // Настройка обработчиков
      mux := http.NewServeMux()
      mux.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
        w.Header().Set("Content-Type", "text/html; charset=utf-8")
        w.Header().Set("Cache-Control", fmt.Sprintf("public, max-age=%d", cacheDuration))
        w.Write(htmlContent)
      })
    
      // Middleware
      chain := handlers.CompressHandler(
        handlers.CombinedLoggingHandler(os.Stdout, mux),
      )
    
      // Конфигурация сервера
      server := &http.Server{
        Addr:         ":80",
        Handler:      chain,
        ReadTimeout:  serverTimeout,
        WriteTimeout: serverTimeout,
        IdleTimeout:  serverTimeout * 2,
      }
    
      // Graceful shutdown
      ctx, stop := signal.NotifyContext(context.Background(), 
        os.Interrupt, syscall.SIGTERM)
      defer stop()
    
      go func() {
        <-ctx.Done()
        shutdownCtx, cancel := context.WithTimeout(
          context.Background(), 5*time.Second)
        defer cancel()
        server.Shutdown(shutdownCtx)
      }()
    
      fmt.Println("Server started")
      if err := server.ListenAndServe(); err != http.ErrServerClosed {
        fmt.Printf("Server error: %v\n", err)
      }
    }
    
  9. Аналогичным способом разверните веб-приложение на сервере alb-back-1.

Проверьте сетевую связностьПроверьте сетевую связность

Убедитесь, что созданное ранее приватное соединение с облачной сетью готово к работе (статус Ready), затем проверьте наличие сетевой связности между виртуальной машиной vm-validator в сети Virtual Private Cloud и серверами в приватной подсети BareMetal:

  1. Подключитесь по SSH к виртуальной машине vm-validator:

    ssh yc-user@<публичный_IP-адрес_ВМ>
    

    Публичный IP-адрес ВМ можно узнать в консоли управления, в поле Публичный IPv4-адрес блока Сеть на странице с информацией о ВМ.

    Все последующие действия этого шага выполняются в терминале виртуальной машины.

  2. Выполните проверку сетевого доступа к серверу alb-back-0, указав его приватный IP-адрес:

    ping <приватный_IP-адрес_сервера> -s 1024 -c 3
    

    Приватный IP-адрес сервера можно узнать в консоли управления на странице Обзор с информацией о сервере BareMetal. Нужный адрес указан в блоке Приватная сеть в поле Приватный IPv4.

    Результат:

    PING 172.28.4.11 (172.28.4.11) 1024(1052) bytes of data.
    1032 bytes from 172.28.4.11: icmp_seq=1 ttl=58 time=3.77 ms
    1032 bytes from 172.28.4.11: icmp_seq=2 ttl=58 time=3.83 ms
    1032 bytes from 172.28.4.11: icmp_seq=3 ttl=58 time=3.80 ms
    
    --- 172.28.4.11 ping statistics ---
    3 packets transmitted, 3 received, 0% packet loss, time 2004ms
    rtt min/avg/max/mdev = 3.767/3.800/3.830/0.025 ms
    
  3. Аналогичным способом убедитесь в наличии сетевого доступа к серверу alb-back-1, указав в команде ping его приватный IP-адрес.

Сохраните полученные приватные IP-адреса серверов BareMetal — они понадобятся при настройке L7-балансировщика.

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

Создав сегменты инфраструктуры на стороне Virtual Private Cloud и на стороне BareMetal, а также убедившись в наличии сетевой связности между этими сегментами, настройте балансировку трафика от пользователей к веб-приложению при помощи L7-балансировщика.

Создайте целевую группу L7-балансировщикаСоздайте целевую группу L7-балансировщика

Консоль управления
  1. В консоли управления выберите каталог, в котором вы создаете инфраструктуру.

  2. В списке сервисов выберите Application Load Balancer.

  3. На панели слева выберите Целевые группы и нажмите кнопку Создать целевую группу.

  4. В поле Имя укажите имя целевой группы bms-target-group.

  5. В блоке Целевые ресурсы:

    1. В поле IP-адрес введите сохраненный ранее приватный IP-адрес сервера alb-back-0.
    2. В строке с введенным IP-адресом включите опцию Не из VPC и нажмите кнопку Добавить целевой ресурс.
    3. Повторите два предыдущих действия, чтобы добавить в целевую группу приватный IP-адрес сервера alb-back-1.
  6. Нажмите кнопку Создать.

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

Консоль управления
  1. В консоли управления выберите каталог, в котором вы создаете инфраструктуру.

  2. В списке сервисов выберите Application Load Balancer.

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

  4. В поле Имя укажите имя группы бэкендов bms-backend-group.

  5. В поле Тип выберите HTTP.

  6. В блоке Бэкенды нажмите кнопку Добавить и в появившейся форме Новый бэкенд:

    1. В поле Имя задайте имя бэкенда bms-backend.

    2. В поле Целевые группы выберите созданную ранее целевую группу bms-target-group.

    3. В секции HTTP проверка состояния:

      1. В поле Таймаут, с задайте значение 3.
      2. В поле Интервал задайте значение 10.
      3. В поле Путь укажите корневой путь /.
      4. В поле HTTP-коды выберите код ответа 200.

    Значения остальных параметров оставьте без изменений.

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

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

Консоль управления
  1. В консоли управления выберите каталог, в котором вы создаете инфраструктуру.

  2. В списке сервисов выберите Application Load Balancer.

  3. На панели слева выберите HTTP-роутеры и нажмите кнопку Создать HTTP-роутер.

  4. В поле Имя укажите имя HTTP-роутера http-80.

  5. В блоке Виртуальные хосты нажмите кнопку Добавить виртуальный хост и в открывшейся форме Новый виртуальный хост:

    1. В поле Имя укажите имя виртуального хоста http-vh и нажмите кнопку Добавить маршрут.
    2. В открывшейся форме Новый маршрут в поле Имя задайте имя маршрута main-route-80.
    3. В поле Методы HTTP выберите GET.
    4. В поле Группа бэкендов выберите созданную на предыдущем шаге группу бэкендов bms-backend-group.
    5. Значения остальных параметров оставьте без изменений и внизу страницы нажмите кнопку Создать.

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

Консоль управления
  1. В консоли управления выберите каталог, в котором вы создаете инфраструктуру.

  2. В списке сервисов выберите Application Load Balancer.

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

  4. В поле Имя укажите имя балансировщика demo-alb-bms.

  5. В поле Сеть выберите сеть sample-network.

  6. В поле Группы безопасности выберите Из списка и в появившемся списке выберите группу безопасности alb-sg.

  7. В блоке Размещение оставьте только зоны доступности ru-central1-a и ru-central1-b с подсетями vpc-subnet-a и vpc-subnet-b соответственно.

  8. Если вы не хотите сохранять логи работы балансировщика в лог-группу, отключите опцию Запись логов.

  9. В секции Обработчики нажмите кнопку Добавить обработчик и в открывшейся форме:

    1. В поле Имя укажите имя обработчика alb-bms-listener.
    2. В поле HTTP-роутер выберите созданный ранее HTTP-роутер http-80.
  10. Значения остальных параметров оставьте без изменений и внизу страницы нажмите кнопку Создать.

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

  12. На вашем локальном компьютере вставьте IP-адрес балансировщика в адресную строку браузера. Если все настроено корректно, в окне браузера откроется развернутое на серверах BareMetal веб-приложение.

Настройте защиту от ботов, DDoS- и веб-атакНастройте защиту от ботов, DDoS- и веб-атак

Убедившись в корректной работе L7-балансировщика, настройте для вашего веб-приложения защиту от ботов, DDoS- и веб-атак с помощью профиля безопасности Smart Web Security.

Создайте профиль ARLСоздайте профиль ARL

Консоль управления
  1. В консоли управления выберите каталог, в котором вы создаете инфраструктуру.

  2. В списке сервисов выберите Smart Web Security.

  3. На панели слева выберите Профили ARL и нажмите кнопку Создать профиль ARL.

  4. В поле Имя задайте имя профиля ARL arl-profile-demo.

  5. Нажмите кнопку Добавить правило и в открывшемся окне:

    1. В поле Имя задайте имя правила permit-50-rps-in.
    2. В поле Приоритет укажите 10.
    3. В поле Лимит запросов задайте лимит в 50 запросов за 1 секунду.
    4. Значения остальных параметров оставьте без изменений и нажмите кнопку Сохранить правило.
  6. Нажмите кнопку Создать.

Создайте профиль WAFСоздайте профиль WAF

Консоль управления
  1. В консоли управления выберите каталог, в котором вы создаете инфраструктуру.
  2. В списке сервисов выберите Smart Web Security.
  3. На панели слева выберите Профили WAF и нажмите кнопку Создать профиль WAF.
  4. В поле Имя задайте имя профиля WAF waf-profile-demo.
  5. По умолчанию в профиле WAF включен набор базовых правил OWASP Core Rule Set. Нажмите на строку с набором правил, чтобы посмотреть правила, которые в него входят.
  6. Нажмите кнопку Создать.

Создайте профиль безопасностиСоздайте профиль безопасности

Консоль управления
  1. В консоли управления выберите каталог, в котором вы создаете инфраструктуру.

  2. В списке сервисов выберите Smart Web Security.

  3. На панели слева выберите Профили безопасности.

  4. Нажмите кнопку Создать профиль и выберите вариант С чистого листа.

  5. В поле Имя задайте имя профиля безопасности sws-demo-profile.

  6. В поле Профиль ARL выберите созданный ранее профиль arl-profile-demo.

  7. Создайте новое правило Web Application Firewall:

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

    2. В поле Имя задайте имя правила waf-rule.

    3. В поле Приоритет укажите значение 200.

    4. В блоке Тип правила выберите Web Application Firewall и в появившемся списке выберите созданное ранее правило waf-profile-demo.

      К создаваемому правилу будет применен набор правил из профиля WAF. Подозрительные запросы будут направляться в Yandex SmartCaptcha.

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

    Добавленное правило появится в списке правил в блоке Правила безопасности.

  8. Создайте новое правило Smart Protection:

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

    2. В поле Имя задайте имя правила smart-rule.

    3. В поле Приоритет укажите значение 300.

    4. В блоке Тип правила выберите Smart Protection.

      Создаваемое правило будет направлять трафик на автоматический анализ с помощью алгоритмов машинного обучения и поведенческого анализа. Подозрительные запросы будут направляться в Yandex SmartCaptcha для дополнительной верификации.

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

    Добавленное правило появится в списке правил в блоке Правила безопасности.

  9. Нажмите кнопку Создать профиль.

Включите защиту на хостахВключите защиту на хостах

Консоль управления
  1. В консоли управления выберите каталог, в котором вы создаете инфраструктуру.

  2. В списке сервисов выберите Smart Web Security.

  3. На панели слева выберите Профили безопасности и выберите созданный ранее профиль sws-demo-profile.

  4. На панели сверху нажмите кнопку Подключить к хосту и в открывшемся окне:

    1. Выберите балансировщик demo-alb-bms.
    2. Выберите HTTP-роутер http-80.
    3. Выберите виртуальный хост http-vh.
    4. Нажмите кнопку Подключить.

    Информация о подключенном виртуальном хосте появится на вкладке Подключенные хосты на странице с обзором профиля безопасности Smart Web Security.

Вы настроили веб-приложение, развернув его на двух серверах BareMetal, организовав балансировку пользовательского трафика с помощью L7-балансировщика Application Load Balancer и обеспечив защиту с помощью профиля безопасности Smart Web Security.

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

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

  1. Удалите виртуальную машину.

  2. Удалите L7-балансировщик, затем последовательно удалите HTTP-роутер, группу бэкендов и целевую группу балансировщика.

  3. Удалите профиль безопасности Smart Web Security, затем удалите профиль WAF и профиль ARL.

  4. Удалить серверы BareMetal нельзя. Вместо этого откажитесь от продления их аренды.

  5. Если вы оставляли включенной опцию записи логов L7-балансировщика, удалите лог-группу.

  6. При необходимости последовательно удалите группы безопасности, подсети и облачную сеть.

  7. При необходимости удалите приватное соединение:

    Консоль управления
    1. В консоли управления выберите каталог, в котором вы создали инфраструктуру.
    2. В списке сервисов выберите BareMetal.
    3. На панели слева выберите VRF и выберите виртуальный сегмент сети my-vrf.
    4. В блоке Приватное соединение с облачными сетями нажмите и выберите Отключить соединение.
    5. В открывшемся окне подтвердите удаление.

    В результате статус соединения сменится на Deleting. После того как все связи будут удалены, соединение пропадет из списка.

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

Предыдущая
Terraform
Следующая
Обзор
Проект Яндекса
© 2025 ООО «Яндекс.Облако»