---
title: "Создать облачный балансировщик нагрузки через Terraform"
sidebar_label: "Создать балансировщик нагрузки"
sidebar_position: 1
description: "Как создать облачный балансировщик нагрузки с типом Продвинутый с резервированием"
---

import Formbricks from '@theme/MDXComponents/Formbricks'
import ConfigureProviders from '@site/terraform/_partials/common/configure-providers.mdx'
import ConfigureProvidersConfig from '@site/terraform/_partials/common/configure-providers-config.mdx'
import CreateRouter from '@site/terraform/_partials/cloud-networks/create-router.mdx'
import CreateNetworks from '@site/terraform/_partials/cloud-networks/create-networks.mdx'
import CreateBalancer from '@site/terraform/_partials/cloud-load-balancers/create-balancer.mdx'
import CreateRule from '@site/terraform/_partials/cloud-load-balancers/create-rule.mdx'
import AddServerToTargetGroup from '@site/terraform/_partials/cloud-load-balancers/add-server-to-target-group.mdx'
import CreateAvailabilityCheck from '@site/terraform/_partials/cloud-load-balancers/create-availability-check.mdx'
import CreateTargetGroup from '@site/terraform/_partials/cloud-load-balancers/create-target-group.mdx'
import CreateResourcesAlert from '@site/terraform/_partials/common/create-resources-alert.mdx'
import GetIp from '@site/terraform/_partials/cloud-networks/get-ip.mdx'

# Создать облачный балансировщик нагрузки через Terraform

<CreateResourcesAlert />

<br />

1. Опционально: [настройте провайдеры](#configure-providers).
2. [Создайте приватную сеть и подсеть](#create-networks).
3. [Создайте облачный роутер, подключенный к интернету](#create-router).
4. [Создайте облачный балансировщик нагрузки](#create-load-balancer).
5. [Создайте правило](#create-rule).
6. [Создайте целевую группу](#create-target-group).
7. [Добавьте сервер в целевую группу](#add-server-to-target-group).
8. [Создайте проверку доступности](#create-availability-check).
9. [Создайте публичный IP-адрес и подключите его к балансировщику нагрузки](#create-public-ip).
10. [Получите IP-адрес балансировщика нагрузки](#get-ip).

## Конфигурационные файлы \{#config}

<details>
  <summary>Пример файла для настройки провайдеров</summary>

  <ConfigureProvidersConfig />
</details>

<details>
  <summary>Пример файла для создания балансировщика нагрузки</summary>

  ```hcl
  resource "openstack_networking_network_v2" "network_1" {
    name           = "private-network"
    admin_state_up = "true"
  }

  resource "openstack_networking_subnet_v2" "subnet_1" {
    name       = "private-subnet"
    network_id = openstack_networking_network_v2.network_1.id
    cidr       = "192.168.199.0/24"
  }

  data "openstack_networking_network_v2" "external_network_1" {
    external = true
  }

  resource "openstack_networking_router_v2" "router_1" {
    name                = "router"
    external_network_id = data.openstack_networking_network_v2.external_network_1.id
  }

  resource "openstack_networking_router_interface_v2" "router_interface_1" {
    router_id = openstack_networking_router_v2.router_1.id
    subnet_id = openstack_networking_subnet_v2.subnet_1.id
  }

  resource "openstack_lb_loadbalancer_v2" "load_balancer_1" {
    name          = "load-balancer"
    vip_subnet_id = openstack_networking_subnet_v2.subnet_1.id
    flavor_id     = "ac18763b-1fc5-457d-9fa7-b0d339ffb336"
  }

  resource "openstack_lb_listener_v2" "listener_1" {
    name            = "listener"
    protocol        = "TCP"
    protocol_port   = "80"
    loadbalancer_id = openstack_lb_loadbalancer_v2.load_balancer_1.id
  }

  resource "openstack_lb_pool_v2" "pool_1" {
    name        = "pool"
    protocol    = "PROXY"
    lb_method   = "ROUND_ROBIN"
    listener_id = openstack_lb_listener_v2.listener_1.id
  }

  resource "openstack_lb_member_v2" "member_1" {
    name          = "member"
    subnet_id     = openstack_networking_subnet_v2.subnet_1.id
    pool_id       = openstack_lb_pool_v2.pool_1.id
    address       = "192.168.199.4"
    protocol_port = "80"
  }

  resource "openstack_lb_monitor_v2" "monitor_1" {
    name        = "monitor"
    pool_id     = openstack_lb_pool_v2.pool_1.id
    type        = "HTTP"
    delay       = "10"
    timeout     = "4"
    max_retries = "5"
  }

  resource "openstack_networking_floatingip_v2" "floatingip_1" {
    pool    = "external-network"
    port_id = openstack_lb_loadbalancer_v2.load_balancer_1.vip_port_id
  }

  output "public_ip_address" {
    value = openstack_networking_floatingip_v2.floatingip_1.fixed_ip
  }
  ```
</details>

## 1. Опционально: настроить провайдеры \{#configure-providers}

Если вы [настроили провайдеры](/terraform/configure-terraform-environment/#configure-providers) Selectel и OpenStack, пропустите этот шаг.

<ConfigureProviders />

## 2. Создать приватную сеть и подсеть \{#create-networks}

<CreateNetworks />

## 3. Создать облачный роутер, подключенный к интернету \{#create-router}

<CreateRouter />

## 4. Создать облачный балансировщик нагрузки \{#create-load-balancer}

<CreateBalancer />

## 5. Создать правило \{#create-rule}

<CreateRule />

## 6. Создать целевую группу \{#create-target-group}

<CreateTargetGroup />

## 7. Добавить сервер в целевую группу \{#add-server-to-target-group}

<AddServerToTargetGroup />

## 8. Создать проверку доступности \{#create-availability-check}

<CreateAvailabilityCheck />

## 9. Создать публичный IP-адрес и подключить к балансировщику \{#create-public-ip}

Публичный IP-адрес будет подключен к порту балансировщика нагрузки и ассоциирован с приватным IP.

```hcl
resource "openstack_networking_floatingip_v2" "floatingip_1" {
  pool    = "external-network"
  port_id = openstack_lb_loadbalancer_v2.load_balancer_1.vip_port_id
}
```

Посмотрите подробное описание ресурса [openstack\_networking\_floatingip\_v2](/terraform/openstack-provider-reference/networking-neutron/resources/openstack_networking_floatingip_v2/).

## 10. Получить IP-адрес балансировщика нагрузки \{#get-ip}

<GetIp />

<Formbricks />
