Nginx рдмрд╛рдЯ Envoy Proxy рдорд╛ рдорд╛рдЗрдЧреНрд░реЗрд╕рди

рдирдорд╕реНрддреЗ, Habr! рдо рддрдкрд╛рдЗрдБрдХреЛ рдзреНрдпрд╛рдирдорд╛ рдкреЛрд╖реНрдЯрдХреЛ рдЕрдиреБрд╡рд╛рдж рд▓реНрдпрд╛рдЙрдБрдЫреБ: Nginx рдмрд╛рдЯ Envoy Proxy рдорд╛ рдорд╛рдЗрдЧреНрд░реЗрд╕рди.

рджреВрдд рд╡реНрдпрдХреНрддрд┐рдЧрдд рд╕реЗрд╡рд╛ рд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдбрд┐рдЬрд╛рдЗрди рдЧрд░рд┐рдПрдХреЛ рдПрдХ рдЙрдЪреНрдЪ-рдкреНрд░рджрд░реНрд╢рди рд╡рд┐рддрд░рдг рдЧрд░рд┐рдПрдХреЛ рдкреНрд░реЛрдХреНрд╕реА рд╕рд░реНрднрд░ рд╣реЛ (C++ рдорд╛ рд▓реЗрдЦрд┐рдПрдХреЛ), рдпреЛ рдПрдХ рд╕рдЮреНрдЪрд╛рд░ рдмрд╕ рд░ "рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рдбреЗрдЯрд╛ рдкреНрд▓реЗрди" рд╣реЛ рдЬреБрди рдареВрд▓рд╛ рдорд╛рдЗрдХреНрд░реЛрд╕рд░реНрднрд┐рд╕ "рд╕рд░реНрднрд┐рд╕ рдореЗрд╕" рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдбрд┐рдЬрд╛рдЗрди рдЧрд░рд┐рдПрдХреЛ рд╣реЛред рдпрд╕рд▓рд╛рдИ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрджрд╛, NGINX, HAProxy, рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рд▓реЛрдб рдмреНрдпрд╛рд▓реЗрдиреНрд╕рд░рд╣рд░реВ рд░ рдХреНрд▓рд╛рдЙрдб рд▓реЛрдб рдмреНрдпрд╛рд▓реЗрдиреНрд╕рд░рд╣рд░реВ рдЬрд╕реНрддрд╛ рд╕рд░реНрднрд░рд╣рд░реВрдХреЛ рд╡рд┐рдХрд╛рд╕рдХреЛ рдХреНрд░рдордорд╛ рдЙрддреНрдкрдиреНрди рд╣реБрдиреЗ рд╕рдорд╕реНрдпрд╛рд╣рд░реВрдХреЛ рд╕рдорд╛рдзрд╛рдирд▓рд╛рдИ рдзреНрдпрд╛рдирдорд╛ рд░рд╛рдЦрд┐рдПрдХреЛ рдерд┐рдпреЛред рджреВрддрд▓реЗ рдкреНрд░рддреНрдпреЗрдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧрдХреЛ рд╕рд╛рдердорд╛ рдХрд╛рдо рдЧрд░реНрджрдЫ рд░ рдкреНрд▓реЗрдЯрдлрд░реНрдордХреЛ рдкрд░реНрд╡рд╛рд╣ рдирдЧрд░реА рд╕рд╛рдЭрд╛ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдкреНрд░рджрд╛рди рдЧрд░реНрди рдиреЗрдЯрд╡рд░реНрдХрд▓рд╛рдИ рд╕рд╛рд░ рдЧрд░реНрджрдЫред рдЬрдм рдПрдХ рдкреВрд░реНрд╡рд╛рдзрд╛рд░рдорд╛ рд╕рдмреИ рд╕реЗрд╡рд╛ рдЯреНрд░рд╛рдлрд┐рдХрд╣рд░реВ Envoy рдЬрд╛рд▓ рдорд╛рд░реНрдлрдд рдкреНрд░рд╡рд╛рд╣рд┐рдд рд╣реБрдиреНрдЫрдиреН, рд╕рдорд╕реНрдпрд╛ рдХреНрд╖реЗрддреНрд░рд╣рд░реВрд▓рд╛рдИ рдирд┐рд░рдиреНрддрд░ рдЕрд╡рд▓реЛрдХрди рдЧрд░реНрди, рд╕рдордЧреНрд░ рдХрд╛рд░реНрдпрд╕рдореНрдкрд╛рджрди рдЯреНрдпреБрди рдЧрд░реНрди, рд░ рд╡рд┐рд╢реЗрд╖ рд╕реНрдерд╛рдирдорд╛ рдореБрдЦреНрдп рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдердкреНрди рд╕рдЬрд┐рд▓реЛ рд╣реБрдиреНрдЫред

рд╡рд┐рд╢реЗрд╖рддрд╛рд╣рд░реВ

  • рдЖрдЙрдЯ-рдЕрдл-рдкреНрд░реЛрд╕реЗрд╕ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░: рджреВрдд рдПрдХ рдЖрддреНрдо-рдирд┐рд╣рд┐рдд, рдЙрдЪреНрдЪ-рдкреНрд░рджрд░реНрд╢рди рд╕рд░реНрднрд░ рд╣реЛ рдЬрд╕рд▓реЗ рдереЛрд░реИ рдорд╛рддреНрд░рд╛рдорд╛ RAM рд▓рд┐рдиреНрдЫред рдпреЛ рдХреБрдиреИ рдкрдирд┐ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рднрд╛рд╖рд╛ рд╡рд╛ рдлреНрд░реЗрдорд╡рд░реНрдХ рд╕рдВрдЧ рд╕рдВрдпреЛрдЬрди рдорд╛ рдХрд╛рдо рдЧрд░реНрджрдЫред
  • http/2 рд░ grpc рд╕рдорд░реНрдерди: рд░рд╛рдЬрджреВрддрдорд╛ рдкрд╣рд┐рд▓реЛ-рдХрдХреНрд╖рд╛ http/2 рд░ рдЖрдЧрдорди рд░ рдмрд╛рд╣рд┐рд░ рдЬрд╛рдиреЗ рдЬрдбрд╛рдирд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ grpc рд╕рдорд░реНрдерди рдЫред рдпреЛ http/1.1 рджреЗрдЦрд┐ http/2 рд╕рдореНрдордХреЛ рдкрд╛рд░рджрд░реНрд╢реА рдкреНрд░реЛрдХреНрд╕реА рд╣реЛред
  • рдЙрдиреНрдирдд рд▓реЛрдб рдмреНрдпрд╛рд▓реЗрдиреНрд╕рд┐рдЩ: рджреВрддрд▓реЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдкреБрди: рдкреНрд░рдпрд╛рд╕, рдЪреЗрди рдмреНрд░реЗрдХрд┐рдЩ, рдЧреНрд▓реЛрдмрд▓ рд░реЗрдЯ рд▓рд┐рдорд┐рдЯрд┐рдЩ, рд░рд┐рдХреНрд╡реЗрд╕реНрдЯ рд╢реЗрдбреЛрдЗрдЩ, рд╕реНрдерд╛рдиреАрдп рдЬреЛрди рд▓реЛрдб рдмреНрдпрд╛рд▓реЗрдиреНрд╕рд┐рдЩ, рдЗрддреНрдпрд╛рджрд┐ рд╕рд╣рд┐рдд рдЙрдиреНрдирдд рд▓реЛрдб рд╕рдиреНрддреБрд▓рди рд╕реБрд╡рд┐рдзрд╛рд╣рд░реВ рд╕рдорд░реНрдерди рдЧрд░реНрджрдЫред
  • рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди API: рджреВрддрд▓реЗ рддрдкрд╛рдИрдВрдХреЛ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рдирд▓рд╛рдИ рдЧрддрд┐рд╢реАрд▓ рд░реВрдкрдорд╛ рдкреНрд░рдмрдиреНрдз рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐ рдПрдХ рдмрд▓рд┐рдпреЛ API рдкреНрд░рджрд╛рди рдЧрд░реНрджрдЫред
  • рдЕрд╡рд▓реЛрдХрди рдпреЛрдЧреНрдпрддрд╛: L7 рдЯреНрд░рд╛рдлрд┐рдХрдХреЛ рдЧрд╣рд┐рд░реЛ рдЕрд╡рд▓реЛрдХрди рдпреЛрдЧреНрдпрддрд╛, рд╡рд┐рддрд░рд┐рдд рдЯреНрд░реЗрд╕рд┐рдЩрдХреЛ рд▓рд╛рдЧрд┐ рдиреЗрдЯрд┐рдн рд╕рдорд░реНрдерди рд░ mongodb, dynamodb рд░ рдЕрдиреНрдп рдзреЗрд░реИ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВрдХреЛ рдЕрд╡рд▓реЛрдХрди рдпреЛрдЧреНрдпрддрд╛ред

рдЪрд░рдг 1 - рдЙрджрд╛рд╣рд░рдг NGINX рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди

рдпреЛ рд▓рд┐рдкрд┐рд▓реЗ рд╡рд┐рд╢реЗрд╖ рд░реВрдкрдорд╛ рдХреНрд░рд╛рдлреНрдЯ рдЧрд░рд┐рдПрдХреЛ рдлрд╛рдЗрд▓ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджрдЫ nginx.conf, рдмрд╛рдЯ рдкреВрд░реНрдг рдЙрджрд╛рд╣рд░рдгрдорд╛ рдЖрдзрд╛рд░рд┐рдд NGINX рд╡рд┐рдХрд┐ред рддрдкрд╛рдИрдВрд▓реЗ рд╕рдореНрдкрд╛рджрдХрдорд╛ рдЦреЛрд▓реЗрд░ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рд╣реЗрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ nginx.conf

nginx рд╕реНрд░реЛрдд рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди

user  www www;
pid /var/run/nginx.pid;
worker_processes  2;

events {
  worker_connections   2000;
}

http {
  gzip on;
  gzip_min_length  1100;
  gzip_buffers     4 8k;
  gzip_types       text/plain;

  log_format main      '$remote_addr - $remote_user [$time_local]  '
    '"$request" $status $bytes_sent '
    '"$http_referer" "$http_user_agent" '
    '"$gzip_ratio"';

  log_format download  '$remote_addr - $remote_user [$time_local]  '
    '"$request" $status $bytes_sent '
    '"$http_referer" "$http_user_agent" '
    '"$http_range" "$sent_http_content_range"';

  upstream targetCluster {
    172.18.0.3:80;
    172.18.0.4:80;
  }

  server {
    listen        8080;
    server_name   one.example.com  www.one.example.com;

    access_log   /var/log/nginx.access_log  main;
    error_log  /var/log/nginx.error_log  info;

    location / {
      proxy_pass         http://targetCluster/;
      proxy_redirect     off;

      proxy_set_header   Host             $host;
      proxy_set_header   X-Real-IP        $remote_addr;
    }
  }
}

NGINX рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рдирд╣рд░реВрдорд╛ рд╕рд╛рдорд╛рдиреНрдпрддрдпрд╛ рддреАрди рдореБрдЦреНрдп рддрддреНрд╡рд╣рд░реВ рд╣реБрдиреНрдЫрдиреН:

  1. NGINX рд╕рд░реНрднрд░, рд▓рдЧ рд╕рдВрд░рдЪрдирд╛ рд░ Gzip рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░реНрджреИред рдпреЛ рд╕рдмреИ рдЕрд╡рд╕реНрдерд╛рдорд╛ рд╡рд┐рд╢реНрд╡рд╡реНрдпрд╛рдкреА рд░реВрдкрдорд╛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдЧрд░рд┐рдПрдХреЛ рдЫред
  2. рд╣реЛрд╕реНрдЯрд▓рд╛рдИ рдЕрдиреБрд░реЛрдзрд╣рд░реВ рд╕реНрд╡реАрдХрд╛рд░ рдЧрд░реНрди NGINX рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░реНрджреИ one.example.com рдкреЛрд░реНрдЯ 8080 рдорд╛ред
  3. рд▓рдХреНрд╖рд┐рдд рд╕реНрдерд╛рди рд╕реЗрдЯ рдЕрдк рдЧрд░реНрджреИ, URL рдХреЛ рд╡рд┐рднрд┐рдиреНрди рднрд╛рдЧрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдЯреНрд░рд╛рдлрд┐рдХ рдХрд╕рд░реА рд╣реНрдпрд╛рдиреНрдбрд▓ рдЧрд░реНрдиреЗред

рд╕рдмреИ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рдирд╣рд░реВ Envoy Proxy рдорд╛ рд▓рд╛рдЧреВ рд╣реБрдиреЗ рдЫреИрдирдиреН, рд░ рддрдкрд╛рдИрдВрд▓реЗ рдХреЗрд╣реА рд╕реЗрдЯрд┐рдЩрд╣рд░реВ рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫреИрдиред рд░рд╛рдЬрджреВрдд рдкреНрд░реЛрдХреНрд╕реА рдЫ рдЪрд╛рд░ рдкреНрд░рдореБрдЦ рдкреНрд░рдХрд╛рд░, рдЬрд╕рд▓реЗ NGINX рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рдЧрд░реЗрдХреЛ рдореБрдЦреНрдп рдкреВрд░реНрд╡рд╛рдзрд╛рд░рд▓рд╛рдИ рд╕рдорд░реНрдерди рдЧрд░реНрджрдЫред рдореВрд▓ рд╣реЛ:

  • рд╢реНрд░реЛрддрд╛рд╣рд░реВ: рддрд┐рдиреАрд╣рд░реВрд▓реЗ рджреВрдд рдкреНрд░реЛрдХреНрд╕реАрд▓реЗ рдЖрдЧрдорди рдЕрдиреБрд░реЛрдзрд╣рд░реВ рдХрд╕рд░реА рд╕реНрд╡реАрдХрд╛рд░ рдЧрд░реНрдЫ рднрдиреЗрд░ рдирд┐рд░реНрдзрд╛рд░рдг рдЧрд░реНрдЫрдиреНред Envoy Proxy рд▓реЗ рд╣рд╛рд▓ TCP-рдЖрдзрд╛рд░рд┐рдд рд╢реНрд░реЛрддрд╛рд╣рд░реВрд▓рд╛рдИ рдорд╛рддреНрд░ рд╕рдорд░реНрдерди рдЧрд░реНрджрдЫред рдПрдХ рдкрдЯрдХ рдЬрдбрд╛рди рд╕реНрдерд╛рдкрд┐рдд рднрдПрдкрдЫрд┐, рдпрд╕рд▓рд╛рдИ рдкреНрд░рд╢реЛрдзрдирдХрд╛ рд▓рд╛рдЧрд┐ рдлрд┐рд▓реНрдЯрд░рд╣рд░реВрдХреЛ рд╕реЗрдЯрдорд╛ рдкрдард╛рдЗрдиреНрдЫред
  • рдлрд┐рд▓реНрдЯрд░рд╣рд░реВ: рддрд┐рдиреАрд╣рд░реВ рдПрдХ рдкрд╛рдЗрдкрд▓рд╛рдЗрди рд╡рд╛рд╕реНрддреБрдХрд▓рд╛рдХреЛ рднрд╛рдЧ рд╣реБрдиреН рдЬрд╕рд▓реЗ рдЖрдЧрдорди рд░ рдмрд╣рд┐рд░реНрдЧрдорди рдбреЗрдЯрд╛ рдкреНрд░рд╢реЛрдзрди рдЧрд░реНрди рд╕рдХреНрдЫред рдпрд╕ рдкреНрд░рдХрд╛рд░реНрдпрд▓реЗ Gzip рдЬрд╕реНрддрд╛ рдлрд┐рд▓реНрдЯрд░рд╣рд░реВ рд╕рдорд╛рд╡реЗрд╢ рдЧрд░реНрджрдЫ, рдЬрд╕рд▓реЗ рдЧреНрд░рд╛рд╣рдХрд▓рд╛рдИ рдкрдард╛рдЙрдиреБ рдЕрдШрд┐ рдбрд╛рдЯрд╛ рдХрдореНрдкреНрд░реЗрд╕ рдЧрд░реНрджрдЫред
  • рд░рд╛рдЙрдЯрд░рд╣рд░реВ: рддрд┐рдиреАрд╣рд░реВрд▓реЗ рдЖрд╡рд╢реНрдпрдХ рдЧрдиреНрддрд╡реНрдпрдорд╛ рдЯреНрд░рд╛рдлрд┐рдХ рдлрд░реНрд╡рд╛рд░реНрдб рдЧрд░реНрдЫрдиреН, рдХреНрд▓рд╕реНрдЯрд░рдХреЛ рд░реВрдкрдорд╛ рдкрд░рд┐рднрд╛рд╖рд┐рддред
  • рдХреНрд▓рд╕реНрдЯрд░рд╣рд░реВ: рддрд┐рдиреАрд╣рд░реВрд▓реЗ рдЯреНрд░рд╛рдлрд┐рдХ рд░ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдЕрдиреНрддрд┐рдо рдмрд┐рдиреНрджреБ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдЧрд░реНрджрдЫред

рд╣рд╛рдореА рдпреА рдЪрд╛рд░ рдХрдореНрдкреЛрдиреЗрдиреНрдЯрд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗрдЫреМрдВ рдПрдЙрдЯрд╛ рд╡рд┐рд╢рд┐рд╖реНрдЯ NGINX рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рдирд╕рдБрдЧ рдореЗрд▓ рдЦрд╛рдиреЗ рджреВрдд рдкреНрд░реЛрдХреНрд╕реА рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиред рджреВрддрдХреЛ рд▓рдХреНрд╖реНрдп рдПрдкреАрдЖрдИ рд░ рдЧрддрд┐рд╢реАрд▓ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рдирд╕рдБрдЧ рдХрд╛рдо рдЧрд░реНрдиреБ рд╣реЛред рдпрд╕ рдЕрд╡рд╕реНрдерд╛рдорд╛, рдЖрдзрд╛рд░ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рдирд▓реЗ NGINX рдмрд╛рдЯ рд╕реНрдерд┐рд░, рд╣рд╛рд░реНрдб-рдХреЛрдб рдЧрд░рд┐рдПрдХреЛ рд╕реЗрдЯрд┐рдЩрд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗрдЫред

рдЪрд░рдг 2 - NGINX рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди

рдкрд╣рд┐рд▓реЛ рднрд╛рдЧ nginx.conf рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдХреЗрд╣реА NGINX рдЖрдиреНрддрд░рд┐рдХрд╣рд░реВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдЧрд░реНрджрдЫред

рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдЬрдбрд╛рдирд╣рд░реВ

рддрд▓рдХреЛ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рдирд▓реЗ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд░ рдЬрдбрд╛рдирд╣рд░реВрдХреЛ рд╕рдВрдЦреНрдпрд╛ рдирд┐рд░реНрдзрд╛рд░рдг рдЧрд░реНрджрдЫред рдпрд╕рд▓реЗ NGINX рдХрд╕рд░реА рдорд╛рдЧ рдкреВрд░рд╛ рдЧрд░реНрди рдорд╛рдкрди рдЧрд░реНрдиреЗрдЫ рднрдиреЗрд░ рд╕рдВрдХреЗрдд рдЧрд░реНрджрдЫред

worker_processes  2;

events {
  worker_connections   2000;
}

Envoy Proxy рд▓реЗ рд╡рд┐рднрд┐рдиреНрди рддрд░рд┐рдХрд╛рдорд╛ рдХрд╛рд░реНрдпрдкреНрд░рд╡рд╛рд╣ рд░ рдЬрдбрд╛рдирд╣рд░реВ рдкреНрд░рдмрдиреНрдз рдЧрд░реНрджрдЫред

рджреВрддрд▓реЗ рдкреНрд░рдгрд╛рд▓реАрдорд╛ рдкреНрд░рддреНрдпреЗрдХ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдереНрд░реЗрдбрдХреЛ рд▓рд╛рдЧрд┐ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдереНрд░реЗрдб рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрджрдЫред рдкреНрд░рддреНрдпреЗрдХ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдереНрд░реЗрдбрд▓реЗ рдЧреИрд░-рдмреНрд▓рдХрд┐рдЩ рдШрдЯрдирд╛ рд▓реБрдк рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЧрд░реНрджрдЫ рдЬреБрди рдЬрд┐рдореНрдореЗрд╡рд╛рд░ рдЫ

  1. рдкреНрд░рддреНрдпреЗрдХ рд╢реНрд░реЛрддрд╛рд▓рд╛рдИ рд╕реБрдиреНрджреИ
  2. рдирдпрд╛рдБ рдЬрдбрд╛рдирд╣рд░реВ рд╕реНрд╡реАрдХрд╛рд░ рдЧрд░реНрджреИ
  3. рдЬрдбрд╛рдирдХреЛ рд▓рд╛рдЧрд┐ рдлрд┐рд▓реНрдЯрд░рд╣рд░реВрдХреЛ рд╕реЗрдЯ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрджреИ
  4. рдЬрдбрд╛рдирдХреЛ рдЬреАрд╡рдирдХрд╛рд▓рдорд╛ рд╕рдмреИ I/O рдХрд╛рд░реНрдпрд╣рд░реВ рдкреНрд░рд╢реЛрдзрди рдЧрд░реНрдиреБрд╣реЛрд╕реНред

рд╕рдмреИ рдердк рдЬрдбрд╛рди рдкреНрд░рд╢реЛрдзрди рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдереНрд░реЗрдбрдорд╛ рдкреВрд░реНрдг рд░реВрдкрдорд╛ рд╣реНрдпрд╛рдиреНрдбрд▓ рдЧрд░рд┐рдиреНрдЫ, рдХреБрдиреИ рдкрдирд┐ рдлрд░реНрд╡рд╛рд░реНрдбрд┐рдЩ рд╡реНрдпрд╡рд╣рд╛рд░ рд╕рд╣рд┐рддред

рджреВрддрдорд╛ рдкреНрд░рддреНрдпреЗрдХ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдереНрд░реЗрдбрдХреЛ рд▓рд╛рдЧрд┐, рддреНрдпрд╣рд╛рдБ рдЬрдбрд╛рди рдкреВрд▓ рдЫред рддреНрдпрд╕реИрд▓реЗ HTTP/2 рдЬрдбрд╛рди рдкреВрд▓рд╣рд░реВрд▓реЗ рдПрдХ рдкрдЯрдХрдорд╛ рдкреНрд░рддрд┐ рдмрд╛рд╣реНрдп рд╣реЛрд╕реНрдЯрдорд╛ рдПрдЙрдЯрд╛ рдЬрдбрд╛рди рдорд╛рддреНрд░ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрджрдЫ, рдпрджрд┐ рддреНрдпрд╣рд╛рдБ рдЪрд╛рд░ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдереНрд░реЗрдбрд╣рд░реВ рдЫрдиреН рднрдиреЗ рддреНрдпрд╣рд╛рдБ рд╕реНрдерд┐рд░ рдЕрд╡рд╕реНрдерд╛рдорд╛ рдкреНрд░рддрд┐ рдмрд╛рд╣реНрдп рд╣реЛрд╕реНрдЯрдорд╛ рдЪрд╛рд░ HTTP/2 рдЬрдбрд╛рдирд╣рд░реВ рд╣реБрдиреЗрдЫрдиреНред рдПрдХ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдереНрд░реЗрдбрдорд╛ рд╕рдмреИ рдХреБрд░рд╛ рд░рд╛рдЦреЗрд░, рд▓рдЧрднрдЧ рд╕рдмреИ рдХреЛрдбрд╣рд░реВ рдмреНрд▓рдХ рдирдЧрд░реА рд▓реЗрдЦреНрди рд╕рдХрд┐рдиреНрдЫ, рдорд╛рдиреМрдВ рдпреЛ рдПрдХрд▓ рдереНрд░реЗрдб рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛред рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рднрдиреНрджрд╛ рдмрдвреА рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдереНрд░реЗрдбрд╣рд░реВ рдЖрд╡рдВрдЯрд┐рдд рдЧрд░рд┐рдпреЛ рднрдиреЗ, рдпрд╕рд▓реЗ рдореЗрдореЛрд░реАрд▓рд╛рдИ рдмрд░реНрдмрд╛рдж рдЧрд░реНрди рд╕рдХреНрдЫ, рдзреЗрд░реИ рд╕рдВрдЦреНрдпрд╛рдорд╛ рдирд┐рд╖реНрдХреНрд░рд┐рдп рдЬрдбрд╛рдирд╣рд░реВ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрди рд╕рдХреНрдЫ, рд░ рдкреБрди: рдкреВрд▓рдорд╛ рдЬрдбрд╛рдирд╣рд░реВ рдлрд┐рд░реНрддрд╛ рд╣реБрдиреЗ рд╕рдВрдЦреНрдпрд╛рд▓рд╛рдИ рдШрдЯрд╛рдЙрдБрдЫред

рдердк рдЬрд╛рдирдХрд╛рд░реАрдХреЛ рд▓рд╛рдЧрд┐ рднреНрд░рдордг рдЧрд░реНрдиреБрд╣реЛрд╕реН рджреВрдд рдкреНрд░реЛрдХреНрд╕реА рдмреНрд▓рдЧ.

HTTP рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди

рдирд┐рдореНрди NGINX рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рдмреНрд▓рдХрд▓реЗ HTTP рд╕реЗрдЯрд┐рдЩрд╣рд░реВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдЧрд░реНрджрдЫ рдЬрд╕реНрддреИ:

  • рдХреБрди рдорд╛рдЗрдо рдкреНрд░рдХрд╛рд░рд╣рд░реВ рд╕рдорд░реНрдерд┐рдд рдЫрдиреН
  • рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдЯрд╛рдЗрдордЖрдЙрдЯрд╣рд░реВ
  • Gzip рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди

рддрдкрд╛рдИрдВрд▓реЗ рджреВрдд рдкреНрд░реЛрдХреНрд╕реАрдорд╛ рдлрд┐рд▓реНрдЯрд░рд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдпреА рдкрдХреНрд╖рд╣рд░реВрд▓рд╛рдИ рдЕрдиреБрдХреВрд▓рди рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ, рдЬрд╕рд▓рд╛рдИ рд╣рд╛рдореА рдкрдЫрд┐ рдЫрд▓рдлрд▓ рдЧрд░реНрдиреЗрдЫреМрдВред

рдЪрд░рдг 3 - рд╕рд░реНрднрд░ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди

HTTP рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рдмреНрд▓рдХрдорд╛, NGINX рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рдирд▓реЗ рдкреЛрд░реНрдЯ 8080 рдорд╛ рд╕реБрдиреНрди рд░ рдбреЛрдореЗрдирд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдЖрдЧрдорди рдЕрдиреБрд░реЛрдзрд╣рд░реВрдХреЛ рдЬрд╡рд╛рдл рджрд┐рди рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░реНрджрдЫред one.example.com ╨╕ www.one.example.com.

 server {
    listen        8080;
    server_name   one.example.com  www.one.example.com;

рджреВрдд рднрд┐рддреНрд░, рдпреЛ рд╢реНрд░реЛрддрд╛рд╣рд░реВ рджреНрд╡рд╛рд░рд╛ рдирд┐рдпрдиреНрддреНрд░рд┐рдд рдЫред

рджреВрдд рд╢реНрд░реЛрддрд╛рд╣рд░реВ

Envoy Proxy рд╕рдБрдЧ рд╕реБрд░реБ рдЧрд░реНрдиреЗ рд╕рдмреИрднрдиреНрджрд╛ рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдг рдкрдХреНрд╖ рднрдиреЗрдХреЛ рддрдкрд╛рдИрдХрд╛ рд╢реНрд░реЛрддрд╛рд╣рд░реВрд▓рд╛рдИ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдЧрд░реНрдиреБ рд╣реЛред рддрдкрд╛рдИрдВрд▓реЗ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рдлрд╛рдЗрд▓ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ рдЬрд╕рд▓реЗ рд╡рд░реНрдгрди рдЧрд░реНрджрдЫ рдХрд┐ рддрдкрд╛рдИрдВ рдХрд╕рд░реА рджреВрдд рдЙрджрд╛рд╣рд░рдг рдЪрд▓рд╛рдЙрди рдЪрд╛рд╣рдиреБрд╣реБрдиреНрдЫред

рддрд▓рдХреЛ рд╕реНрдирд┐рдкреЗрдЯрд▓реЗ рдирдпрд╛рдБ рд╢реНрд░реЛрддрд╛ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреЗрдЫ рд░ рдпрд╕рд▓рд╛рдИ рдкреЛрд░реНрдЯ 8080 рдорд╛ рдмрд╛рдБрдзреНрдиреЗрдЫред рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рдирд▓реЗ Envoy Proxy рд▓рд╛рдИ рдЖрдЧрдорди рдЕрдиреБрд░реЛрдзрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдХреБрди рдкреЛрд░реНрдЯрд╣рд░реВ рдмрд╛рдБрдзреНрдиреБрдкрд░реНрдЫ рднрдиреЗрд░ рдмрддрд╛рдЙрдБрдЫред

Envoy Proxy рд▓реЗ рдпрд╕рдХреЛ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рдирдХреЛ рд▓рд╛рдЧрд┐ YAML рдиреЛрдЯреЗрд╢рди рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджрдЫред рдпрд╕ рдиреЛрдЯреЗрд╢рдирдХреЛ рдкрд░рд┐рдЪрдпрдХреЛ рд▓рд╛рдЧрд┐, рдпрд╣рд╛рдБ рд╣реЗрд░реНрдиреБрд╣реЛрд╕реН рд▓рд┐рдЩреНрдХ.

Copy to Editorstatic_resources:
  listeners:
  - name: listener_0
    address:
      socket_address: { address: 0.0.0.0, port_value: 8080 }

рдкрд░рд┐рднрд╛рд╖рд┐рдд рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫреИрди рд╕рд░реНрднрд░_рдирд╛рдо, рдХрд┐рдирдХрд┐ Envoy Proxy рдлрд┐рд▓реНрдЯрд░рд╣рд░реВрд▓реЗ рдпрд╕рд▓рд╛рдИ рд╣реНрдпрд╛рдиреНрдбрд▓ рдЧрд░реНрдиреЗрдЫрдиреНред

рдЪрд░рдг 4 - рд╕реНрдерд╛рди рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди

рдЬрдм NGINX рдорд╛ рдЕрдиреБрд░реЛрдз рдЖрдЙрдБрдЫ, рд╕реНрдерд╛рди рдмреНрд▓рдХрд▓реЗ рдХрд╕рд░реА рдкреНрд░рд╢реЛрдзрди рдЧрд░реНрдиреЗ рд░ рдЯреНрд░рд╛рдлрд┐рдХрд▓рд╛рдИ рдХрд╣рд╛рдБ рд░реБрдЯ рдЧрд░реНрдиреЗ рднрдиреЗрд░ рдирд┐рд░реНрдзрд╛рд░рдг рдЧрд░реНрджрдЫред рдирд┐рдореНрди рдЦрдгреНрдбрдорд╛, рд╕рд╛рдЗрдЯрдорд╛ рд╕рдмреИ рдЯреНрд░рд╛рдлрд┐рдХрд╣рд░реВ рдЕрдкрд╕реНрдЯреНрд░рд┐рдордорд╛ рд╕реНрдерд╛рдирд╛рдиреНрддрд░рдг рдЧрд░рд┐рдПрдХреЛ рдЫ (рдЕрдиреБрд╡рд╛рджрдХрдХреЛ рдиреЛрдЯ: рдЕрдкрд╕реНрдЯреНрд░реАрдо рд╕рд╛рдорд╛рдиреНрдпрддрдпрд╛ рдПрдЙрдЯрд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╕рд░реНрднрд░ рд╣реЛ) рдирд╛рдордХреЛ рдХреНрд▓рд╕реНрдЯрд░ рд▓рдХреНрд╖реНрдп рдХреНрд▓рд╕реНрдЯрд░ред рдЕрдкрд╕реНрдЯреНрд░реАрдо рдХреНрд▓рд╕реНрдЯрд░рд▓реЗ рдЕрдиреБрд░реЛрдзрд▓рд╛рдИ рдкреНрд░рд╢реЛрдзрди рдЧрд░реНрдиреЗ рдиреЛрдбрд╣рд░реВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдЧрд░реНрджрдЫред рд╣рд╛рдореА рдЕрд░реНрдХреЛ рдЪрд░рдгрдорд╛ рдпреЛ рдЫрд▓рдлрд▓ рдЧрд░реНрдиреЗрдЫреМрдВред

location / {
    proxy_pass         http://targetCluster/;
    proxy_redirect     off;

    proxy_set_header   Host             $host;
    proxy_set_header   X-Real-IP        $remote_addr;
}

рджреВрддрдорд╛, рдлрд┐рд▓реНрдЯрд░рд╣рд░реВрд▓реЗ рдпреЛ рдЧрд░реНрдЫред

рджреВрдд рдлрд┐рд▓реНрдЯрд░рд╣рд░реВ

рд╕реНрдерд┐рд░ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рдирдХреЛ рд▓рд╛рдЧрд┐, рдлрд┐рд▓реНрдЯрд░рд╣рд░реВрд▓реЗ рдЖрдЧрдорди рдЕрдиреБрд░реЛрдзрд╣рд░реВ рдХрд╕рд░реА рдкреНрд░рд╢реЛрдзрди рдЧрд░реНрдиреЗ рднрдиреЗрд░ рдирд┐рд░реНрдзрд╛рд░рдг рдЧрд░реНрджрдЫред рдпрд╕ рдЕрд╡рд╕реНрдерд╛рдорд╛ рд╣рд╛рдореАрд▓реЗ рдорд┐рд▓реНрджреЛ рдлрд┐рд▓реНрдЯрд░рд╣рд░реВ рд╕реЗрдЯ рдЧрд░реНрдЫреМрдВ рд╕рд░реНрднрд░_рдирд╛рдорд╣рд░реВ рдЕрдШрд┐рд▓реНрд▓реЛ рдЪрд░рдгрдорд╛ред рдЬрдм рдЖрдЧрдорди рдЕрдиреБрд░реЛрдзрд╣рд░реВ рдЖрдЗрдкреБрдЧреНрдЫрдиреН рдЬреБрди рдирд┐рд╢реНрдЪрд┐рдд рдбреЛрдореЗрди рд░ рдорд╛рд░реНрдЧрд╣рд░реВрд╕рдБрдЧ рдореЗрд▓ рдЦрд╛рдиреНрдЫ, рдЯреНрд░рд╛рдлрд┐рдХ рдХреНрд▓рд╕реНрдЯрд░рдорд╛ рд░реБрдЯ рд╣реБрдиреНрдЫред рдпреЛ NGINX рддрд▓-рдЕрдк рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рдирдХреЛ рдмрд░рд╛рдмрд░ рд╣реЛред

Copy to Editor    filter_chains:
    - filters:
      - name: envoy.http_connection_manager
        config:
          codec_type: auto
          stat_prefix: ingress_http
          route_config:
            name: local_route
            virtual_hosts:
            - name: backend
              domains:
                - "one.example.com"
                - "www.one.example.com"
              routes:
              - match:
                  prefix: "/"
                route:
                  cluster: targetCluster
          http_filters:
          - name: envoy.router

рдирд╛рдо envoy.http_connection_manager Envoy Proxy рдорд╛ рдирд┐рд░реНрдорд┐рдд рдлрд┐рд▓реНрдЯрд░ рд╣реЛред рдЕрдиреНрдп рдлрд┐рд▓реНрдЯрд░рд╣рд░реВ рд╕рдорд╛рд╡реЗрд╢ рдЫрдиреН Redis, рдореЛрдиреНрдЧреЛ, рдЯреАрд╕реАрдкреАред рддрдкрд╛рдИрдВ рдорд╛ рдкреВрд░рд╛ рд╕реВрдЪреА рдкрд╛рдЙрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ рдХрд╛рдЧрдЬрд╛рдд.

рдЕрдиреНрдп рд▓реЛрдб рд╕рдиреНрддреБрд▓рди рдиреАрддрд┐рд╣рд░реВрдХреЛ рдмрд╛рд░реЗрдорд╛ рдердк рдЬрд╛рдирдХрд╛рд░реАрдХреЛ рд▓рд╛рдЧрд┐, рднреНрд░рдордг рдЧрд░реНрдиреБрд╣реЛрд╕реН рджреВрдд рджрд╕реНрддрд╛рд╡реЗрдЬ.

рдЪрд░рдг 5 - рдкреНрд░реЛрдХреНрд╕реА рд░ рдЕрдкрд╕реНрдЯреНрд░реАрдо рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди

NGINX рдорд╛, рдЕрдкрд╕реНрдЯреНрд░реАрдо рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рдирд▓реЗ рдЯреНрд░рд╛рдлрд┐рдХ рдкреНрд░рд╢реЛрдзрди рдЧрд░реНрдиреЗ рд▓рдХреНрд╖реНрдп рд╕рд░реНрднрд░рд╣рд░реВрдХреЛ рд╕реЗрдЯ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдЧрд░реНрджрдЫред рдпрд╕ рдорд╛рдорд▓рд╛ рдорд╛, рджреБрдИ рдХреНрд▓рд╕реНрдЯрд░ рддреЛрдХрд┐рдПрдХреЛ рдерд┐рдпреЛред

  upstream targetCluster {
    172.18.0.3:80;
    172.18.0.4:80;
  }

рджреВрддрдорд╛, рдпреЛ рдХреНрд▓рд╕реНрдЯрд░рд╣рд░реВрджреНрд╡рд╛рд░рд╛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдЧрд░рд┐рдиреНрдЫред

рджреВрдд рдХреНрд▓рд╕реНрдЯрд░рд╣рд░реВ

рдорд╛рдерд┐рд▓реНрд▓реЛ рд╕рдорддреБрд▓реНрдп рдХреНрд▓рд╕реНрдЯрд░рд╣рд░реВрдХреЛ рд░реВрдкрдорд╛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдЧрд░рд┐рдПрдХреЛ рдЫред рдпрд╕ рдЕрд╡рд╕реНрдерд╛рдорд╛, рдЯреНрд░рд╛рдлрд┐рдХ рд╕реЗрд╡рд╛ рдЧрд░реНрдиреЗ рд╣реЛрд╕реНрдЯрд╣рд░реВ рдкрд╣рд┐рдЪрд╛рди рдЧрд░рд┐рдПрдХреЛ рдЫред рд╣реЛрд╕реНрдЯрд╣рд░реВ рдкрд╣реБрдБрдЪ рдЧрд░реНрдиреЗ рддрд░рд┐рдХрд╛, рдЬрд╕реНрддреИ рдЯрд╛рдЗрдордЖрдЙрдЯрд╣рд░реВ, рдХреНрд▓рд╕реНрдЯрд░ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рдирдХреЛ рд░реВрдкрдорд╛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдЧрд░рд┐рдПрдХреЛ рдЫред рдпрд╕рд▓реЗ рд╡рд┐рд▓рдореНрдмрддрд╛ рд░ рд▓реЛрдб рд╕рдиреНрддреБрд▓рди рдЬрд╕реНрддрд╛ рдкрдХреНрд╖рд╣рд░реВрдорд╛ рдердк рджрд╛рдиреЗрджрд╛рд░ рдирд┐рдпрдиреНрддреНрд░рдгрдХреЛ рд▓рд╛рдЧрд┐ рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫред

Copy to Editor  clusters:
  - name: targetCluster
    connect_timeout: 0.25s
    type: STRICT_DNS
    dns_lookup_family: V4_ONLY
    lb_policy: ROUND_ROBIN
    hosts: [
      { socket_address: { address: 172.18.0.3, port_value: 80 }},
      { socket_address: { address: 172.18.0.4, port_value: 80 }}
    ]

рд╕реЗрд╡рд╛ рдЦреЛрдЬ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджрд╛ STRICT_DNS рджреВрддрд▓реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ DNS рд▓рдХреНрд╖реНрдпрд╣рд░реВрд▓рд╛рдИ рдирд┐рд░рдиреНрддрд░ рд░ рдПрд╕рд┐рдиреНрдХреНрд░реЛрдирд╕ рд░реВрдкрдорд╛ рд╕рдорд╛рдзрд╛рди рдЧрд░реНрдиреЗрдЫред DNS рдкрд░рд┐рдгрд╛рдордмрд╛рдЯ рдкреНрд░рддреНрдпреЗрдХ рдлрд┐рд░реНрддрд╛ рдЧрд░рд┐рдПрдХреЛ IP рдареЗрдЧрд╛рдирд╛рд▓рд╛рдИ рдЕрдкрд╕реНрдЯреНрд░реАрдо рдХреНрд▓рд╕реНрдЯрд░рдорд╛ рд╕реНрдкрд╖реНрдЯ рд╣реЛрд╕реНрдЯ рдорд╛рдирд┐рдиреЗрдЫред рдпрд╕рдХреЛ рдорддрд▓рдм рдпреЛ рд╣реЛ рдХрд┐ рдпрджрд┐ рдЕрдиреБрд░реЛрдзрд▓реЗ рджреБрдИ рдЖрдИрдкреА рдареЗрдЧрд╛рдирд╛рд╣рд░реВ рдлрд░реНрдХрд╛рдЙрдБрдЫ рднрдиреЗ, рджреВрддрд▓реЗ рдХреНрд▓рд╕реНрдЯрд░рдорд╛ рджреБрдИ рд╣реЛрд╕реНрдЯрд╣рд░реВ рдЫрдиреН рднрдиреА рдорд╛рдиреНрдиреЗрдЫ, рд░ рджреБрдмреИ рд▓реЛрдб рд╕рдиреНрддреБрд▓рд┐рдд рд╣реБрдиреБрдкрд░реНрдЫред рдпрджрд┐ рдкрд░рд┐рдгрд╛рдордмрд╛рдЯ рд╣реЛрд╕реНрдЯ рд╣рдЯрд╛рдЗрдпреЛ рднрдиреЗ, рджреВрддрд▓реЗ рдпреЛ рдЕрдм рдЕрд╡рд╕реНрдерд┐рдд рдЫреИрди рднрдиреА рдорд╛рдиреНрдиреЗрдЫ рд░ рдХреБрдиреИ рдкрдирд┐ рдЕрд╡рд╕реНрдерд┐рдд рдЬрдбрд╛рди рдкреВрд▓рд╣рд░реВрдмрд╛рдЯ рдЯреНрд░рд╛рдлрд┐рдХ рддрд╛рдиреНрдиреБрд╣реБрдиреЗрдЫред

рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рд▓рд╛рдЧреА рд╣реЗрд░реНрдиреБрд╣реЛрд╕реН рджреВрдд рдкреНрд░реЛрдХреНрд╕реА рдХрд╛рдЧрдЬрд╛рдд.

рдЪрд░рдг 6 - рд▓рдЧ рдкрд╣реБрдБрдЪ рд░ рддреНрд░реБрдЯрд┐рд╣рд░реВ

рдЕрдиреНрддрд┐рдо рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рджрд░реНрддрд╛ рд╣реЛред рддреНрд░реБрдЯрд┐ рд▓рдЧрд╣рд░реВрд▓рд╛рдИ рдбрд┐рд╕реНрдХрдорд╛ рдзрдХреЗрд▓реНрдиреБрдХреЛ рд╕рдЯреНрдЯрд╛, Envoy Proxy рд▓реЗ рдХреНрд▓рд╛рдЙрдб-рдЖрдзрд╛рд░рд┐рдд рджреГрд╖реНрдЯрд┐рдХреЛрдг рд▓рд┐рдиреНрдЫред рд╕рдмреИ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд▓рдЧрд╣рд░реВ рдЖрдЙрдЯрдкреБрдЯ рд╣реБрдиреН stdout ╨╕ stderr.

рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд╣рд░реВрд▓реЗ рдЕрдиреБрд░реЛрдз рдЧрд░реНрджрд╛, рдкрд╣реБрдБрдЪ рд▓рдЧрд╣рд░реВ рдРрдЪреНрдЫрд┐рдХ рд╣реБрдиреНрдЫрдиреН рд░ рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд░реВрдкрдорд╛ рдЕрд╕рдХреНрд╖рдо рд╣реБрдиреНрдЫрдиреНред HTTP рдЕрдиреБрд░реЛрдзрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдкрд╣реБрдБрдЪ рд▓рдЧрд╣рд░реВ рд╕рдХреНрд╖рдо рдЧрд░реНрди, рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рд╕рдХреНрд╖рдо рдЧрд░реНрдиреБрд╣реЛрд╕реН access_log HTTP рдЬрдбрд╛рди рдкреНрд░рдмрдиреНрдзрдХрдХреЛ рд▓рд╛рдЧрд┐ред рдмрд╛рдЯреЛ рдпрд╛ рдд рдЙрдкрдХрд░рдг рдЬрд╕реНрддреИ рд╣реБрди рд╕рдХреНрдЫ stdout, рд╡рд╛ рдбрд┐рд╕реНрдХрдорд╛ рдлрд╛рдЗрд▓, рддрдкрд╛рдЗрдБрдХреЛ рдЖрд╡рд╢реНрдпрдХрддрд╛рд╣рд░реБ рдорд╛ рдирд┐рд░реНрднрд░ рдЧрд░реНрджрдЫред

рдирд┐рдореНрди рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рдирд▓реЗ рд╕рдмреИ рдкрд╣реБрдБрдЪ рд▓рдЧрд╣рд░реВрд▓рд╛рдИ рд░рд┐рдбрд┐рд░реЗрдХреНрдЯ рдЧрд░реНрдиреЗрдЫ stdout (рдЕрдиреБрд╡рд╛рджрдХрдХреЛ рдиреЛрдЯ - рдбрдХрд░ рднрд┐рддреНрд░ рджреВрдд рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди stdout рдЖрд╡рд╢реНрдпрдХ рдЫред рдпрджрд┐ рдбрдХрд░ рдмрд┐рдирд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдПрдХреЛ рдЫ рднрдиреЗ, /dev/stdout рд▓рд╛рдИ рдирд┐рдпрдорд┐рдд рд▓рдЧ рдлрд╛рдЗрд▓рдХреЛ рдорд╛рд░реНрдЧрд╕рдБрдЧ рдмрджрд▓реНрдиреБрд╣реЛрд╕реН)ред рдЬрдбрд╛рди рдкреНрд░рдмрдиреНрдзрдХрдХреЛ рд▓рд╛рдЧрд┐ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рд╕реЗрдХреНрд╕рдирдорд╛ рд╕реНрдирд┐рдкреЗрдЯ рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдЧрд░реНрдиреБрд╣реЛрд╕реН:

Copy to Clipboardaccess_log:
- name: envoy.file_access_log
  config:
    path: "/dev/stdout"

рдирддрд┐рдЬрд╛рд╣рд░реБ рдпрд╕реНрддреЛ рджреЗрдЦрд┐рдиреБ рдкрд░реНрдЫ:

      - name: envoy.http_connection_manager
        config:
          codec_type: auto
          stat_prefix: ingress_http
          access_log:
          - name: envoy.file_access_log
            config:
              path: "/dev/stdout"
          route_config:

рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд░реВрдкрдорд╛, рджреВрддрд╕рдБрдЧ HTTP рдЕрдиреБрд░реЛрдзрдХреЛ рд╡рд┐рд╡рд░рдгрд╣рд░реВ рд╕рдорд╛рд╡реЗрд╢ рдЧрд░реНрдиреЗ рдврд╛рдБрдЪрд╛ рд╕реНрдЯреНрд░рд┐рдЩ рдЫ:

[%START_TIME%] "%REQ(:METHOD)% %REQ(X-ENVOY-ORIGINAL-PATH?:PATH)% %PROTOCOL%" %RESPONSE_CODE% %RESPONSE_FLAGS% %BYTES_RECEIVED% %BYTES_SENT% %DURATION% %RESP(X-ENVOY-UPSTREAM-SERVICE-TIME)% "%REQ(X-FORWARDED-FOR)%" "%REQ(USER-AGENT)%" "%REQ(X-REQUEST-ID)%" "%REQ(:AUTHORITY)%" "%UPSTREAM_HOST%"n

рдпреЛ рдврд╛рдБрдЪрд╛ рд╕реНрдЯреНрд░рд┐рдЩ рдХреЛ рдкрд░рд┐рдгрд╛рдо рд╣реЛ:

[2018-11-23T04:51:00.281Z] "GET / HTTP/1.1" 200 - 0 58 4 1 "-" "curl/7.47.0" "f21ebd42-6770-4aa5-88d4-e56118165a7d" "one.example.com" "172.18.0.4:80"

рдЖрдЙрдЯрдкреБрдЯ рд╕рд╛рдордЧреНрд░реА рдврд╛рдБрдЪрд╛ рдХреНрд╖реЗрддреНрд░ рд╕реЗрдЯ рдЧрд░реЗрд░ рдЕрдиреБрдХреВрд▓рд┐рдд рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫред рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐:

access_log:
- name: envoy.file_access_log
  config:
    path: "/dev/stdout"
    format: "[%START_TIME%] "%REQ(:METHOD)% %REQ(X-ENVOY-ORIGINAL-PATH?:PATH)% %PROTOCOL%" %RESPONSE_CODE% %RESP(X-ENVOY-UPSTREAM-SERVICE-TIME)% "%REQ(X-REQUEST-ID)%" "%REQ(:AUTHORITY)%" "%UPSTREAM_HOST%"n"

рд▓рдЧ рд▓рд╛рдЗрди рдХреНрд╖реЗрддреНрд░ рд╕реЗрдЯ рдЧрд░реЗрд░ JSON рдврд╛рдБрдЪрд╛рдорд╛ рдкрдирд┐ рдЖрдЙрдЯрдкреБрдЯ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ json_formatред рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐:

access_log:
- name: envoy.file_access_log
  config:
    path: "/dev/stdout"
    json_format: {"protocol": "%PROTOCOL%", "duration": "%DURATION%", "request_method": "%REQ(:METHOD)%"}

рджреВрдд рджрд░реНрддрд╛ рд╡рд┐рдзрд┐рдХреЛ рдмрд╛рд░реЗрдорд╛ рдердк рдЬрд╛рдирдХрд╛рд░реАрдХреЛ рд▓рд╛рдЧрд┐, рднреНрд░рдордг рдЧрд░реНрдиреБрд╣реЛрд╕реН

https://www.envoyproxy.io/docs/envoy/latest/configuration/access_log#config-access-log-format-dictionaries

Envoy Proxy рд╕рдБрдЧ рдХрд╛рдо рдЧрд░реНрдиреЗ рдЕрдиреНрддрд░рджреГрд╖реНрдЯрд┐ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрдиреЗ рдПрдХ рдорд╛рддреНрд░ рддрд░рд┐рдХрд╛ рд▓рдЧрд┐рдЩ рд╣реЛрдЗрдиред рдпрд╕рдорд╛ рдЙрдиреНрдирдд рдЯреНрд░реЗрд╕рд┐рдЩ рд░ рдореЗрдЯреНрд░рд┐рдХреНрд╕ рдХреНрд╖рдорддрд╛рд╣рд░реВ рдЫрдиреНред рддрдкрд╛рдИрдВ рдорд╛ рдердк рдкрддреНрддрд╛ рд▓рдЧрд╛рдЙрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ рдЯреНрд░реЗрд╕рд┐рдЩ рдХрд╛рдЧрдЬрд╛рдд рд╡рд╛ рдорд╛рд░реНрдлрдд рдЕрдиреНрддрд░рдХреНрд░рд┐рдпрд╛рддреНрдордХ рдЯреНрд░реЗрд╕рд┐рдЩ рд╕реНрдХреНрд░рд┐рдкреНрдЯ.

рдЪрд░рдг 7 - рд╕реБрд░реБ рдЧрд░реНрдиреБрд╣реЛрд╕реН

рддрдкрд╛рдИрдВрд▓реЗ рдЕрдм рдЖрдлреНрдиреЛ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди NGINX рдмрд╛рдЯ Envoy Proxy рдорд╛ рд╕реНрдерд╛рдирд╛рдиреНрддрд░рдг рдЧрд░реНрдиреБрднрдПрдХреЛ рдЫред рдЕрдиреНрддрд┐рдо рдЪрд░рдг рдпреЛ рдкрд░реАрдХреНрд╖рдг рдЧрд░реНрди рдПрдХ рджреВрдд рдкреНрд░реЛрдХреНрд╕реА рдЙрджрд╛рд╣рд░рдг рд╕реБрд░реБ рдЧрд░реНрдиреБ рд╣реЛред

рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рдХреЛ рд░реВрдкрдорд╛ рдЪрд▓рд╛рдЙрдиреБрд╣реЛрд╕реН

NGINX рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рд▓рд╛рдЗрдирдХреЛ рд╢реАрд░реНрд╖рдорд╛ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛ www www; рд╕реБрд░рдХреНрд╖рд╛ рд╕реБрдзрд╛рд░ рдЧрд░реНрди NGINX рд▓рд╛рдИ рдХрдо рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░ рдкреНрд░рд╛рдкреНрдд рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рдХреЛ рд░реВрдкрдорд╛ рдЪрд▓рд╛рдЙрди рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░реНрджрдЫред

Envoy Proxy рд▓реЗ рдПрдЙрдЯрд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдХреЛ рдорд╛рд▓рд┐рдХ рдХрд╕рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди рдЧрд░реНрди рдХреНрд▓рд╛рдЙрдб-рдЖрдзрд╛рд░рд┐рдд рджреГрд╖реНрдЯрд┐рдХреЛрдг рд▓рд┐рдиреНрдЫред рдЬрдм рд╣рд╛рдореА рдХрдиреНрдЯреЗрдирд░ рдорд╛рд░реНрдлрдд рджреВрдд рдкреНрд░реЛрдХреНрд╕реА рдЪрд▓рд╛рдЙрдБрдЫреМрдВ, рд╣рд╛рдореА рдХрдо рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░ рдкреНрд░рд╛рдкреНрдд рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░реНрди рд╕рдХреНрдЫреМрдВред

рджреВрдд рдкреНрд░реЛрдХреНрд╕реА рд╕реБрд░реБ рдЧрд░реНрджреИ

рддрд▓рдХреЛ рдЖрджреЗрд╢рд▓реЗ рд╣реЛрд╕реНрдЯрдорд╛ рдбрдХрд░ рдХрдиреНрдЯреЗрдирд░ рдорд╛рд░реНрдлрдд рджреВрдд рдкреНрд░реЛрдХреНрд╕реА рдЪрд▓рд╛рдЙрдиреЗрдЫред рдпреЛ рдЖрджреЗрд╢рд▓реЗ рджреВрддрд▓рд╛рдИ рдкреЛрд░реНрдЯ 80 рдорд╛ рдЖрдЧрдорди рдЕрдиреБрд░реЛрдзрд╣рд░реВ рд╕реБрдиреНрди рд╕рдХреНрдиреЗ рдХреНрд╖рдорддрд╛ рджрд┐рдиреНрдЫред рдпрджреНрдпрдкрд┐, рд╢реНрд░реЛрддрд╛ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рдирдорд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░рд┐рдП рдЕрдиреБрд╕рд╛рд░, Envoy рдкреНрд░реЛрдХреНрд╕реАрд▓реЗ рдкреЛрд░реНрдЯ 8080 рдорд╛ рдЖрдЧрдорди рдЯреНрд░рд╛рдлрд┐рдХрдХреЛ рд▓рд╛рдЧрд┐ рд╕реБрдиреНрдЫред рдпрд╕рд▓реЗ рдкреНрд░рдХреНрд░рд┐рдпрд╛рд▓рд╛рдИ рдХрдо-рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░ рдкреНрд░рд╛рдкреНрдд рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рдХреЛ рд░реВрдкрдорд╛ рдЪрд▓рд╛рдЙрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫред

docker run --name proxy1 -p 80:8080 --user 1000:1000 -v /root/envoy.yaml:/etc/envoy/envoy.yaml envoyproxy/envoy

рдкрд░реАрдХреНрд╖рдг рдЧрд░реНрджреИ

рдкреНрд░реЛрдХреНрд╕реА рдЪрд▓рд┐рд░рд╣реЗрдХреЛ рд╕рдВрдЧ, рдкрд░реАрдХреНрд╖рдгрд╣рд░реВ рдЕрдм рдмрдирд╛рдЙрди рд░ рдкреНрд░рд╢реЛрдзрди рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫред рдирд┐рдореНрди cURL рдЖрджреЗрд╢рд▓реЗ рдкреНрд░реЛрдХреНрд╕реА рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рдирдорд╛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╣реЛрд╕реНрдЯ рд╣реЗрдбрд░рд╕рдБрдЧ рдЕрдиреБрд░реЛрдз рдЬрд╛рд░реА рдЧрд░реНрджрдЫред

curl -H "Host: one.example.com" localhost -i

HTTP рдЕрдиреБрд░реЛрдзрдХреЛ рдкрд░рд┐рдгрд╛рдо рддреНрд░реБрдЯрд┐ рд╣реБрдиреЗрдЫ 503ред рдпреЛ рдХрд┐рдирднрдиреЗ рдЕрдкрд╕реНрдЯреНрд░реАрдо рдЬрдбрд╛рдирд╣рд░реВ рдХрд╛рдо рдЧрд░рд┐рд░рд╣реЗрдХрд╛ рдЫреИрдирдиреН рд░ рдЙрдкрд▓рдмреНрдз рдЫреИрдирдиреНред рддреНрдпрд╕рдХрд╛рд░рдг, рджреВрдд рдкреНрд░реЛрдХреНрд╕реАрд╕рдБрдЧ рдЕрдиреБрд░реЛрдзрдХреЛ рд▓рд╛рдЧрд┐ рдХреБрдиреИ рдЙрдкрд▓рдмреНрдз рдЧрдиреНрддрд╡реНрдпрд╣рд░реВ рдЫреИрдирдиреНред рдирд┐рдореНрди рдЖрджреЗрд╢рд▓реЗ HTTP рд╕реЗрд╡рд╛рд╣рд░реВрдХреЛ рд╢реГрдЩреНрдЦрд▓рд╛ рд╕реБрд░реБ рдЧрд░реНрдиреЗрдЫ рдЬреБрди рджреВрддрдХрд╛ рд▓рд╛рдЧрд┐ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рдирд╕рдБрдЧ рдореЗрд▓ рдЦрд╛рдиреНрдЫред

docker run -d katacoda/docker-http-server; docker run -d katacoda/docker-http-server;

рдЙрдкрд▓рдмреНрдз рд╕реЗрд╡рд╛рд╣рд░реВрдХреЛ рд╕рд╛рде, рд░рд╛рдЬрджреВрддрд▓реЗ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдЖрдлреНрдиреЛ рдЧрдиреНрддрд╡реНрдпрдорд╛ рдЯреНрд░рд╛рдлрд┐рдХ рдкреНрд░реЛрдХреНрд╕реА рдЧрд░реНрди рд╕рдХреНрдЫред

curl -H "Host: one.example.com" localhost -i

рддрдкрд╛рдИрдВрд▓реЗ рдХреБрди рдбрдХрд░ рдХрдиреНрдЯреЗрдирд░рд▓реЗ рдЕрдиреБрд░реЛрдзрд▓рд╛рдИ рдкреНрд░рд╢реЛрдзрди рдЧрд░реНрдпреЛ рднрдиреЗрд░ рд╕рдВрдХреЗрдд рдЧрд░реНрдиреЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреЗрдЦреНрдиреБрдкрд░реНрдЫред Envoy Proxy рд▓рдЧрд╣рд░реВрдорд╛ рддрдкрд╛рдИрдВрд▓реЗ рдкрд╣реБрдБрдЪ рд╕реНрдЯреНрд░рд┐рдЩ рдЖрдЙрдЯрдкреБрдЯ рдкрдирд┐ рджреЗрдЦреНрдиреБрдкрд░реНрдЫред

рдЕрддрд┐рд░рд┐рдХреНрдд HTTP рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╣реЗрдбрд░рд╣рд░реВ

рддрдкрд╛рдИрдВрд▓реЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЕрдиреБрд░реЛрдзрдХреЛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╣реЗрдбрд░рд╣рд░реВрдорд╛ рдЕрддрд┐рд░рд┐рдХреНрдд HTTP рд╣реЗрдбрд░рд╣рд░реВ рджреЗрдЦреНрдиреБрд╣реБрдиреЗрдЫред рд╣реЗрдбрд░рд▓реЗ рдЕрдкрд╕реНрдЯреНрд░реАрдо рд╣реЛрд╕реНрдЯрд▓реЗ рдЕрдиреБрд░реЛрдз рдкреНрд░рд╢реЛрдзрди рдЧрд░реНрди рдЦрд░реНрдЪ рдЧрд░реЗрдХреЛ рд╕рдордп рджреЗрдЦрд╛рдЙрдБрдЫред рдорд┐рд▓рд┐рд╕реЗрдХреЗрдиреНрдбрдорд╛ рд╡реНрдпрдХреНрдд рдЧрд░рд┐рдпреЛред рдпрджрд┐ рдЧреНрд░рд╛рд╣рдХрд▓реЗ рдиреЗрдЯрд╡рд░реНрдХ рд╡рд┐рд▓рдореНрдмрддрд╛рдХреЛ рддреБрд▓рдирд╛рдорд╛ рд╕реЗрд╡рд╛ рд╕рдордп рдирд┐рд░реНрдзрд╛рд░рдг рдЧрд░реНрди рдЪрд╛рд╣рдиреНрдЫ рднрдиреЗ рдпреЛ рдЙрдкрдпреЛрдЧреА рдЫред

x-envoy-upstream-service-time: 0
server: envoy

рдЕрдиреНрддрд┐рдо рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди

static_resources:
  listeners:
  - name: listener_0
    address:
      socket_address: { address: 0.0.0.0, port_value: 8080 }
    filter_chains:
    - filters:
      - name: envoy.http_connection_manager
        config:
          codec_type: auto
          stat_prefix: ingress_http
          route_config:
            name: local_route
            virtual_hosts:
            - name: backend
              domains:
                - "one.example.com"
                - "www.one.example.com"
              routes:
              - match:
                  prefix: "/"
                route:
                  cluster: targetCluster
          http_filters:
          - name: envoy.router
          clusters:
  - name: targetCluster
    connect_timeout: 0.25s
    type: STRICT_DNS
    dns_lookup_family: V4_ONLY
    lb_policy: ROUND_ROBIN
    hosts: [
      { socket_address: { address: 172.18.0.3, port_value: 80 }},
      { socket_address: { address: 172.18.0.4, port_value: 80 }}
    ]

admin:
  access_log_path: /tmp/admin_access.log
  address:
    socket_address: { address: 0.0.0.0, port_value: 9090 }

рдЕрдиреБрд╡рд╛рджрдХрдмрд╛рдЯ рдердк рдЬрд╛рдирдХрд╛рд░реА

рджреВрдд рдкреНрд░реЛрдХреНрд╕реА рд╕реНрдерд╛рдкрдирд╛рдХрд╛ рд▓рд╛рдЧрд┐ рдирд┐рд░реНрджреЗрд╢рдирд╣рд░реВ рд╡реЗрдмрд╕рд╛рдЗрдЯрдорд╛ рдлреЗрд▓рд╛ рдкрд╛рд░реНрди рд╕рдХрд┐рдиреНрдЫ https://www.getenvoy.io/

рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд░реВрдкрдорд╛, rpm рд╕рдБрдЧ systemd рд╕реЗрд╡рд╛ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рдЫреИрдиред

systemd рд╕реЗрд╡рд╛ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рдердкреНрдиреБрд╣реЛрд╕реН /etc/systemd/system/envoy.service:

[Unit]
Description=Envoy Proxy
Documentation=https://www.envoyproxy.io/
After=network-online.target
Requires=envoy-auth-server.service
Wants=nginx.service

[Service]
User=root
Restart=on-failure
ExecStart=/usr/bin/envoy --config-path /etc/envoy/config.yaml
[Install]
WantedBy=multi-user.target

рддрдкрд╛рдИрдВрд▓реЗ рдбрд╛рдЗрд░реЗрдХреНрдЯрд░реА рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ /etc/envoy/ рд░ рддреНрдпрд╣рд╛рдБ config.yaml рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рд░рд╛рдЦреНрдиреБрд╣реЛрд╕реНред

рджреВрдд рдкреНрд░реЛрдХреНрд╕реА рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдЯреЗрд▓рд┐рдЧреНрд░рд╛рдо рдЪреНрдпрд╛рдЯ рдЫ: https://t.me/envoyproxy_ru

рджреВрдд рдкреНрд░реЛрдХреНрд╕реАрд▓реЗ рд╕реНрдерд┐рд░ рд╕рд╛рдордЧреНрд░реА рд╕реЗрд╡рд╛ рдЧрд░реНрди рд╕рдорд░реНрдерди рдЧрд░реНрджреИрдиред рддреНрдпрд╕рдХрд╛рд░рдг, рдХрд╕рд▓реЗ рд╕реБрд╡рд┐рдзрд╛рдХреЛ рд▓рд╛рдЧрд┐ рдорддрджрд╛рди рдЧрд░реНрди рд╕рдХреНрдЫ: https://github.com/envoyproxy/envoy/issues/378

рджрд░реНрддрд╛ рднрдПрдХрд╛ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд╣рд░реВрд▓реЗ рдорд╛рддреНрд░ рд╕рд░реНрд╡реЗрдХреНрд╖рдгрдорд╛ рднрд╛рдЧ рд▓рд┐рди рд╕рдХреНрдЫрдиреНред рд╕рд╛рдЗрди рдЗрди рдЧрд░реНрдиреБрд╣реЛрд╕реНрдХреГрдкрдпрд╛

рдХреЗ рдпреЛ рдкреЛрд╖реНрдЯрд▓реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ рджреВрдд рдкреНрд░реЛрдХреНрд╕реА рд╕реНрдерд╛рдкрдирд╛ рд░ рдкрд░реАрдХреНрд╖рдг рдЧрд░реНрди рдкреНрд░реЛрддреНрд╕рд╛рд╣рди рджрд┐рдпреЛ?

  • рд╣реЛ

  • рдХреБрдиреИ

75 рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд╣рд░реВрд▓реЗ рдорддрджрд╛рди рдЧрд░реЗред 18 рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд╣рд░реВ рд░реЛрдХрд┐рдПред

рд╕реНрд░реЛрдд: www.habr.com

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдердкреНрди