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.