Организация виртуального хостинга
- Подготовьте облако к работе
- Создайте облачную сеть
- Зарезервируйте статический публичный IP-адрес
- Создайте группы безопасности
- Импортируйте TLS-сертификаты сайтов в Certificate Manager
- Создайте группы ВМ для сайтов
- Загрузите файлы сайтов на ВМ
- Создайте группы бэкендов
- Создайте и настройте HTTP-роутеры
- Создайте L7-балансировщик
- Настройте DNS для сайтов
- Проверьте работу хостинга
- Удалите созданные ресурсы
Сценарий описывает организацию виртуального хостинга — размещение нескольких веб-сайтов с разными доменными именами по одному IP-адресу — с помощью Yandex Application Load Balancer.
В качестве примеров в сценарии будут использоваться три доменных имени: site-a.com
, site-b.com
и default.com
.
Чтобы создать виртуальный хостинг:
- Подготовьте облако к работе.
- Создайте облачную сеть.
- Зарезервируйте статический публичный IP-адрес.
- Создайте группы безопасности.
- Импортируйте TLS-сертификаты сайтов в Yandex Certificate Manager.
- Создайте группы виртуальных машин для сайтов.
- Загрузите файлы сайтов на ВМ.
- Создайте группы бэкендов.
- Создайте и настройте HTTP-роутеры.
- Создайте L7-балансировщик.
- Настройте DNS для сайтов.
- Проверьте работу хостинга.
Если созданные ресурсы вам больше не нужны, удалите их.
Подготовьте облако к работе
Зарегистрируйтесь в Yandex Cloud и создайте платежный аккаунт:
- Перейдите в консоль управления
, затем войдите в Yandex Cloud или зарегистрируйтесь. - На странице Yandex Cloud Billing
убедитесь, что у вас подключен платежный аккаунт, и он находится в статусеACTIVE
илиTRIAL_ACTIVE
. Если платежного аккаунта нет, создайте его и привяжите к нему облако.
Если у вас есть активный платежный аккаунт, вы можете создать или выбрать каталог, в котором будет работать ваша инфраструктура, на странице облака
Подробнее об облаках и каталогах.
Необходимые платные ресурсы
В стоимость поддержки виртуального хостинга входят:
- Плата за постоянно запущенные ВМ (см. тарифы Yandex Compute Cloud).
- Плата за использование публичного статического IP-адреса (см. тарифы Yandex Virtual Private Cloud).
- Плата за использование вычислительных ресурсов L7-балансировщика (см. тарифы Application Load Balancer).
- Плата за публичные DNS-запросы и зоны DNS, если вы используете Yandex Cloud DNS (см. тарифы Cloud DNS).
Создайте облачную сеть
Все ресурсы, созданные в сценарии, будут относиться к одной облачной сети.
Чтобы создать сеть:
- В консоли управления
выберите сервис Virtual Private Cloud. - Нажмите кнопку Создать сеть.
- Укажите Имя сети:
vhosting-network
. - В поле Дополнительно выберите опцию Создать подсети.
- Нажмите кнопку Создать сеть.
Зарезервируйте статический публичный IP-адрес
Для работы виртуального хостинга потребуется статический публичный IP-адрес, который будет назначен L7-балансировщику.
Чтобы зарезервировать IP-адрес:
- В консоли управления
выберите сервис Virtual Private Cloud. - На панели слева выберите
IP-адреса. Нажмите кнопку Зарезервировать адрес. - В открывшемся окне выберите зону доступности
ru-central1-a
. Нажмите кнопку Зарезервировать.
Создайте группы безопасности
Группы безопасности содержат правила, которые разрешают балансировщику получать входящий трафик и отправлять его на ВМ, а ВМ — получать этот трафик. В сценарии будут созданы две группы безопасности: для балансировщика и для всех ВМ.
Чтобы создать группы безопасности:
-
В консоли управления
выберите сервис Virtual Private Cloud. -
На панели слева выберите
Группы безопасности. -
Создайте группу безопасности для балансировщика:
-
Нажмите кнопку Создать группу безопасности.
-
Укажите Имя группы:
vhosting-sg-balancer
. -
Выберите Сеть
vhosting-network
. -
В блоке Правила создайте следующие правила по инструкции под таблицей:
Направление
трафикаОписание Диапазон портов Протокол Источник /
назначениеCIDR блоки Исходящий
any
Весь
Любой
CIDR
0.0.0.0/0
Входящий
ext-http
80
TCP
CIDR
0.0.0.0/0
Входящий
ext-https
443
TCP
CIDR
0.0.0.0/0
Входящий
healthchecks
30080
TCP
Проверки состояния балансировщика
— -
Выберите вкладку Исходящий трафик или Входящий трафик.
-
Нажмите кнопку Добавить правило.
-
В открывшемся окне в поле Диапазон портов укажите один порт или диапазон портов, куда или откуда будет поступать трафик.
-
В поле Протокол укажите нужный протокол или оставьте
Любой
, чтобы разрешить передачу трафика по всем протоколам. -
В поле Назначение или Источник выберите назначение правила:
CIDR
— правило будет применено к диапазону IP-адресов. В поле CIDR блоки укажите CIDR и маски подсетей, в которые или из которых будет поступать трафик. Чтобы добавить несколько CIDR, нажимайте кнопку Добавить CIDR.Группа безопасности
— правило будет применено к ВМ из текущей группы или из выбранной группы безопасности.Проверки состояния балансировщика
— правило, которое позволяет балансировщику проверять состояние ВМ.
-
Нажмите кнопку Сохранить. Таким образом создайте все правила из таблицы.
-
Нажмите кнопку Сохранить.
-
-
Аналогично создайте группу безопасности для ВМ с именем
vhosting-sg-vms
, той же сетьюvhosting-network
и следующими правилами:Направление
трафикаОписание Диапазон портов Протокол Источник CIDR блоки Входящий
balancer
80
TCP
Группа безопасности
vhosting-sg-balancer
Входящий
ssh
22
TCP
CIDR
0.0.0.0/0
Импортируйте TLS-сертификаты сайтов в Certificate Manager
Чтобы пользователи могли обращаться к сайтам по защищенному протоколу HTTPS (HTTP over TLS), для них должны быть выпущены TLS-сертификаты. Для использования в L7-балансировщике сертификаты нужно импортировать в Certificate Manager.
Если у ваших сайтов нет сертификатов, вы можете получить в Certificate Manager сертификаты от Let's Encrypt®. В этом случае дополнительных действий после создания сертификатов не требуется: они импортируются автоматически.
Чтобы импортировать уже имеющийся сертификат для сайта site-a.com
:
- В консоли управления
выберите сервис Certificate Manager. - Нажмите кнопку Добавить сертификат и выберите пункт Пользовательский сертификат.
- Укажите Имя сертификата:
vhosting-cert-a
. - В поле Сертификат нажмите кнопку Добавить сертификат. Загрузите Файл с вашим сертификатом или укажите его Содержимое и нажмите кнопку Добавить.
- Если ваш сертификат выпущен сторонним центром сертификации, в поле Цепочка промежуточных сертификатов нажмите кнопку Добавить цепочку. Загрузите Файл с цепочкой сертификатов или укажите его Содержимое и нажмите кнопку Добавить.
- В поле Приватный ключ нажмите кнопку Добавить приватный ключ. Загрузите Файл с ключом или укажите его Содержимое и нажмите кнопку Добавить.
- Нажмите кнопку Создать.
Аналогично импортируйте сертификаты для сайтов site-b.com
и default.com
с именами vhosting-cert-b
и vhosting-cert-default
.
Создайте группы ВМ для сайтов
В качестве веб-серверов для двух сайтов будут выступать ВМ Compute Cloud — по одной группе из нескольких одинаковых ВМ на каждый сайт. В этом сценарии серверы будут реализованы на LEMP-стеке (Linux, nginx, MySQL®, PHP; подробнее см. в сценарии использования Веб-сайт на LAMP- или LEMP-стеке).
Чтобы создать группу ВМ для сайта site-a.com
:
-
В консоли управления
выберите сервис Compute Cloud. -
На панели слева выберите
Группы виртуальных машин. Нажмите кнопку Создать группу виртуальных машин. -
Укажите имя группы ВМ:
vhosting-ig-a
. -
В блоке Распределение выберите несколько зон доступности, чтобы обеспечить отказоустойчивость хостинга.
-
В блоке Шаблон виртуальной машины нажмите кнопку Задать.
-
В блоке Образ загрузочного диска откройте вкладку Marketplace и нажмите кнопку Показать все продукты Marketplace. Выберите продукт LEMP и нажмите кнопку Использовать.
-
В блоке Вычислительные ресурсы:
- Выберите платформу ВМ.
- Укажите необходимое количество vCPU и объем RAM.
Для функционального тестирования сайта хватит минимальной конфигурации:
- Платформа —
Intel Ice Lake
. - Гарантированная доля vCPU —
20%
. - vCPU —
2
. - RAM —
1 ГБ
.
-
В блоке Сетевые настройки выберите Сеть
vhosting-network
, созданную ранее, и ее подсети. -
В поле Публичный адрес выберите
Автоматически
. -
Выберите группу безопасности
vhosting-sg-vms
, созданную ранее. -
Укажите данные для доступа на ВМ:
-
В поле Логин введите имя пользователя.
-
В поле SSH-ключ вставьте содержимое файла открытого ключа.
Пару ключей для подключения по SSH необходимо создать самостоятельно, см. раздел о подключении к ВМ по SSH.
Внимание
IP-адрес и имя хоста (FQDN) для подключения к ВМ назначатся ей при создании. Если вы выбрали вариант
Без адреса
в поле Публичный адрес, вы не сможете обращаться к ВМ из интернета. -
-
Нажмите кнопку Сохранить.
-
В блоке Масштабирование укажите Размер группы ВМ —
2
. -
В блоке Интеграция с Application Load Balancer выберите опцию Создать целевую группу и укажите имя группы —
vhosting-tg-a
. Подробнее о целевых группах. -
Нажмите кнопку Создать.
Аналогично создайте для сайта site-b.com
вторую группу ВМ с именем vhosting-ig-b
и целевую группу с именем vhosting-tg-b
.
Создание группы ВМ может занять несколько минут. Когда группа перейдет в статус RUNNING
, а все ВМ в ней — в статус RUNNING_ACTUAL
, вы можете загрузить на них файлы веб-сайта.
Загрузите файлы сайтов на ВМ
Чтобы проверить работу веб-серверов, загрузите на ВМ файлы index.html
: на ВМ из группы vhosting-ig-a
— с одним содержанием, а на ВМ из группы vhosting-ig-b
— с другим.
Пример файла index.html для группы vhosting-ig-a
<!DOCTYPE html>
<html>
<head>
<title>Site A</title>
</head>
<body>
<p>This is site A</p>
</body>
</html>
Пример файла index.html для группы vhosting-ig-b
<!DOCTYPE html>
<html>
<head>
<title>Site B</title>
</head>
<body>
<p>This is site B</p>
</body>
</html>
Чтобы загрузить файл на ВМ:
-
В блоке Сеть на странице виртуальной машины в консоли управления
найдите публичный IP-адрес виртуальной машины. -
Подключитесь к виртуальной машине по протоколу SSH.
-
Выдайте права на запись для вашего пользователя на директорию
/var/www/html
:UbuntuCentOSsudo chown -R "$USER":www-data /var/www/html
sudo chown -R "$USER":apache /var/www/html
-
Загрузите на ВМ файлы веб-сайта с помощью протокола SCP
.Linux/macOSWindowsИспользуйте утилиту командной строки
scp
:scp -r <путь_до_директории_с_файлами> <имя_пользователя_ВМ>@<IP-адрес_виртуальной_машины>:/var/www/html
С помощью программы WinSCP
скопируйте локальную директорию с файлами в директорию/var/www/html
на ВМ.
Повторите этот процесс с нужными файлами для каждой ВМ из групп vhosting-ig-a
и vhosting-ig-b
.
Создайте группы бэкендов
Целевые группы, созданные вместе с группами ВМ, нужно привязать к группам бэкендов с настройками распределения трафика.
Для бэкендов в группах будут созданы проверки состояния: балансировщик будет периодически отправлять проверочные запросы к ВМ и ожидать ответа в течение определенного периода.
Чтобы создать группу бэкендов для сайта site-a.com
:
- В консоли управления
выберите сервис Application Load Balancer. - На панели слева выберите
Группы бэкендов. Нажмите кнопку Создать группу бэкендов. - Укажите Имя группы бэкендов:
vhosting-bg-a
. - В блоке Бэкенды нажмите кнопку Добавить.
- Укажите Имя бэкенда:
vhosting-backend-a
. - В поле Целевые группы выберите группу
vhosting-tg-a
. - Укажите Порт, на котором ВМ бэкенда будут принимать входящий трафик от балансировщика:
80
. - Нажмите кнопку Добавить проверку состояния.
- Укажите Порт, на котором ВМ бэкенда будут принимать проверочные соединения:
80
. - Укажите Путь, к которому будет обращаться балансировщик при проверке состояния:
/
. - Нажмите кнопку Создать.
Аналогично создайте для сайта site-b.com
вторую группу бэкендов vhosting-bg-b
, в ней — бэкенд vhosting-backend-b
и привяжите к нему целевую группу vhosting-tg-b
.
Создайте и настройте HTTP-роутеры
Группы бэкендов нужно привязать к HTTP-роутерам с правилами маршрутизации HTTP-запросов. В сценарии будут созданы два роутера для «основных» сайтов site-a.com
и site-b.com
и роутер «по умолчанию» для сайта default.com
, который будет отвечать на каждый запрос HTTP-кодом состояния 404 Not Found
.
Создайте HTTP-роутеры для сайтов
Чтобы создать HTTP-роутер для сайта site-a.com
:
- В консоли управления
выберите сервис Application Load Balancer. - На панели слева выберите
HTTP-роутеры. Нажмите кнопку Создать HTTP-роутер. - Укажите Имя HTTP-роутера:
vhosting-router-a
. - Нажмите кнопку Добавить виртуальный хост.
- Укажите Имя виртуального хоста:
vhosting-host-a
. - В поле Authority укажите доменное имя сайта:
site-a.com
. - Нажмите кнопку Добавить маршрут.
- Укажите Имя маршрута:
vhosting-route-a
. - В поле Группа бэкендов выберите группу
vhosting-bg-a
. - Нажмите кнопку Создать.
Аналогично создайте для сайта site-b.com
HTTP-роутер vhosting-router-b
и привяжите к нему группу бэкендов vhosting-bg-b
.
Создайте HTTP-роутер «по умолчанию»
Чтобы создать HTTP-роутер для сайта default.com
:
-
В консоли управления
выберите сервис Application Load Balancer. -
На панели слева выберите
HTTP-роутеры. Нажмите кнопку Создать HTTP-роутер. -
Укажите Имя HTTP-роутера:
vhosting-router-default
. -
Нажмите кнопку Добавить виртуальный хост.
-
Укажите Имя виртуального хоста:
vhosting-host-default
. -
В поле Authority укажите доменное имя сайта:
default.com
. -
Нажмите кнопку Добавить маршрут.
-
Укажите Имя маршрута:
vhosting-route-a
. -
В поле Действие выберите
Ответ
. -
В поле Код состояния HTTP выберите
404 Not Found
. -
В поле Тело ответа нажмите кнопку Выбрать. Выберите способ
Текст
и в поле Содержимое укажите:404 Not Found This is the default site.
Нажмите кнопку Добавить.
-
Нажмите кнопку Создать.
Создайте L7-балансировщик
Чтобы создать балансировщик:
- В консоли управления
выберите сервис Application Load Balancer. - Нажмите кнопку Создать L7-балансировщик.
- Укажите Имя балансировщика:
vhosting-alb
. - В блоке Сетевые настройки выберите группу безопасности
vhosting-sg-balancer
, созданную ранее. - Создайте обработчик для перенаправления HTTP-запросов на HTTPS:
- В блоке Обработчики нажмите кнопку Добавить обработчик.
- Укажите Имя обработчика:
vhosting-listener-http
. - В блоке Публичный IP-адрес выберите тип
Список
и IP-адрес, зарезервированный ранее. - В поле Протокол выберите пункт
Перенаправлять на HTTPS
.
- Создайте обработчик HTTPS-запросов:
- Снова нажмите кнопку Добавить обработчик.
- Укажите Имя обработчика:
vhosting-listener-https
. - В блоке Публичный IP-адрес выберите тип
Список
и IP-адрес, зарезервированный ранее. - В поле Протокол выберите пункт
HTTPS
. - В блоке Основной обработчик выберите сертификат
vhosting-cert-default
и HTTP-роутерvhosting-router-default
. - Добавьте обработчик SNI для сайта
site-a.com
:- Нажмите кнопку Добавить обработчик SNI.
- Укажите Имя обработчика SNI:
vhosting-sni-a
. - В поле Имена серверов укажите
site-a.com
. - Выберите сертификат
vhosting-cert-a
и HTTP-роутерvhosting-router-a
.
- Аналогично добавьте обработчик SNI для сайта
site-b.com
— с именемvhosting-sni-b
, именем сервераsite-b.com
, сертификатомvhosting-cert-b
и HTTP-роутеромvhosting-router-b
.
- Нажмите кнопку Создать.
Настройте DNS для сайтов
Доменные имена site-a.com
, site-b.com
и default.com
должны быть связаны с IP-адресом L7-балансировщика с помощью записей DNS.
Чтобы настроить DNS для сайта site-a.com
:
-
В консоли управления
выберите сервис Application Load Balancer. -
Скопируйте IP-адрес созданного балансировщика.
-
На сайте компании, которая предоставляет вам услуги DNS-хостинга, перейдите в настройки DNS.
-
Создайте или измените A-запись для
site-a.com
таким образом, чтобы она указывала на скопированный IP-адрес:site-a.com. A <IP-адрес_L7-балансировщика>
Если вы пользуетесь Yandex Cloud DNS, настройте запись по следующей инструкции:
Инструкция по настройке DNS-записей для Cloud DNS
Консоль управления- В консоли управления
выберите сервис Cloud DNS. - Если у вас нет публичной зоны DNS, создайте ее:
- Нажмите кнопку Создать зону.
- Укажите Имя зоны:
vhosting-dns-a
. - В поле Зона укажите доменное имя сайта с точкой в конце:
site-a.com.
- Выберите Тип зоны —
Публичная
. - Нажмите кнопку Создать.
- Создайте запись в зоне:
- В списке зон нажмите на зону
vhosting-dns-a
. - Нажмите кнопку Создать запись.
- Поле Имя оставьте пустым, чтобы запись соответствовала доменному имени
site-a.com
(а не имени с субдоменом, напримерwww.site-a.com
). - Выберите Тип записи — A.
- В поле Значение вставьте скопированный IP-адрес балансировщика.
- Нажмите кнопку Создать.
- В списке зон нажмите на зону
- В консоли управления
Аналогично настройте DNS для сайтов site-b.com
и default.com
, используя тот же IP-адрес.
Через 15–20 минут после настройки DNS вы сможете проверить работу сайтов.
Проверьте работу хостинга
Чтобы проверить работу хостинга, откройте каждый из трех сайтов в браузере:
https://site-a.com
иhttps://site-b.com
— должны отобразиться страницы, загруженные на ВМ.https://default.com
— должна отобразиться страница с ошибкой404 Not Found
, настроенная при создании HTTP-роутера.
Удалите созданные ресурсы
Чтобы остановить работу хостинга и перестать платить за созданные ресурсы: