Как создать балансировщик нагрузки с помощью Terraform?

Данный шаблон можно использовать для создания и настройки балансировщика нагрузки в openstack.

Шаблон по созданию инстанса с помощью Terraform описан по ссылке.   

Создание балансировщика через веб-интерфейс Horizon описано по ссылке.

Внимание!
При создании балансировщика с помощью Terraform, необходимо указать параметр
use_octavia = true в блоке, в котором описываются параметры подключения к openstack.

Шаблон для создания балансировщика нагрузки.

Конечный вид шаблона:

#### Configure the OpenStack Provider ####
provider "openstack" {
  user_name   = "your_project_login"
  tenant_name = "your_project_name"
  password    = "your_project_password"
  auth_url    = "https://auth.pscloud.io/v3/"
  region      = "kz-ala-1"
  use_octavia = true
}
#### End config block ####



##### Load Balancer Details #####
resource "openstack_lb_loadbalancer_v2" "http_balancer" {
  name           = "http_balancer"
  vip_network_id = "be8fa30d-be27-45ed-8f72-ab9bc1ab8b3f" 
}
##### End Load Balancer Details #####


##### Listener Details #####
resource "openstack_lb_listener_v2" "http_listen" {
  name             = "http_listen"
  description      = "what to listen?"
  protocol         = "HTTP"
  protocol_port    = 80
  connection_limit = -1
  loadbalancer_id  = openstack_lb_loadbalancer_v2.http_balancer.id
}
##### End Listener Details #####


##### Pool Details #####
resource "openstack_lb_pool_v2" "http_pool" {
  name        = "http_pool"
  protocol    = "HTTP"
  lb_method   = "LEAST_CONNECTIONS"
  listener_id = openstack_lb_listener_v2.http_listen.id
}
##### End Pool Details #####


##### Monitor Details #####
resource "openstack_lb_monitor_v2" "http_monitor" {
  name           = "http_monitor"
  delay          = 5
  max_retries    = 3
  timeout        = 5
  type           = "HTTP"
  url_path       = "/"
  http_method    = "GET"
  expected_codes = "200"
  pool_id = openstack_lb_pool_v2.http_pool.id
}
##### End Monitor Details #####


##### Pool Members Details #####
resource "openstack_lb_member_v2" "alpha_http_member" {
  name          = "alpha_http_member"
  address       = "192.168.0.191"
  protocol_port = 80
  pool_id       = openstack_lb_pool_v2.http_pool.id
}

resource "openstack_lb_member_v2" "beta_http_member" {
  name          = "beta_http_member"
  address       = "192.168.0.205"
  protocol_port = 80
  pool_id       = openstack_lb_pool_v2.http_pool.id
}
##### End Pool Members Details #####


##### (Optional) Load Balancer IP Output #####
output "http_balancer_vip_address" {
  value = openstack_lb_loadbalancer_v2.http_balancer.vip_address
}
##### (Optional) End Load Balancer IP Output #####


Блок Configure the OpenStack Provider
Описывает детали необходимые для подключения к openstack, такие как имя проекта, логин и пароль от него.

Блок Load Balancer Details
Описывает задание имени для балансировщика и подсеть которую необходимо прокинуть в балансировщик. Можно использовать как серую так и белую сети.

Подробнее по ссылке.

Блок Listener Details
Описывает детали прослушивания: с помощью какого протокола, на каком порту, количество соединений.

Подробнее по ссылке.

Блок Pool Details
Описывает задание параметров непосредственно для пула: используемый протокол и алгогоритм для балансировки.

Подробнее по ссылке.

Блок Monitor Details
Описывает детали мониторинга пула инстансов: протокол с помощью которого будет производится проверка, после выбора которого указываются более подробные детали для выбранного протокола.

Подробнее по ссылке.

Блок Pool Members Details
В данном блоке непосредственно указываются имена инстансов-участников которые будут в пуле и их адреса, которые необходимо добавить в пул. В качестве примеров указаны имена двух инстансов: alpha_http_member и beta_http_member. Данные имена можно задавать на своё усмотрение, но необходимо будет указать корректные имена далее по шаблону, если таковые будут встречаться.

Блок Load Balancer IP Output
Данный блок является опциональным. Он описывает вывод IP адреса балансировщика непосредственно после его создания.

Помогла ли вам эта информация?
Не можете найти ответ на свой вопрос?
Напишите запрос в службу поддержки
Написать сейчас