Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Sobrevivendo a Cenários de Caos com Istio Service Mesh

Sobrevivendo a Cenários de Caos com Istio Service Mesh

Palestra realizada no evento Platform Engineering Summit no dia 27/04/2023

Matheus Fidelis

April 29, 2023
Tweet

More Decks by Matheus Fidelis

Other Decks in Technology

Transcript

  1. LET’S GET STARTED • Artigo • Istio Service Mesh •

    Features para Resiliência • Simular um sistema caotico • Situação de Crise • Diversas possibilidade de Falha ◦ Sistemica ◦ Capacity ◦ Zonas de Disponibilidade Proposta
  2. Workload Hipotético • Malha de 4 micro serviços Síncronos •

    Comunicação HTTP Síncrona • Chamadas Altamente Dependentes • Sem resiliência pragmática
  3. LET’S GET STARTED • Sobreviver • Empresa / Workload Fictício

    • Elastic Kubernetes Service • Três zonas de disponibilidade • Istio por Default • Kiali / Grafana • K6 Load Test • Chaos Mesh • Gin-chaos-monkey Premissas
  4. LET’S GET STARTED • Memory Assault • CPU Assault •

    Latency Assault (1000ms ~ 5000ms) • Exception Assault - Injeção de 5xx • AppKillerAssault - Runtime Middleware de Chaos Chaos Mesh • Pod Failure • Pod Kill
  5. LET’S GET STARTED • Pattern de Networking • Arquitetura Distribuída

    • Adicionar Funcionalidades a Rede • Comportamentos • Gestão de Tráfego • Segurança • Observabilidade • Resiliência Service Mesh
  6. LET’S GET STARTED • Service Mesh de código aberto •

    Kubernetes • Gerenciar a comunicação entre serviços distribuídos • Recursos avançados para controle • Gerenciamento de tráfego e balanceamento de carga • Definição de políticas de rede Istio - Service Mesh
  7. LET’S GET STARTED • Proxy Reverso • Intermediário Cliente /

    Servidor • Funções de manipulação de Layer 4 e 7 • Patterns de Cloud Native • Alta Disponibilidade • Observabilidade / Métricas • Segurança • API's abertas • HTTP/1.x, HTTP/2, gRPC, TCP Envoy
  8. LET’S GET STARTED • Sidecar • Container Adicional (2/2) •

    Integração com Istio Discovery • Integração com CRD's do Istio • Configuração Dinâmica • Alterações sem Downtime • Inbound / Outbound • Métricas de utilização • Proxy de Controle de Comunicação Envoy / Istio / Sidecar
  9. LET’S GET STARTED • Retry Automático de Requests • Policy

    de Falhas Específicas • HTTP • Conexões • gRPC • Timeout Retentativas
  10. LET’S GET STARTED • Workload preparado • Idempotência • Duplicidade

    • Auto-DoS • Não deve ser tratado como mecanismo prioritário da solução Retentativas - Cuidado
  11. retry_on Nova tentativa quando o upstream retornar erros da familia

    5xx 5xx Retentativas em caso da upstream retornar casos de disconnect/reset/read timeout diretamente da conexão TCP reset gateway-error Retentativa em caso de falha de conexão com o upstrem. Timeout. connect-failure Nova tentativa em caso do upstream redefinir a conexão com REFUSED_UPSTREAM refused-stream Similar aos 5xx porém só haverá retentativas em casos de 502, 503 ou 504
  12. Retry_on gRPC Nova tentativa se o código de status gRPC

    nos cabeçalhos de resposta for "recurso esgotado" resource-exhausted Nova tentativa se o código de status gRPC nos cabeçalhos de resposta for "cancelled" cancelled unavailable Nova tentativa se o código de status gRPC nos cabeçalhos de resposta for "deadline excedida" deadline-exceeded Nova tentativa se o código de status gRPC nos cabeçalhos de resposta for "indisponível"
  13. LET’S GET STARTED • Lidar com falhas • Limitar o

    Tráfego • Proteção de Capacity • Limitador de Consumo • Detecção de Falhas • Evita falhas em cascata • Isola recursos problematicos • Baseado em métricas • Detecção de Outliers • Checagem Temporária Circuit Breaking
  14. LET’S GET STARTED • ServiceEntry • Capacidade de Roteamento •

    Assumir a responsabilidade do serviço principal • Direcionar Tráfego para Fallbacks • Garantir o serviço solicitado • Serviços Internos e Externos • Necessário que todos os fluxos tenham o mesmo contrato Failover
  15. Response Flags Mais úteis Conexão Finalizada pelo Cliente DC Tentativas

    de Retry Excedidas URX UR Falha de conexão com a upstream UF Conexão Abortada por um Fault Injection FI Conexão finalizada com a upstream com um 503 Upstream Timeout UT Upstream Overflow Acionamento do Circuit Breaker UO Sem upstreams disponíveis UH
  16. LET’S GET STARTED • Evitar o uso como mecanismo primário

    ou único de resiliência • Parte da composição de resiliência, não a solução definitiva para ela • Optar por retentativas pragmáticas e que façam parte da lógica do negócio • Invista em Idempotência Considerações