Развертывание веб-приложения на серверах BareMetal с L7-балансировщиком и защитой Yandex 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 InstanceCloud 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 блоки /
Группа безопасностиВходящий http80TCPCIDR0.0.0.0/0Входящий https443TCPCIDR0.0.0.0/0Входящий ssh22TCPCIDR0.0.0.0/0Исходящий anyВесьЛюбойCIDR0.0.0.0/0 -
Нажмите Создать.
-
Аналогичным способом создайте в сети
sample-networkгруппу безопасностиalb-sgсо следующими правилами:Направление
трафикаОписание Диапазон портов Протокол Источник /
НазначениеCIDR блоки /
Группа безопасностиВходящий http80TCPCIDR0.0.0.0/0Входящий healthchecks30080TCPПроверки состояния балансировщика— Исходящий anyВесьЛюбойCIDR0.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-ключа будет создан и загружен архив с парой ключей. В ОС на базе Linux или macOS распакуйте архив в папку
/home/<имя_пользователя>/.ssh. В ОС Windows распакуйте архив в папкуC:\Users\<имя_пользователя>/.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-ключа будет создан и загружен архив с парой ключей. В ОС на базе Linux или macOS распакуйте архив в папку
/home/<имя_пользователя>/.ssh. В ОС Windows распакуйте архив в папкуC:\Users\<имя_пользователя>/.ssh. Дополнительно вводить открытый ключ в консоли управления не требуется.
-
-
Нажмите кнопку Добавить.
SSH-ключ будет добавлен в ваш профиль пользователя организации. Если в организации отключена возможность добавления пользователями SSH-ключей в свои профили, добавленный открытый SSH-ключ будет сохранен только в профиле пользователя внутри создаваемого ресурса.
-
-
-
В блоке Информация о сервере в поле Имя задайте имя сервера:
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. Нужный адрес указан в блоке Приватная сеть в поле Приватный IP-адрес.Результат:
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. После того как все связи будут удалены, соединение пропадет из списка. - В консоли управления