Балансировщик нагрузки через Terraform

Terraform позволяет автоматизировать создание и настройку балансировщика нагрузки в PS Cloud Services.

Перед началом убедитесь, что у вас установлен Terraform и настроен OpenStack provider.
В блоке конфигурации подключения обязательно укажите параметр use_octavia = true.


Пример шаблона Terraform

#### 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 #####

Пояснения к шаблону

  • Provider — параметры подключения к OpenStack (логин, проект, пароль, регион).
  • Load Balancer Details — имя балансировщика и сеть, в которой он создаётся.
  • Listener Details — протокол, порт и количество соединений.
  • Pool Details — настройки пула (протокол, алгоритм балансировки).
  • Monitor Details — параметры проверки состояния серверов.
  • Pool Members Details — список серверов, участвующих в балансировке.
  • Output — вывод IP-адреса балансировщика после его создания (опционально).

Результат

После применения шаблона Terraform будет создан балансировщик нагрузки с listener, пулом, проверкой состояния и подключёнными серверами.

Для запуска используйте команды:

terraform plan
terraform apply

Для удаления ресурсов выполните:

terraform destroy

Поддержка

Если возникнут вопросы, обратитесь в техническую поддержку PS Cloud Services.

question
Не нашли подходящего ответа?
Напишите запрос в службу поддержки
Написать сейчас