Login
Login

Adicionar uma regra de balanceador de carga usando Terraform

Atualizado em 04 de March de 2026

Terraform é uma ferramenta de infraestrutura como código criada pela HashiCorp. Ela permite automatizar a criação e a modificação de recursos de infraestrutura usando a linguagem declarativa de configuração HCL.

Capacidades do Terraform

  • Gerenciar infraestrutura com uma única ferramenta
  • Controle de versão e configurações reutilizáveis
  • Possibilidade de acompanhar o estado atual da infraestrutura

Neste guia, veremos como gerenciar regras de balanceador de carga usando Terraform.

Por que usar um balanceador de carga

Um balanceador de carga de rede permite distribuir uniformemente o tráfego de entrada entre vários servidores para melhorar a disponibilidade e a confiabilidade do seu serviço. Ele é uma ferramenta indispensável ao implementar o escalonamento horizontal de serviços.

O escalonamento horizontal é o processo de adicionar nós ou máquinas adicionais a uma infraestrutura existente para aumentar sua capacidade e lidar com um volume maior de tráfego.

Principais benefícios de um balanceador de carga

  • Balanceamento de carga para sessões TCP para garantir o uso ideal dos recursos do servidor
  • Suporte a vários protocolos: HTTP, HTTP2, HTTPS, TCP
  • Tolerância a falhas do servidor de aplicação para evitar indisponibilidade do serviço e manter a disponibilidade
  • Possibilidade de configurar regras de roteamento de tráfego para direcionar requisições para portas específicas dos servidores
  • Suporte à configuração de SSL e redirecionamento para HTTPS

Criar um balanceador de carga

Primeiro, definimos os requisitos para o balanceador de carga:

  • Temos dois servidores, cada um hospedando um site na porta 80
  • Ao acessar o balanceador de carga na porta 80, as requisições devem ser direcionadas para um dos nossos servidores
  • Algoritmo: Round Robin
  • Sem parâmetros adicionais

Para adicionar uma regra ao nosso balanceador de carga, precisamos criá-lo e configurar o balanceamento entre servidores. Adicionamos dois servidores para configurar o balanceamento de carga entre eles.

Em seguida, criamos um projeto Terraform. Consulte este guia para mais detalhes sobre como instalar e configurar o provider.

Primeiro, crie uma pasta onde as configurações serão armazenadas:

mkdir hostman-lb
cd hostman-lb

A estrutura de arquivos fica assim:

├── hostman-lb
│   ├── main.tf
│   ├── variables.tf

No arquivo variables.tf, especificamos variáveis para o token do provider e os endereços IP usados no balanceamento de carga:

variable "hm_token" {
  type = string
  sensitive = true
}

variable "lb-ips" {
    type = set(string)
}

No arquivo main.tf, adicionamos as informações do provider:

terraform {
  required_providers {
    hm = {
      source = "hostman-cloud/hostman"
    }
  }
  required_version = ">= 0.13"
}

provider "hm" {
  token = var.hm_token
}

Ao descrever uma configuração do Terraform, usamos dois tipos principais de entidades: data sources (data) e resources.

  • Data sources são usados para definir variáveis e configurações disponíveis dentro do provider escolhido. Exemplos incluem presets, projetos e outros parâmetros.
  • Resources são os elementos de infraestrutura que queremos criar usando Terraform, como servidores, bancos de dados, balanceadores de carga e outros componentes.

No main.tf, especificamos um preset para a configuração:

data "hm_lb_preset" "lb-preset" {
  requests_per_second = "10K"
  price_filter {
    from = 100
    to = 200
  }
}

Se você usa projetos no painel de controle, pode especificar o projeto onde os recursos serão criados. Por exemplo, adicionamos um projeto chamado "Docs":

data "hm_projects" "docs" {
  name = "Docs"
}

O recurso que vamos criar se chama hm_lb. Ao criá-lo, você pode especificar vários parâmetros opcionais, como configurações de verificação de integridade e algoritmo de balanceamento de carga. Usaremos a configuração mais simples:

resource "hm_lb" "load-balancer" {
    name = "load-balancer"
    algo = "roundrobin"

    project_id = data.hm_projects.articles.id
    preset_id = data.hm_lb_preset.lb-preset.id

    health_check {
      proto = "tcp"
      port = 80
    }

    ips = var.lb-ips
}

Outros parâmetros que podem ser especificados incluem:

  • ips: lista de endereços IP para balanceamento
  • is_keepalive: indicador que define se a conexão TCP com o servidor deve ser mantida
  • is_ssl: redirecionamento automático para HTTPS
  • is_sticky: manter a sessão do usuário em um único servidor backend

Também adicionamos um arquivo .tfvars ao projeto com valores para as variáveis definidas em variables.tf:

hm_token = "<insira aqui a chave de API do provider>"
lb-ips = [ "<IP do primeiro servidor>", "<IP do segundo servidor>" ]

Em seguida, execute:

terraform validate

Se tudo estiver correto, você verá uma mensagem de sucesso.

Para ver quais recursos serão criados, execute:

terraform plan -var-file=.tfvars

A flag -var-file=.tfvars permite que o Terraform use os valores de variáveis definidos nesse arquivo.

As variáveis também podem ser definidas de outras formas:

  • Usando a flag -var, por exemplo: -var="hm_token=243453452345235456643"
  • Usando variáveis de ambiente:
export TF_VAR_hm_token=243453452345235456643

Adicionar regras ao balanceador de carga

Uma regra no balanceador de carga refere-se à configuração de encaminhamento de portas. Para qualquer regra, é necessário especificar:

  • A porta pela qual os clientes acessam o balanceador de carga
  • A porta nos servidores de destino para a qual o tráfego será encaminhado

Adicione um novo recurso à configuração no main.tf:

resource "hm_lb_rule" "lb-rule" {
  lb_id = resource.hm_lb.load-balancer.id
  balancer_proto = "http"
  balancer_port = 80
  server_proto = "http"
  server_port = 80
}

Execute os comandos novamente:

terraform validate
terraform plan -var-file=.tfvars
terraform apply -var-file=.tfvars

Confirme digitando yes.

No painel de controle, você verá os recursos criados:

  • Balanceador de carga
  • Regra

Acesse o endereço do balanceador de carga (duas vezes para alcançar servidores diferentes):

  • Primeiro servidor especificado nas variáveis
  • Segundo servidor especificado nas variáveis

Se for necessária uma segunda regra, por exemplo, para uma nova aplicação que roda na porta 81, basta adicionar outro bloco de recurso:

resource "hm_lb_rule" "lb-second-rule" {
  lb_id = resource.hm_lb.load-balancer.id
  balancer_proto = "http"
  balancer_port = 81
  server_proto = "http"
  server_port = 81
}

Execute:

terraform plan -var-file=.tfvars

Você verá que um balanceador de carga e uma regra já existem, e que uma nova regra será adicionada.

Depois execute:

terraform apply -var-file=.tfvars

Confirme a aplicação da configuração quando solicitado.

Verifique o painel de controle: agora duas regras estão configuradas. Acesse o endereço do balanceador de carga para confirmar que tudo está funcionando corretamente.

Conclusão

Neste guia, aprendemos como criar balanceadores de carga de rede e regras usando Terraform. Além do Terraform, os balanceadores de carga também podem ser gerenciados via API.

Links úteis

Esta página foi útil?
Atualizado em 04 de March de 2026

Tem perguntas,
comentários ou preocupações?

Nossos profissionais estão disponíveis para ajudá-lo a qualquer momento,
seja para assistência ou apenas se você não souber por onde começar.
Envie-nos um e-mail
Hostman's Support