Criando VMs com balanceador de carga do NSX utilizando o vRealize Automation 8.x

Criando VMs com balanceador de carga do NSX utilizando o vRealize Automation 8.x

Neste artigo demonstro como usufruir da integração nativa entre o NSX-T e o vRA para criar máquinas virtuais com balanceador de carga. A ideia geral é criar um balanceador de carga no NSX, definir o tamanho e associar com o T1 gateway. A partir disso, o vRA irá criar os virtual servers e server pools dentro deste balanceador (como se fossem instâncias).

O primeiro passo é garantir que o NSX-T está configurado e integrado corretamente ao vRA.

Depois disso, no NSX-T navegue até Networking > Network Services > Load Balancing, crie um balanceador de carga e anexe o seu T1 gateway. Cada T1 pode ter um balanceador de carga, ou seja, para criar mais balanceadores, precisará utilizar mais T1s.

No vRA vamos criar um novo network profile e adicionar as redes que queremos utilizar. Neste caso vou apenas adicionar o segmento web do NSX.

Agora vamos associar o edge cluster do NSX com o network profile.

E por fim basta associar o balanceador de carga que acabamos de criar no NSX. Estou utilizando a tag nsx:lb-01, isso é interessante no caso existir vários balanceadores de carga, possibilitando assim a escolha no momento do deploy. 

Este é o blueprint que utilizei para os testes. Está bem simples, solicita apenas a porta, protocolo e algoritmo para criar o balanceador de carga no NSX. Lembrando que existem muuuuitas outras opções que podem ser configuradas baseado no caso de uso. 

formatVersion: 1
inputs:
  cavInstance:
    type: integer
    title: Instâncias
    description: Digite a quantidade de instâncias
  cavAmbiente:
    type: string
    title: Ambiente
    description: Selecione o ambiente para deploy
    oneOf:
      - title: Produção
        const: prod
      - title: Desenvolvimento
        const: dev
  cavService:
    type: string
    title: Serviço
    description: Selecione o tipo do servidor
    oneOf:
      - title: Application
        const: APP
      - title: Database
        const: DB
      - title: Web Server
        const: WEB
  cavPortaLB:
    type: integer
    description: 'Digite a porta para o balanceador de carga do NSX (Ex: 80 ou 443)'
  cavProtocoloLB:
    type: string
    description: Selecione o protocolo para o balanceador de carga do NSX
    enum: 
      - HTTP
      - HTTPS
      - TCP
  cavAlgoritmoLB:
    type: string
    title: Algoritmo
    description: Selecione o algoritmo para o balanceador de carga do NSX
    oneOf:
      - title: Least Connection
        const: LEAST_CONNECTION
      - title: Round Robin
        const: ROUND_ROBIN
resources:
  VM:
    type: Cloud.vSphere.Machine
    properties:
      name: '${"CAV-" + (input.cavAmbiente == "prod" ? "P" : "D") + "-" + (input.cavService) + "-"}'
      image: Ubuntu 22.04
      flavor: Small
      constraints:
        - tag: cluster-name:compute-02
      networks:
        - network: ${resource["NSX-NET"].id}
          assignment: static
      count: ${input.cavInstance}
  NSX-NET:
    type: Cloud.NSX.Network
    properties:
      networkType: existing
      constraints:
        - tag: nsx:web-segment
  NSX-LB:
    type: Cloud.NSX.LoadBalancer
    properties:
      name: '${"CAV-" + (input.cavAmbiente == "prod" ? "P" : "D") + "-" + (input.cavService)}'
      network: ${resource["NSX-NET"].id}
      instances: ${resource.VM[*].id}
      routes:
        - protocol: ${input.cavProtocoloLB}
          port: ${input.cavPortaLB}
          instanceProtocol: ${input.cavProtocoloLB}
          instancePort: ${input.cavPortaLB}
          algorithm: ${input.cavAlgoritmoLB}
      constraints:
        - tag: nsx:lb-01

Na solicitação de teste pedi duas instâncias de web server produtivo já com balanceador de carga na porta 80, utilizando o protocolo HTTP e com o algoritmo de balanceamento least connection.

Depois de alguns minutos as crianças nasceram. Tanto o VIP do balanceador de carga, quanto os IPs das VMs vieram do range IP associado com o segmento web.

Só para demonstrar, aqui fiz uma solicitação com uma rede para as VMs e outra rede para o balanceador de carga.

Se olharmos no NSX, é possível perceber que nas abas virtual servers e servers pools as novas informações do balanceador de carga recém criado. Neste caso possuimos o serviço de balanceamento de carga ativo no edge cluster e cada execução do vRA irá criar novas instâncias. Por exemplo: o balanceador de carga com o tamanho Small suporta até 20 virtual servers e 300 pool members, já o XLarge suporta 2000 e 10000, respectivamente.

E sim, se você editar o deployment e adicionar ou remover máquinas, o balanceador de carga no NSX será atualizado também 🙂

É isso aí, pessoal. Até a próxima!

Apenas para esclarecer: VMware Aria Automation é o novo nome do vRealize Automation. Aqui, para fins didáticos, continuo utilizando o termo vRA.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *