Развертывание веб-приложения на серверах Yandex BareMetal с L7-балансировщиком и защитой Smart Web Security
В этом руководстве вы развернете веб-приложение на серверах 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:
- Подготовьте облако к работе.
- Подготовьте окружение VPC.
- Создайте Routing Instance.
- Подготовьте окружение BareMetal.
- Настройте L7-балансировщик.
- Настройте защиту от ботов, DDoS- и веб-атак.
Если созданные ресурсы вам больше не нужны, удалите их.
Перед началом работы
Зарегистрируйтесь в Yandex Cloud и создайте платежный аккаунт:
- Перейдите в консоль управления
, затем войдите в Yandex Cloud или зарегистрируйтесь. - На странице 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
Настройте инфраструктуру на стороне Virtual Private Cloud. На этом этапе вы создадите облачную сеть, подсети, необходимые группы безопасности и виртуальную машину.
Создайте облачную сеть
- В консоли управления
выберите каталог, в котором вы будете создавать инфраструктуру. - В списке сервисов выберите Virtual Private Cloud.
- Справа сверху нажмите Создать сеть.
- В поле Имя укажите
sample-network
. - В поле Дополнительно отключите опцию Создать подсети.
- Нажмите кнопку Создать сеть.
Создайте подсети
-
В консоли управления
выберите каталог, в котором вы создаете облачную инфраструктуру. -
В списке сервисов выберите Virtual Private Cloud.
-
На панели слева выберите
Подсети. -
Справа сверху нажмите Создать подсеть.
-
В поле Имя укажите
vpc-subnet-a
. -
В поле Зона выберите зону доступности
ru-central1-a
. -
В поле Сеть выберите облачную сеть
sample-network
. -
В поле CIDR укажите
192.168.6.0/24
.Важно
Для успешной настройки сетевой связности между подсетями BareMetal и подсетями VPC/on-prem, их диапазоны адресов, заданные CIDR, не должны совпадать или пересекаться.
-
Нажмите Создать подсеть.
-
Аналогичным способом создайте в сети
sample-network
подсетьvpc-subnet-b
в зоне доступностиru-central1-b
с CIDR192.168.11.0/24
.
Создайте группы безопасности
-
В консоли управления
выберите каталог, в котором вы создаете облачную инфраструктуру. -
В списке сервисов выберите Virtual Private Cloud.
-
На панели слева выберите
Группы безопасности и нажмите кнопку Создать группу безопасности. -
В поле Имя задайте имя
vpc-ingress-sg
. -
В поле Сеть выберите созданную ранее сеть
sample-network
. -
В блоке Правила создайте следующие правила для управления трафиком:
Направление
трафикаОписание Диапазон портов Протокол Источник /
Назначение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
-
Нажмите Создать.
-
Аналогичным способом создайте в сети
sample-network
группу безопасностиalb-sg
со следующими правилами:Направление
трафикаОписание Диапазон портов Протокол Источник /
НазначениеCIDR блоки /
Группа безопасностиВходящий http
80
TCP
CIDR
0.0.0.0/0
Входящий healthchecks
30080
TCP
Проверки состояния балансировщика
— Исходящий any
Весь
Любой
CIDR
0.0.0.0/0
Создайте виртуальную машину
-
В консоли управления
выберите каталог, в котором вы создаете инфраструктуру. -
В списке сервисов выберите Compute Cloud.
-
На панели слева выберите
Виртуальные машины и нажмите кнопку Создать виртуальную машину. -
В блоке Образ загрузочного диска выберите образ Ubuntu 24.04.
-
В блоке Расположение выберите зону доступности
ru-central1-a
. -
В блоке Сетевые настройки:
- В поле Подсеть выберите созданную ранее подсеть
vpc-subnet-a
. - В поле Публичный IP-адрес выберите
Автоматически
. - В поле Группы безопасности выберите созданную ранее группу безопасности
vpc-ingress-sg
.
- В поле Подсеть выберите созданную ранее подсеть
-
В блоке Доступ выберите вариант SSH-ключ и укажите данные для доступа на ВМ:
- В поле Логин введите имя пользователя:
yc-user
. -
В поле SSH-ключ выберите SSH-ключ, сохраненный в вашем профиле пользователя организации.
Если в вашем профиле нет сохраненных SSH-ключей или вы хотите добавить новый ключ:
- Нажмите кнопку Добавить ключ.
- Задайте имя SSH-ключа.
- Загрузите или вставьте содержимое открытого SSH-ключа. Пару SSH-ключей для подключения к ВМ по SSH необходимо создать самостоятельно.
- Нажмите кнопку Добавить.
SSH-ключ будет добавлен в ваш профиль пользователя организации.
Если в организации отключена возможность добавления пользователями SSH-ключей в свои профили, добавленный открытый SSH-ключ будет сохранен только в профиле пользователя создаваемой виртуальной машины.
- В поле Логин введите имя пользователя:
-
В блоке Общая информация задайте имя ВМ:
vm-validator
. -
Нажмите кнопку Создать ВМ.
Создайте Routing Instance
Для организации сетевой связности между подсетями BareMetal и подсетями Virtual Private Cloud необходимо создать ресурс Routing Instance. Routing Instance
можно создать через обращение
Если в вашем каталоге уже есть настроенная сетевая связность с использованием Cloud Interconnect (VPC-to-On-Prem), то вы можете как использовать уже существующий Routing Instance
, так и запросить создание нового, дополнительного Routing Instance
для организации обособленной сетевой связности.
Проверьте наличие Routing Instance в вашем каталоге
-
Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.
По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду
yc config set folder-id <идентификатор_каталога>
. Также для любой команды вы можете указать другой каталог с помощью параметров--folder-name
или--folder-id
. -
Проверьте наличие Routing Instance в каталоге по умолчанию:
CLIВыполните команду:
yc cloudrouter routing-instance list
Если в вашем каталоге уже есть Routing Instance, команда выведет приблизительно такой результат:
+----------------------+-------------------------------------------+--------+-----------------------+ | ID | NAME | STATUS | PRIVATE CONNECTION ID | +----------------------+-------------------------------------------+--------+-----------------------+ | cf35oot8f0eu******** | ajeol2afu1js********-enpcfncr6uld******** | ACTIVE | cf395uf8dg7h******** | +----------------------+-------------------------------------------+--------+-----------------------+
-
Если у вас уже есть
Routing Instance
, вы можете пропустить следующий шаг и переходить к подготовке окружения BareMetal.Если у вас нет
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. На этом этапе вы создадите виртуальный сегмент сети (VRF), приватную подсеть и настроите приватное соединение с облачной сетью, а также арендуете два сервера BareMetal.
Создайте виртуальный сегмент сети и приватную подсеть
Создайте VRF и приватную подсеть в пуле серверов ru-central1-m4
:
- В консоли управления
выберите каталог, в котором вы создаете инфраструктуру. - В списке сервисов выберите BareMetal.
- Создайте виртуальный сегмент сети:
- На панели слева выберите
VRF и нажмите кнопку Создать VRF. - В поле Имя задайте имя VRF:
my-vrf
. - Нажмите кнопку Создать VRF.
- На панели слева выберите
- Создайте приватную подсеть:
- На панели слева выберите
Приватные подсети и нажмите кнопку Создать подсеть. - В поле Пул выберите пул серверов
ru-central1-m4
. - В поле Имя задайте имя подсети:
subnet-m4
. - Включите опцию IP-адресация и маршрутизация.
- В поле Виртуальный сетевой сегмент (VRF) выберите созданный ранее сегмент
my-vrf
. - В поле CIDR укажите
172.28.4.0/24
. - В поле Шлюз по умолчанию оставьте значение по умолчанию
172.28.4.1
. - Включите опцию Назначение IP-адресов по DHCP и в появившемся поле Диапазон IP-адресов оставьте значения по умолчанию:
172.28.4.1
—172.28.4.254
. - Нажмите кнопку Создать подсеть.
- На панели слева выберите
Настройте приватное соединение с облачной сетью
Создайте приватное соединение Cloud Interconnect в сервисе BareMetal:
-
В консоли управления
выберите каталог, в котором вы хотите создать приватное соединение. -
В списке сервисов выберите BareMetal.
-
На панели слева выберите
VRF и выберите нужный виртуальный сегмент сети. -
В блоке Приватное соединение с облачными сетями нажмите кнопку Настроить соединение и в открывшемся окне:
-
В поле Способ настройки выберите вариант
Указать идентификатор
и в поле Идентификатор соединения вставьте идентификатор приватного соединенияRouting Instance
.Вы также можете выбрать вариант
Выбрать из каталога
. В этом случае в появившемся списке выберите нужныйRouting Instance
.В результате в форме отобразятся CIDR подсетей Virtual Private Cloud, которые будут анонсироваться в Cloud Interconnect.
Важно
Для успешной настройки сетевой связности между подсетями BareMetal и подсетями VPC/on-prem, их диапазоны адресов, заданные CIDR, не должны совпадать или пересекаться.
-
Чтобы создать приватное соединение с указанными CIDR подсетей, нажмите кнопку Сохранить.
-
В результате на странице с информацией о VRF в блоке Приватное соединение с облачными сетями отобразится идентификатор созданного соединения и его статус.
Примечание
Создание приватного соединения может занять до двух рабочих дней — в это время соединение будет находиться в статусе Creating
. После создания статус соединения изменится на Ready
.
Приватное соединение c облачными сетями может находиться в одном из следующих статусов:
CREATING
— соединение создается.READY
— соединение сконфигурировано и готово к работе.ERROR
— возникла проблема с приватным соединением, для устранения необходимо обратиться в поддержку.DELETING
— соединение удаляется.UPDATING
— настройки приватного соединения обновляются.
Арендуйте серверы BareMetal
-
В консоли управления
выберите каталог, в котором вы создаете инфраструктуру. -
В списке сервисов выберите BareMetal и нажмите кнопку Заказать сервер.
-
В блоке Конфигурация нажмите фильтр
Пул
и выберите пул серверовru-central1-m4
. -
В блоке Конфигурация выберите подходящую конфигурацию сервера.
-
(Опционально) В блоке Диск настройте разметку дисков:
-
Нажмите кнопку Настроить разделы диска.
-
Укажите параметры разделов. Чтобы создать новый раздел, нажмите кнопку
Добавить раздел.Чтобы самостоятельно собрать RAID-массивы и настроить разделы дисков, нажмите кнопку Разобрать RAID.
-
Нажмите кнопку Сохранить.
-
-
В блоке Образ выберите образ
Debian 11
. -
В поле Период аренды выберите период, на который вы заказываете аренду —
1 день
.По окончании указанного периода аренда сервера будет автоматически продлена на такой же период. Прервать аренду в течение указанного периода аренды нельзя, но можно отказаться от дальнейшего продления аренды сервера.
-
В блоке Сетевые настройки:
- В поле Приватная подсеть выберите созданную ранее подсеть
subnet-m4
. - В поле Публичный адрес выберите
Автоматически
.
- В поле Приватная подсеть выберите созданную ранее подсеть
-
В блоке Доступ:
-
В поле Пароль воспользуйтесь одним из вариантов создания пароля для root-пользователя:
-
Чтобы сгенерировать пароль для root-пользователя, выберите опцию
Новый пароль
и нажмите кнопку Сгенерировать.Важно
Этот вариант предусматривает ответственность пользователя за безопасность пароля. Сохраните сгенерированный пароль в надежном месте: он не сохраняется в Yandex Cloud, и после заказа сервера вы не сможете посмотреть его.
-
Чтобы использовать пароль root-пользователя, сохраненный в секрете Yandex Lockbox, выберите опцию
Секрет Lockbox
:В полях Имя, Версия и Ключ выберите соответственно секрет, его версию и ключ, в которых сохранен ваш пароль.
Если у вас еще нет секрета Yandex Lockbox, нажмите кнопку Создать, чтобы создать его.
Этот вариант позволяет вам как задать собственный пароль (тип секрета
Пользовательский
), так и использовать пароль, сгенерированный автоматически (тип секретаГенерируемый
).
-
-
В поле Открытый SSH-ключ выберите SSH-ключ, сохраненный в вашем профиле пользователя организации.
Если в вашем профиле нет сохраненных SSH-ключей или вы хотите добавить новый ключ:
- Нажмите кнопку Добавить ключ.
- Задайте имя SSH-ключа.
- Загрузите или вставьте содержимое открытого SSH-ключа. Пару SSH-ключей для подключения к серверу по SSH необходимо создать самостоятельно.
- Нажмите кнопку Добавить.
SSH-ключ будет добавлен в ваш профиль пользователя организации.
Если в организации отключена возможность добавления пользователями SSH-ключей в свои профили, добавленный открытый SSH-ключ будет сохранен только в профиле пользователя операционной системы создаваемого сервера BareMetal.
-
-
В блоке Информация о сервере в поле Имя задайте имя сервера:
alb-back-0
. -
Нажмите кнопку Заказать сервер.
-
Аналогичным способом арендуйте в пуле серверов
ru-central1-m4
еще один серверalb-back-1
.
Примечание
Подготовка сервера и установка на него операционной системы может занять до 45 минут — в это время сервер будет находиться в статусе Provisioning
. После завершения установки ОС сервер перейдет в статус Ready
.
Разверните веб-приложение
На этом этапе вы развернете веб-приложение на серверах BareMetal. Веб-приложением на серверах будут использованы следующие ресурсы:
/opt/mygoapp
— рабочая директория веб-сервера./opt/mygoapp/server
— исполняемый файл веб-сервера./etc/systemd/system/mygoapp.service
— файл конфигурации сервиса для управления веб-сервером через systemd .
Чтобы развернуть веб-приложение на сервере:
-
Подключитесь по SSH к серверу BareMetal
alb-back-0
:ssh root@<публичный_IP-адрес_сервера>
Публичный IP-адрес сервера можно узнать в консоли управления
на странице Обзор с информацией о сервере BareMetal. Нужный адрес указан в блоке Публичная сеть в поле Публичный адрес.Все последующие действия этого шага выполняются в терминале сервера.
-
Подготовьте рабочую директорию:
mkdir -p /opt/mygoapp && cd /opt/mygoapp
-
Загрузите исполняемый файл веб-сервера:
wget https://storage.yandexcloud.net/yc-public-share/server
-
Установите для скачанного файла разрешение на исполнение:
chmod +x server
-
Создайте в
systemd
новый сервис:-
Откройте файл конфигурации создаваемого сервиса:
nano /etc/systemd/system/mygoapp.service
-
Вставьте в открытый файл следующее содержимое:
[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
-
Закройте файл, сохранив изменения.
-
-
Инициализируйте созданный сервис:
systemctl daemon-reload
-
Запустите сервис:
systemctl start mygoapp.service
-
Проверьте работу веб-приложения. Для этого на вашем локальном компьютере вставьте публичный 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) } }
-
Аналогичным способом разверните веб-приложение на сервере
alb-back-1
.
Проверьте сетевую связность
Убедитесь, что созданное ранее приватное соединение с облачной сетью готово к работе (статус Ready
), затем проверьте наличие сетевой связности между виртуальной машиной vm-validator
в сети Virtual Private Cloud и серверами в приватной подсети BareMetal:
-
Подключитесь по SSH к виртуальной машине
vm-validator
:ssh yc-user@<публичный_IP-адрес_ВМ>
Публичный IP-адрес ВМ можно узнать в консоли управления
, в поле Публичный IPv4-адрес блока Сеть на странице с информацией о ВМ.Все последующие действия этого шага выполняются в терминале виртуальной машины.
-
Выполните проверку сетевого доступа к серверу
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
-
Аналогичным способом убедитесь в наличии сетевого доступа к серверу
alb-back-1
, указав в командеping
его приватный IP-адрес.
Сохраните полученные приватные IP-адреса серверов BareMetal — они понадобятся при настройке L7-балансировщика.
Настройте L7-балансировщик
Создав сегменты инфраструктуры на стороне Virtual Private Cloud и на стороне BareMetal, а также убедившись в наличии сетевой связности между этими сегментами, настройте балансировку трафика от пользователей к веб-приложению при помощи L7-балансировщика.
Создайте целевую группу L7-балансировщика
-
В консоли управления
выберите каталог, в котором вы создаете инфраструктуру. -
В списке сервисов выберите Application Load Balancer.
-
На панели слева выберите
Целевые группы и нажмите кнопку Создать целевую группу. -
В поле Имя укажите имя целевой группы
bms-target-group
. -
В блоке Целевые ресурсы:
- В поле IP-адрес введите сохраненный ранее приватный IP-адрес сервера
alb-back-0
. - В строке с введенным IP-адресом включите опцию Не из VPC и нажмите кнопку Добавить целевой ресурс.
- Повторите два предыдущих действия, чтобы добавить в целевую группу приватный IP-адрес сервера
alb-back-1
.
- В поле IP-адрес введите сохраненный ранее приватный IP-адрес сервера
-
Нажмите кнопку Создать.
Создайте группу бэкендов
-
В консоли управления
выберите каталог, в котором вы создаете инфраструктуру. -
В списке сервисов выберите Application Load Balancer.
-
На панели слева выберите
Группы бэкендов и нажмите кнопку Создать группу бэкендов. -
В поле Имя укажите имя группы бэкендов
bms-backend-group
. -
В поле Тип выберите
HTTP
. -
В блоке Бэкенды нажмите кнопку Добавить и в появившейся форме Новый бэкенд:
-
В поле Имя задайте имя бэкенда
bms-backend
. -
В поле Целевые группы выберите созданную ранее целевую группу
bms-target-group
. -
В секции HTTP проверка состояния:
- В поле Таймаут, с задайте значение
3
. - В поле Интервал задайте значение
10
. - В поле Путь укажите корневой путь
/
. - В поле HTTP-коды выберите код ответа
200
.
- В поле Таймаут, с задайте значение
Значения остальных параметров оставьте без изменений.
-
-
Нажмите кнопку Создать.
Создайте HTTP-роутер
-
В консоли управления
выберите каталог, в котором вы создаете инфраструктуру. -
В списке сервисов выберите Application Load Balancer.
-
На панели слева выберите
HTTP-роутеры и нажмите кнопку Создать HTTP-роутер. -
В поле Имя укажите имя HTTP-роутера
http-80
. -
В блоке Виртуальные хосты нажмите кнопку Добавить виртуальный хост и в открывшейся форме Новый виртуальный хост:
- В поле Имя укажите имя виртуального хоста
http-vh
и нажмите кнопку Добавить маршрут. - В открывшейся форме Новый маршрут в поле Имя задайте имя маршрута
main-route-80
. - В поле Методы HTTP выберите
GET
. - В поле Группа бэкендов выберите созданную на предыдущем шаге группу бэкендов
bms-backend-group
. - Значения остальных параметров оставьте без изменений и внизу страницы нажмите кнопку Создать.
- В поле Имя укажите имя виртуального хоста
Создайте L7-балансировщик
-
В консоли управления
выберите каталог, в котором вы создаете инфраструктуру. -
В списке сервисов выберите Application Load Balancer.
-
Нажмите кнопку Создать L7-балансировщик и выберите Вручную.
-
В поле Имя укажите имя балансировщика
demo-alb-bms
. -
В поле Сеть выберите сеть
sample-network
. -
В поле Группы безопасности выберите
Из списка
и в появившемся списке выберите группу безопасностиalb-sg
. -
В блоке Размещение оставьте только зоны доступности
ru-central1-a
иru-central1-b
с подсетямиvpc-subnet-a
иvpc-subnet-b
соответственно. -
Если вы не хотите сохранять логи работы балансировщика в лог-группу, отключите опцию Запись логов.
-
В секции Обработчики нажмите кнопку Добавить обработчик и в открывшейся форме:
- В поле Имя укажите имя обработчика
alb-bms-listener
. - В поле HTTP-роутер выберите созданный ранее HTTP-роутер
http-80
.
- В поле Имя укажите имя обработчика
-
Значения остальных параметров оставьте без изменений и внизу страницы нажмите кнопку Создать.
-
Дождитесь, когда статус балансировщика изменится на
Active
, и в поле IP-адреса скопируйте его публичный IP-адрес. -
На вашем локальном компьютере вставьте IP-адрес балансировщика в адресную строку браузера. Если все настроено корректно, в окне браузера откроется развернутое на серверах BareMetal веб-приложение.
Настройте защиту от ботов, DDoS- и веб-атак
Убедившись в корректной работе L7-балансировщика, настройте для вашего веб-приложения защиту от ботов, DDoS- и веб-атак с помощью профиля безопасности Smart Web Security.
Создайте профиль ARL
-
В консоли управления
выберите каталог, в котором вы создаете инфраструктуру. -
В списке сервисов выберите Smart Web Security.
-
На панели слева выберите
Профили ARL и нажмите кнопку Создать профиль ARL. -
В поле Имя задайте имя профиля ARL
arl-profile-demo
. -
Нажмите кнопку
Добавить правило и в открывшемся окне:- В поле Имя задайте имя правила
permit-50-rps-in
. - В поле Приоритет укажите
10
. - В поле Лимит запросов задайте лимит в
50
запросов за1 секунду
. - Значения остальных параметров оставьте без изменений и нажмите кнопку Сохранить правило.
- В поле Имя задайте имя правила
-
Нажмите кнопку Создать.
Создайте профиль WAF
- В консоли управления
выберите каталог, в котором вы создаете инфраструктуру. - В списке сервисов выберите Smart Web Security.
- На панели слева выберите Профили WAF и нажмите кнопку Создать профиль WAF.
- В поле Имя задайте имя профиля WAF
waf-profile-demo
. - По умолчанию в профиле WAF включен набор базовых правил OWASP Core Rule Set
. Нажмите на строку с набором правил, чтобы посмотреть правила, которые в него входят. - Нажмите кнопку Создать.
Создайте профиль безопасности
-
В консоли управления
выберите каталог, в котором вы создаете инфраструктуру. -
В списке сервисов выберите Smart Web Security.
-
На панели слева выберите
Профили безопасности. -
Нажмите кнопку Создать профиль и выберите вариант
С чистого листа
. -
В поле Имя задайте имя профиля безопасности
sws-demo-profile
. -
В поле Профиль ARL выберите созданный ранее профиль
arl-profile-demo
. -
Создайте новое правило
Web Application Firewall
:-
Нажмите кнопку
Добавить правило. -
В поле Имя задайте имя правила
waf-rule
. -
В поле Приоритет укажите значение
200
. -
В блоке Тип правила выберите
Web Application Firewall
и в появившемся списке выберите созданное ранее правилоwaf-profile-demo
.К создаваемому правилу будет применен набор правил из профиля WAF. Подозрительные запросы будут направляться в Yandex SmartCaptcha.
-
Нажмите кнопку Добавить.
Добавленное правило появится в списке правил в блоке Правила безопасности.
-
-
Создайте новое правило
Smart Protection
:-
Повторно нажмите кнопку
Добавить правило. -
В поле Имя задайте имя правила
smart-rule
. -
В поле Приоритет укажите значение
300
. -
В блоке Тип правила выберите
Smart Protection
.Создаваемое правило будет направлять трафик на автоматический анализ с помощью алгоритмов машинного обучения и поведенческого анализа. Подозрительные запросы будут направляться в Yandex SmartCaptcha для дополнительной верификации.
-
Нажмите кнопку Добавить.
Добавленное правило появится в списке правил в блоке Правила безопасности.
-
-
Нажмите кнопку Создать профиль.
Включите защиту на хостах
-
В консоли управления
выберите каталог, в котором вы создаете инфраструктуру. -
В списке сервисов выберите Smart Web Security.
-
На панели слева выберите
Профили безопасности и выберите созданный ранее профильsws-demo-profile
. -
На панели сверху нажмите кнопку
Подключить к хосту и в открывшемся окне:- Выберите балансировщик
demo-alb-bms
. - Выберите HTTP-роутер
http-80
. - Выберите виртуальный хост
http-vh
. - Нажмите кнопку Подключить.
Информация о подключенном виртуальном хосте появится на вкладке Подключенные хосты на странице с обзором профиля безопасности Smart Web Security.
- Выберите балансировщик
Вы настроили веб-приложение, развернув его на двух серверах BareMetal, организовав балансировку пользовательского трафика с помощью L7-балансировщика Application Load Balancer и обеспечив защиту с помощью профиля безопасности Smart Web Security.
Как удалить созданные ресурсы
Чтобы перестать платить за созданные ресурсы:
-
Удалите виртуальную машину.
-
Удалите L7-балансировщик, затем последовательно удалите HTTP-роутер, группу бэкендов и целевую группу балансировщика.
-
Удалите профиль безопасности Smart Web Security, затем удалите профиль WAF и профиль ARL.
-
Удалить серверы BareMetal нельзя. Вместо этого откажитесь от продления их аренды.
-
Если вы оставляли включенной опцию записи логов L7-балансировщика, удалите лог-группу.
-
При необходимости последовательно удалите группы безопасности, подсети и облачную сеть.
-
При необходимости удалите приватное соединение:
Консоль управления- В консоли управления
выберите каталог, в котором вы создали инфраструктуру. - В списке сервисов выберите BareMetal.
- На панели слева выберите
VRF и выберите виртуальный сегмент сетиmy-vrf
. - В блоке Приватное соединение с облачными сетями нажмите
и выберите Отключить соединение. - В открывшемся окне подтвердите удаление.
В результате статус соединения сменится на
Deleting
. После того как все связи будут удалены, соединение пропадет из списка. - В консоли управления