Opções avançadas de configuração do Traffic Director

Este documento contém observações que podem ser úteis ao configurar o Traffic Director.

Como configurar uma única VM do Compute Engine no Traffic Director

Use este procedimento como um exemplo de como a implantação do proxy sidecar e a interceptação de tráfego podem ser implementadas para fornecer uma VM com acesso aos serviços do Traffic Director.

Se você estiver seguindo esse processo para configurar o Traffic Director em uma única VM, algumas tarefas de configuração exigem que você tenha acesso a um host do Linux. O host pode ser uma máquina local ou uma VM em execução na sua rede de nuvem privada virtual.

Primeiro, faça o download e prepare os arquivos de configuração e os scripts de amostra.

  1. Faça login no host do Linux que você está usando durante o processo de configuração.

  2. Faça o download dos arquivos necessários para o host do Linux e descompacte-os:

    wget https://storage.googleapis.com/traffic-director/traffic-director.tar.gz
    tar -xzvf traffic-director.tar.gz; cd traffic-director
    

    Estão incluídos os seguintes arquivos:

    • sidecar.env: arquivo de configuração com variáveis de ambiente
    • pull_envoy.sh: script de amostra para extrair o binário Envoy de uma tag de imagem do Docker fornecida Se nenhuma tag for fornecida, extraia o script em https://hub.docker.com/r/istio/proxyv2/tags (em inglês)
    • iptables.sh: script para configurar as regras do netfilter
    • bootstrap_template.yaml: arquivo modelo de inicialização do Envoy
    • run.sh: script de nível superior que usa o arquivo de configuração sidecar.env para configurar iptables para interceptação e executar o proxy sidecar do Envoy.
  3. Em cada host que executa um proxy de arquivo secundário, crie um usuário do sistema para executar o processo do proxy Envoy. Esse é o usuário do proxy Envoy. O login está desativado para o usuário do proxy Envoy.

    sudo adduser --system --disabled-login envoy
    
  4. Edite o arquivo sidecar.env para modificar a configuração. Leia os comentários in-line no arquivo de configuração para ver uma descrição detalhada de cada variável.

    1. No arquivo sidecar.env, defina a variável ENVOY_USER como o nome de usuário escolhido para ser o usuário do proxy Envoy.
  5. Copie seu próprio binário do Envoy para o diretório traffic-director ou siga estas etapas para receber um binário do Envoy:

    1. Instale as ferramentas do Docker no host do Linux que você está usando. Os arquivos de cada sistema operacional compatível estão na seção Plataformas compatíveis.
    2. Execute o script pull_envoy.sh para extrair o binário Envoy.

Em seguida, em cada host de VM que executa aplicativos usando o Traffic Director, siga estas etapas:

  1. Copie todo o diretório traffic-director com o arquivo sidecar.env modificado e o binário Envoy em cada host de VM que executa aplicativos em que você espera usar o Traffic Director.
  2. Adicione o script run.sh ao script de inicialização do sistema, garantindo que ele seja executado após cada reinicialização da VM.
  3. Em cada host de VM, execute o script run.sh:

    cd traffic-director
    sudo ./run.sh start
    
  4. Verifique se o proxy Envoy foi iniciado corretamente.

    sudo ./run.sh status
    

    Você verá a seguinte saída:

    OK: Envoy seems to be running.
    OK: Traffic interception seems to be enabled.
    

    Se preferir, confirme se o processo do proxy está em execução usando o comando ps. Verifique se envoy aparece na saída.

    ps aux | grep envoy
    

    É possível verificar a direção da interceptação de tráfego usando o seguinte:

    sudo iptables -S -t nat | grep ISTIO_REDIRECT
    

    A saída esperada é:

    -N ISTIO_REDIRECT
    -A ISTIO_OUTPUT -j ISTIO_REDIRECT
    -A ISTIO_REDIRECT -p tcp -j REDIRECT --to-ports 15001`
    

Mapas de regras de roteamento

Há duas maneiras de configurar o roteamento em um mapa de regras.

Você pode ativar o roteamento com base no VIP real do destino e na porta do serviço. Se você configurar um VIP do seu serviço como o parâmetro IPAddress da regra de encaminhamento, apenas o tráfego destinado a esse endereço e a porta associada serão correspondidos e roteados com base nos parâmetros de host e no caminho especificados no mapa de URLs.

Como alternativa, defina o endereço da regra de encaminhamento como 0.0.0.0. Isso configurará os proxies para corresponder apenas o tráfego com base na porta de destino, independentemente do endereço IP de destino da solicitação. O tráfego é roteado com base nos parâmetros de host e caminho especificados no mapa de URL.

Com base nessas duas abordagens, os nomes do host, conforme configurados nas regras de host, associados a um par VIP de destino e par de portas ou com uma porta de destino (quando VIP é 0.0.0.0), precisam ser exclusivos nas suas configuração da malha de serviço. Ou seja, não é possível ter dois serviços diferentes, com diferentes conjuntos de back-ends, que usam o mesmo nome de host.

Independentemente do método selecionado, o tráfego para o VIP que seu nome de host/FQDN resolve e a porta que o seu serviço está escutando, precisam ser interceptados e redirecionados para o proxy secundário. Consulte Como configurar uma única VM do Compute Engine para o Traffic Director para ver todos os detalhes de configuração do host.

Cada regra de encaminhamento em uma rede VPC precisa ter uma combinação exclusiva de endereço IP e porta por rede VPC, incluindo o endereço 0.0.0.0. Se você criar mais de uma regra de encaminhamento com o mesmo endereço IP e a mesma porta em uma determinada rede VPC, somente a primeira regra de encaminhamento será válida. Os outros são ignorados.

Para evitar a perda de tráfego, siga a seção Configuração avançada de interceptação do tráfego abaixo.

Configuração avançada de interceptação de tráfego

Se suas VMs executarem aplicativos que precisam de acesso aos serviços configurados pelo Traffic Director, você precisará instalar um proxy secundário e configurar a interceptação do tráfego nas VMs para permitir que o proxy secundário gerencie o roteamento de tráfego para os back-ends do serviços.

Se a interceptação de todo o tráfego de VM de saída não for aceitável para sua implantação, redirecione o tráfego específico para o proxy sidecar, enquanto o restante do tráfego seguirá a rota regular definida pela configuração de rede do host.

Para fazer isso, modifique a configuração do host da VM do Compute Engine no procedimento Configuração do Traffic Director com VMs e implantação manual do Envoy da seguinte maneira:

  1. Decida o intervalo de endereços IP que os serviços controlados pelo Traffic Director devem resolver. O tráfego destinado a esses endereços IP é interceptado e redirecionado ao proxy secundário. O intervalo é específico para sua implantação.

  2. No arquivo sidecar.env, defina o valor de SERVICE_CIDR como esse intervalo. O tráfego para esses endereços IP é redirecionado pelo netfilter a um proxy secundário e com balanceamento de carga de acordo com a configuração fornecida pelo Traffic Director.

  3. O proxy secundário não é estritamente necessário para ser executado como um usuário dedicado que é excluído da interceptação de tráfego. No entanto, isso ainda é recomendado.

  4. Depois de executar o script run.sh, conforme direcionado no procedimento principal, iptables configura a interceptação e o redirecionamento desse intervalo específico.

  5. Execute o comando a seguir para verificar se o netfilter está configurado corretamente. Para ${SERVICE_CIDR}, substitua o valor que você configurou como o intervalo de endereços IP interceptado.

    sudo iptables -L -t nat | grep -E "(ISTIO_REDIRECT).+${SERVICE_CIDR})"