Требуемые условия завершения
Задание:
d) Создайте балансировщик нагрузки и распределите трафик между инстансами Cloud-HA01 и Cloud-HA02.
- i. Ограничьте внешний доступ к балансировщику только протоколами HTTP и HTTPS.
2. Имена инстансов, виртуальных сетей, и балансировщика нагрузки должны соответствовать именованиям, указанным в Топологии (см. Топология L-3).
Основные моменты на что стоит обратить внимание перед написанием скрипта с использованием Terraform:
Разбираемся с балансировщиком нагрузки 'loadbalancer.tf'. Общий принцип:
Необходимо создавать следующие ресурсы:
- Создать балансировщик нагрузки с каким-то именем;
- при необходимости:
-
добавить в конкретную подсеть;
-
присвоить конкретный IP-адрес (порт);
-
-
Создать правило (правила) в созданном балансировщике нагрузки;
-
Создать целевую группу (группы) с указанием алгоритма балансировки, например "ROUND ROBIN", для определённого протокола (протоколов);
-
Добавить инстанс (инстансы) в целевую группу с указанием протокола (протоколов);
- при необходимости:
Пример в контексте текущего задания:
Cloud-ADM:
- Вся дальнейшая работа реализуется в контексте директории /home/altlinux/bin/terraform:
cd /home/altlinux/bin/terraform
- Создадим файл 'loadbalancer.tf', в котором последовательно будем описывать всё что касается создаваемого балансировщика нагрузки в контексте данного задания:
vim loadbalancer.tf
- Добавляем следующее содержимое:
- см. комментарии в коде;
# Создание балансировщика нагрузки с именнем "Cloud-LB"
# в подсети "External-SubNet", которая создаётся в сети "External-Net"
# с назначением IP-адреса "172.16.1.1" в соответствие с L3-Топологией
resource "openstack_lb_loadbalancer_v2" "cloud_lb" {
name = "Cloud-LB"
vip_subnet_id = openstack_networking_subnet_v2.external_subnet.id
vip_port_id = openstack_networking_port_v2.port_externalnet_lb.id
}
# Создание правила в балансировщике нагрузки для HTTP трафика
resource "openstack_lb_listener_v2" "cloud_lb_listener_http" {
name = "HTTP"
protocol = "TCP"
protocol_port = "80"
loadbalancer_id = openstack_lb_loadbalancer_v2.cloud_lb.id
}
# Создание правила в балансировщике нагрузки для HTTPS трафика
resource "openstack_lb_listener_v2" "cloud_lb_listener_https" {
name = "HTTPS"
protocol = "TCP"
protocol_port = "443"
loadbalancer_id = openstack_lb_loadbalancer_v2.cloud_lb.id
}
# Создать целевую группу для HTTP с указанием алгоритма балансировки "ROUND ROBIN"
resource "openstack_lb_pool_v2" "cloud_lb_pool_http" {
name = "HTTP"
protocol = "HTTP"
lb_method = "ROUND_ROBIN"
listener_id = openstack_lb_listener_v2.cloud_lb_listener_http.id
}
# Создать целевую группу для HTTPS с указанием алгоритма балансировки "ROUND ROBIN"
resource "openstack_lb_pool_v2" "cloud_lb_pool_https" {
name = "HTTPS"
protocol = "HTTPS"
lb_method = "ROUND_ROBIN"
listener_id = openstack_lb_listener_v2.cloud_lb_listener_https.id
}
# Добавить инстанс HA01 в целевую группу HTTP
resource "openstack_lb_member_v2" "cloud_lb_member_ha01_http" {
name = "HA01"
subnet_id = openstack_networking_subnet_v2.external_subnet.id
pool_id = openstack_lb_pool_v2.cloud_lb_pool_http.id
address = "172.16.1.2"
protocol_port = "80"
}
# Добавить инстанс HA01 в целевую группу HTTPS
resource "openstack_lb_member_v2" "cloud_lb_member_ha01_https" {
name = "HA01"
subnet_id = openstack_networking_subnet_v2.external_subnet.id
pool_id = openstack_lb_pool_v2.cloud_lb_pool_https.id
address = "172.16.1.2"
protocol_port = "443"
}
# Добавить инстанс HA02 в целевую группу HTTP
resource "openstack_lb_member_v2" "cloud_lb_member_ha02_http" {
name = "HA02"
subnet_id = openstack_networking_subnet_v2.external_subnet.id
pool_id = openstack_lb_pool_v2.cloud_lb_pool_http.id
address = "172.16.1.3"
protocol_port = "80"
}
# Добавить инстанс HA02 в целевую группу HTTPS
resource "openstack_lb_member_v2" "cloud_lb_member_ha02_https" {
name = "HA02"
subnet_id = openstack_networking_subnet_v2.external_subnet.id
pool_id = openstack_lb_pool_v2.cloud_lb_pool_https.id
address = "172.16.1.3"
protocol_port = "443"
}
- Проверяем конфигурацию и план terraform validate и terraform plan и запускаем развёртывание ресурсов:
terraform apply
-
- Подтверждаем развёртывание введя yes:
-
- Результат:
- Проверяем наличие созданных ресурсов средствами openstack-cli:
- Проверяем наличие созданных ресурсов средствами веб-интерфейса:
Последнее изменение: вторник, 24 июня 2025, 12:55