_Resource_ функция **dynamix_lb** служит для управления балансировщиком нагрузки (load balancer). Балансировщики нагрузки служат для равномерного распределения сетевой нагрузки между подключенными к ним сервисами. ## Аргументы _Resource_ функция **dynamix_lb** принимает следующие аргументы: | Аргумент | Тип | Обязательный | Описание | | --- | --- | :---: | --- | | rg_id | int | :heavy_check_mark: | ID ресурсной группы | | name | string | :heavy_check_mark: | Название балансировщика | | start | bool | :heavy_check_mark: | Флаг запуска балансировщика. По умолчанию - true. Eсли load balancer был в статусе "stopped" (start = false), то для успешного старта, он должен быть доступен (enable = true) | | extnet_id | int | :x: | ID внешней сети. extnet_id и vins_id не могут быть одновременно равны 0 | | vins_id | int | :x: | ID виртуальной сети. extnet_id и vins_id не могут быть одновременно равны 0 | | desc | string | :x: | Описание балансировщика | | enable | bool | :x: | Флаг доступности балансировщика | | restart | bool | :x: | Флаг перезагрузки балансировщика. Можно использовать только на созданном ресурсе. По умолчанию - false. Перезагрузка происходит только при смене флага с false на true | | safe | bool | :x: | Флаг перезапуска первичных и вторичных узлов последовательно в режиме высокой доступности (HA mode) | | config_reset | bool | :x: | Флаг сброса конфигурации балансировщика. По умолчанию - false. Сброс происходит только при изменении флага с false на true | | ha_mode | bool | :x: | Использовать высокодоступную схему для развертывания LB | | permanently | bool | :x: | Флаг моментального удаления балансировщика из платформы. По-умолчанию - false. При необходимости, после изменения значения флага, необходимо выполнить `terraform apply` для изменения значения флага в состоянии терраформа, а после этого - `terraform destroy` | | restore | bool | :x: | Флаг восстановления балансировщика после удаления. Восстановить возможно только балансировщики, удаленные с флагом permanently равным false. Предварительно, необходимо импортировать удаленный ресурс и изменить значение флага. После этого - выполнить `terraform apply`. | | sysctl_params | []map[string]interface{} | :x: | Пользовательские значения sysctl для балансировщика | ## Возвращаемые значения В случае успешного выполнения _resource_ функция **dynamix_lb** возвращает в указанную при вызове переменную элемент, который состоит из следующих параметров: | Параметр | Тип | Описание | | --- | --- | --- | | ha_mode | bool | Флаг, показывающий, включен ли режим haproxy | | backends | []Struct{} [см. ниже](#описание-структуры-backend) | Список бекендов | | created_by | string | Аккаунт, создавший балансировщик | | created_time | int | Время создания | | deleted_by | string | Кем балансировщик был удален | | deleted_by | int | Время удаления | | desc | string | Описание | | dp_api_user | string | Имя пользователя для работы | | extnet_id | int | ID внешней сети | | frontends | []Struct{} [см. ниже](#описание-структуры-фронтенда) | Список фронтендов | | gid | int | Grid ID балансировщика | | guid | int | ID балансировщика | | lb_id | int | ID балансировщика | | manager_id | int | ID ресурса, к которому принадлежит данный балансировщик | | manager_type | string | Тип ресурса, к которому принадлежит данный балансировщик | | image_id | int | ID образа | | milestones | int | Вехи | | name | string | Имя балансировщика | | part_k8s | bool | Является ли балансироващик частью кластера | | primary_node | Struct{} [см. описание узлов](#описание-структуры-узлов) | Главный узел | | rg_id | int | ID ресурсной группы | | rg_name | string | Имя ресурсной группы | | secondary_node | Struct{} [см. описание узлов](#описание-структуры-узлов) | Второй узел | | status | string | Статус | | tech_status | string | Технический статус | | updated_by | string | Кем балансировщик был обновлен | | updated_time | string | Время последнего обновления | | user_managed | bool | Флаг указывающий, может ли пользователь управлять балансировщиком напрямую | | vins_id | int | ID виртуальной сети | ### Описание структуры backend | Параметр | Тип | Описание | | --- | --- | --- | | algorithm | string | Алгоритм работы бекенда | | name | string | Имя бекенда | | server_default_settings | Struct{} [см. ниже](#описание-структуры-настроек) | Описание настроек серверов бекенда по умолчанию | | servers | []Struct{} [см. ниже](#описание-структуры-сервера) | Список серверов | ### Описание структуры настроек | Параметр | Тип | Описание | | --- | --- | --- | | downinter | int | Интервал между проверками на недоступность сервера | | inter | int | Интервал между проверками на доступность сервера | | rise | int | Кол-во попыток, после которых, сервер будет вновь включен в схему балансирования | | fall | int | Кол-во неудачных попыток, после которых, сервер получит статус "unavailable" | | slowstart | int | Интервал, в мс, в через который сервер получит статус "available" | | maxconn | int | Кол-во соединений к северу, при достижении этого кол-ва, сервера выходит из схемы балансирования | | maxqueue | int | Кол-во соедений в очереди к серверу | | weight | int | Вес сервера для работы алгоритма балансирования по весу | ### Описание структуры сервера | Параметр | Тип | Описание | | --- | --- | --- | | address | string | Адрес сервера | | check | string | Включены ли проверки | | name | string | Имя сервера | | port | int | Порт сервера | | server_settings | [см. Описание структуры настроек](#описание-структуры-настроек) | Настройки сервера | ### Описание структуры фронтенда | Параметр | Тип | Описание | | --- | --- | --- | | backend | string | Имя бекенда, к которому подключен фронтенд | | name | string | Имя фронтенда | | bindings | []Struct{} [см. ниже](#описание-структуры-привязки-фронтенда) | Привязки фронтенда | ### Описание структуры привязки фронтенда | Параметр | Тип | Описание | | --- | --- | --- | | address | string | Адрес, к которому привязан фронтенд | | name | string | Имя привязки | | port | int | Порт привязки | ### Описание структуры узлов | Параметр | Тип | Описание | | --- | --- | --- | | backend_ip | string | IP адрес бекенда | | compute_id | int | ID виртуальной машины | | frontend_ip | string | IP адрес фронтенда | | mgmt_ip | string | IP адрес | | network_id | int | ID сети | ## Ограничение на наименование ресурса Ресурс не должен содержать в названии символ `#` ## Пример использования Пример вызова _resource_ функции **dynamix_lb**: ```terraform resource "dynamix_lb" "lb" { #id ресурсной группы для создания балансировщика #обязательный параметр #тип - целое число rg_id = 1111 #наименование load balancer #обязательный параметр #тип - строка name = "tf-test-lb" #id внешней сети #опциональный параметр #id внешней сети и id виртуальной сети не могут быть одновременно = 0 #тип - целое число extnet_id = 6 #id виртуальной сети #опциональный параметр #id внешней сети и id виртуальной сети не могут быть одновременно = 0 #тип - целое число vins_id = 758 #флаг запуска load balancer #обязательный параметр #если load balancer был в статусе "stopped" (start = false), #то для успешного старта, он должен быть доступен (enable = true) #по умолчанию - true #тип - булев start = true #позволяет создать схему отказоустройчивой LB #опциональный параметр #тип - булев #ha_mode = true #описание #опциональный параметр #тип - строка #descс= "temp super lb for testing tf provider" #флаг доступности load balancer #опциональный параметр #тип - булев #enable = true #флаг перезапуска load balancer #опциональный параметр #перезагрузка срабатывает только при изменении флага с false на true #тип - булев #restart = false #флаг сброса конфигурации load balancer #опциональный параметр #сброс срабатывает только при изменении флага с false на true #тип - булев #config_reset = false #флаг моментального удаления load balancer #опциональный параметр #применяется при выполнении команды terraform destroy #по умолчанию - false #тип - булев #permanently = false #флаг восстановления load balancer #опциональный параметр #восстановить можно load balancer, удаленным с флагом permanently = false #тип - булев #restore = true #флаг используемый при рестарте load balancer #опциональный параметр #значение по умолчанию - true, при данном значении рестарт производится на обоих нодах в HA mode #тип - булев #safe = true #пользовательские значения sysctl для LB #опциональный параметр #тип - список мап #sysctl_params = [{text = "1", text = "some"}] } ``` После успешного завершения такого вызова **dynamix_lb** в переменной `dynamix_lb.lb` будут сохранены возвращаемые значения.