#terraform #azure-load-balancer
Вопрос:
Мне нужно выполнить следующие задачи:
Azure
Выберите балансировщик нагрузки- Создайте виртуальную машину и запустите два контейнера docker на портах 80080 и 8081
- Добавьте виртуальную машину на шаге 2 в качестве внутреннего пула балансировщика нагрузки, созданного на шаге 1
- Добавьте правила в балансировщик нагрузки для маршрутизации трафика, который будет сбалансирован по нагрузке между портами
8080
и8081
Существуют некоторые ограничения, так как одно правило может иметь только один порт. Поэтому я пошел дальше с несколькими конфигурациями ip-интерфейсов, поэтому я создал
a) Две конфигурации ip-интерфейса frondend
б) два правила балансировки нагрузки с портами 8080
и 8081
соответственно
c) два исследования состояния здоровья
d) указал на тот же внутренний пул (виртуальная машина на шаге 2)
Настройка работает нормально, но я надеялся, что, когда я попаду на IP-адрес балансировщика нагрузки, он должен быть сбалансирован по нагрузке в любом round robin
случае или любым другим механизмом, я должен получать два приложения каждый раз, когда я попадаю на IP, но я ВСЕГДА получаю только один сайт.
Я делаю это с terraform
помощью, и вот мой код.
resource "azurerm_lb" "example" {
name = "TestLoadBalancer"
resource_group_name = azurerm_resource_group.example.name
location = azurerm_resource_group.example.location
sku = "Standard"
frontend_ip_configuration {
name = "PrivateIPAddress"
subnet_id = azurerm_subnet.vm.id
private_ip_address_allocation = "Dynamic"
availability_zone = "No-Zone"
}
frontend_ip_configuration {
name = "PrivateIPAddress2"
subnet_id = azurerm_subnet.vm.id
private_ip_address_allocation = "Dynamic"
availability_zone = "No-Zone"
}
}
resource "azurerm_lb_backend_address_pool" "example" {
loadbalancer_id = azurerm_lb.example.id
name = "lbclassic"
}
resource "azurerm_lb_probe" "example" {
resource_group_name = azurerm_resource_group.example.name
loadbalancer_id = azurerm_lb.example.id
name = "lbclassic"
port = 8081
interval_in_seconds = 10
number_of_probes = 3
protocol = "Http"
request_path = "/"
}
resource "azurerm_lb_probe" "example2" {
resource_group_name = azurerm_resource_group.example.name
loadbalancer_id = azurerm_lb.example.id
name = "lbclassic2"
port = 8080
interval_in_seconds = 10
number_of_probes = 3
protocol = "Http"
request_path = "/"
}
resource "azurerm_lb_rule" "example" {
resource_group_name = azurerm_resource_group.example.name
loadbalancer_id = azurerm_lb.example.id
name = "lbclassic"
protocol = "Tcp"
frontend_port = 80
backend_port = 8081
frontend_ip_configuration_name = "PrivateIPAddress"
backend_address_pool_id = azurerm_lb_backend_address_pool.example.id
probe_id = azurerm_lb_probe.example.id
enable_floating_ip = false
}
resource "azurerm_lb_rule" "example2" {
resource_group_name = azurerm_resource_group.example.name
loadbalancer_id = azurerm_lb.example.id
name = "lbclassic2"
protocol = "Tcp"
frontend_port = 80
backend_port = 8080
frontend_ip_configuration_name = "PrivateIPAddress2"
backend_address_pool_id = azurerm_lb_backend_address_pool.example.id
probe_id = azurerm_lb_probe.example2.id
enable_floating_ip = false
}
# one and only backend
resource "azurerm_lb_backend_address_pool_address" "example" {
name = "lbclassic-pool2"
backend_address_pool_id = azurerm_lb_backend_address_pool.example.id
virtual_network_id = azurerm_virtual_network.example.id
ip_address = "10.0.2.8"
depends_on = [
azurerm_linux_virtual_machine.example
]
}
Может ли кто-нибудь, пожалуйста, помочь мне, как я могу сбалансировать нагрузку трафика между двумя портами, находящимися в одном и том же внутреннем пуле в Azure
балансировщике нагрузки?