O Envoy Proxy é um proxy de camada de aplicação open-source de alta performance projetado para microsserviços e aplicativos modernos em nuvem. Ele é amplamente utilizado para balanceamento de carga, observabilidade e roteamento de tráfego de rede. Neste tutorial, vamos guiá-lo pela instalação e configuração do Envoy Proxy no Debian 11.
Requisitos
- Servidor rodando Debian 11
- Acesso root ou usuário com privilégios sudo
- Conexão à internet
Passo 1: Atualizar o Sistema
Como sempre, é recomendável atualizar todos os pacotes do sistema antes de iniciar a instalação. Execute o seguinte comando:
sudo apt update && sudo apt upgrade -y
Passo 2: Adicionar o Repositório do Envoy
O Envoy Proxy não está disponível nos repositórios padrão do Debian, por isso precisamos adicionar o repositório oficial do Envoy. Primeiro, importe a chave GPG do Envoy:
curl -s https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x72D7468F2B6472DD4B4C13D7725E34CDB03A3F8F | sudo apt-key add -
Em seguida, adicione o repositório do Envoy ao seu sistema:
echo "deb https://packages.envoyproxy.io/debian stable main" | sudo tee /etc/apt/sources.list.d/envoyproxy.list
Passo 3: Instalar o Envoy
Após adicionar o repositório, atualize a lista de pacotes e instale o Envoy com o seguinte comando:
sudo apt update
sudo apt install envoy -y
Passo 4: Verificar a Instalação
Para garantir que o Envoy foi instalado corretamente, verifique a versão instalada com o seguinte comando:
envoy --version
Passo 5: Configurar o Envoy
Agora que o Envoy está instalado, você precisa configurá-lo para definir o comportamento de roteamento, balanceamento de carga, e outras funcionalidades. O Envoy é configurado usando um arquivo YAML.
Crie um arquivo de configuração simples para o Envoy em /etc/envoy/envoy.yaml:
sudo nano /etc/envoy/envoy.yaml
Adicione o seguinte conteúdo para um exemplo básico de configuração:
static_resources:
listeners:
- name: listener_0
address:
socket_address:
address: 0.0.0.0
port_value: 10000
filter_chains:
- filters:
- name: envoy.filters.network.http_connection_manager
typed_config:
"@type": type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager
stat_prefix: ingress_http
route_config:
name: local_route
virtual_hosts:
- name: local_service
domains: ["*"]
routes:
- match:
prefix: "/"
route:
cluster: service_backend
http_filters:
- name: envoy.filters.http.router
clusters:
- name: service_backend
connect_timeout: 0.25s
type: logical_dns
lb_policy: round_robin
load_assignment:
cluster_name: service_backend
endpoints:
- lb_endpoints:
- endpoint:
address:
socket_address:
address: 127.0.0.1
port_value: 8080
Nesse exemplo, o Envoy está configurado para escutar na porta 10000 e encaminhar as requisições para um serviço rodando na máquina local na porta 8080, usando balanceamento de carga round-robin.
Passo 6: Iniciar o Envoy
Após configurar o Envoy, inicie o serviço Envoy com o seguinte comando:
sudo systemctl start envoy
Se quiser que o Envoy inicie automaticamente junto com o sistema, execute o seguinte comando:
sudo systemctl enable envoy
Passo 7: Verificar o Status do Envoy
Para garantir que o Envoy está rodando corretamente, verifique o status do serviço:
sudo systemctl status envoy
Passo 8: Testar o Proxy Envoy
Agora, teste se o Envoy está roteando corretamente as requisições para o backend. Você pode usar o curl para fazer uma requisição ao Envoy:
curl http://localhost:10000
Se o backend estiver configurado corretamente, você verá a resposta do serviço backend rodando na porta 8080.
Servidor VPS
Se precisar de um servidor VPS confiável para hospedar e configurar o Envoy Proxy com alto desempenho, veja as opções disponíveis aqui.