BLOG | NGINX

Balanceamento de carga de tráfego TCP e UDP no Kubernetes com NGINX

NGINX-Parte-de-F5-horiz-preto-tipo-RGB
Amir Rawdat Miniatura
Amir Rawdat
Publicado em 07 de junho de 2022

[ Editor – Este post é um extrato do nosso eBook abrangente, Managing Kubernetes Traffic with F5 NGINX: Um guia prático . Baixe gratuitamente hoje mesmo .]

Junto com o tráfego HTTP, o NGINX Ingress Controller balanceia a carga do tráfego TCP e UDP, para que você possa usá-lo para gerenciar o tráfego de uma ampla variedade de aplicativos e utilitários com base nesses protocolos, incluindo:

  • MySQL, LDAP e MQTT – aplicativos baseados em TCP usados por muitos aplicativos populares
  • DNS, syslog e RADIUS – utilitários baseados em UDP usados por dispositivos de ponta e aplicativos não transacionais

O balanceamento de carga TCP e UDP com o NGINX Ingress Controller também é uma solução eficaz para distribuir tráfego de rede para aplicativos Kubernetes nas seguintes circunstâncias:

  • Você está usando criptografia de ponta a ponta (EE2E) e fazendo com que o aplicativo lide com a criptografia e a descriptografia em vez do NGINX Ingress Controller
  • Você precisa de balanceamento de carga de alto desempenho para aplicativos baseados em TCP ou UDP
  • Você deseja minimizar a quantidade de alterações ao migrar um balanceador de carga de rede (TCP/UDP) existente para um ambiente Kubernetes

O NGINX Ingress Controller vem com dois recursos do NGINX Ingress que oferecem suporte ao balanceamento de carga TCP/UDP:

  • Os recursos do GlobalConfiguration são normalmente usados por administradores de cluster para especificar as portas TCP/UDP ( ouvintes ) que estão disponíveis para uso pelas equipes de DevOps. Observe que cada implantação do NGINX Ingress Controller pode ter apenas um recurso GlobalConfiguration.
  • Os recursos do TransportServer são normalmente usados por equipes de DevOps para configurar o balanceamento de carga TCP/UDP para seus aplicativos. O NGINX Ingress Controller escuta apenas em portas que foram instanciadas pelo administrador no recurso GlobalConfiguration. Isso evita conflitos entre portas e fornece uma camada extra de segurança, garantindo que as equipes de DevOps exponham aos serviços externos públicos apenas as portas que o administrador predeterminou como seguras.

O diagrama a seguir descreve um exemplo de caso de uso para os recursos GlobalConfiguration e TransportServer. Em gc.yaml , o administrador do cluster define ouvintes TCP e UDP em um recurso GlobalConfiguration. Em ts.yaml , um engenheiro de DevOps faz referência ao ouvinte TCP em um recurso TransportServer que roteia o tráfego para uma implantação do MySQL.

Diagrama de topologia do caso de uso para recursos GlobalConfiguration e TransportServer

O recurso GlobalConfiguration em gc.yaml define dois ouvintes: um ouvinte UDP na porta 514 para conexão a um serviço syslog e um ouvinte TCP na porta 5353 para conexão a um serviço MySQL.

As linhas 6 a 8 do recurso TransportServer em ts.yaml fazem referência ao ouvinte TCP definido em gc.yaml pelo nome ( mysql-tcp ) e as linhas 9 a 14 definem a regra de roteamento que envia tráfego TCP para o upstream mysql-db .

Neste exemplo, um engenheiro de DevOps usa o cliente MySQL para verificar se a configuração está funcionando, conforme confirmado pela saída com a lista de tabelas no banco de dados rawdata_content_schema dentro da implantação do MySQL.

$ echo “MOSTRAR TABELAS” | mysql –h <endereço_IP_externo> -P <porta> -você <usuário> –p esquema_de_conteúdo_de_dados_brutos Digite a senha: <senha>
Tabelas_em_esquema_de_conteúdo_de_dados_brutos
autores
postagens

Os recursos do TransportServer para tráfego UDP são configurados de forma semelhante; para um exemplo completo, consulte Balanceamento de carga TCP/UDP básico no repositório do NGINX Ingress Controller no GitHub. Usuários avançados do NGINX podem estender o recurso TransportServer com a configuração nativa do NGINX usando a chave ConfigMap de snippets de fluxo , conforme mostrado no exemplo de Suporte para balanceamento de carga TCP/UDP no repositório.

Para obter mais informações sobre os recursos que você pode configurar nos recursos do TransportServer, consulte a documentação do NGINX Ingress Controller .

Esta postagem é um extrato do nosso e-book abrangente, Gerenciando o tráfego do Kubernetes com NGINX: Um guia prático . Baixe gratuitamente hoje mesmo .

Experimente o NGINX Ingress Controller baseado no NGINX Plus hoje mesmo em um teste gratuito de 30 dias ou entre em contato conosco para discutir seus casos de uso .


"Esta postagem do blog pode fazer referência a produtos que não estão mais disponíveis e/ou não têm mais suporte. Para obter as informações mais atualizadas sobre os produtos e soluções F5 NGINX disponíveis, explore nossa família de produtos NGINX . O NGINX agora faz parte do F5. Todos os links anteriores do NGINX.com redirecionarão para conteúdo semelhante do NGINX no F5.com."