Nginx рд╕реЗ Envoy Proxy рдХреА рдУрд░ рдкрд▓рд╛рдпрди

рдирдорд╕реНрдХрд╛рд░, рд╣реЗрдмреНрд░! рдореИрдВ рдЖрдкрдХреЗ рдзреНрдпрд╛рди рдореЗрдВ рдкреЛрд╕реНрдЯ рдХрд╛ рдЕрдиреБрд╡рд╛рдж рд▓рд╛рддрд╛ рд╣реВрдВ: Nginx рд╕реЗ Envoy рдкреНрд░реЙрдХреНрд╕реА рдореЗрдВ рдкреНрд░рд╡рд╛рд╕рди ред


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


рд╕рдВрднрд╛рд╡рдирд╛рдПрдВ


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

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


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


рд╕реНрд░реЛрдд nginx config


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. рдкреЛрд░реНрдЯ 8080 рдкрд░ one.example.com рд╣реЛрд╕реНрдЯ рдХреЗ рд▓рд┐рдП рдЕрдиреБрд░реЛрдз рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП NGINX рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдирд╛ред
  3. рдЕрдкрдирд╛ рдЧрдВрддрд╡реНрдп рд╕реНрдерд╛рди рд╕реЗрдЯ рдХрд░рдирд╛, URL рдХреЗ рд╡рд┐рднрд┐рдиреНрди рд╣рд┐рд╕реНрд╕реЛрдВ рдХреЗ рд▓рд┐рдП рдЯреНрд░реИрдлрд╝рд┐рдХ рдХреЛ рдХреИрд╕реЗ рд╕рдВрднрд╛рд▓рдирд╛ рд╣реИред

рд╕рднреА рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди Envoy рдкреНрд░реЙрдХреНрд╕реА рдкрд░ рд▓рд╛рдЧреВ рдирд╣реАрдВ рд╣реЛрдВрдЧреЗ, рдФрд░ рдЖрдкрдХреЛ рдХреБрдЫ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдПрдирд╡реЙрдп рдкреНрд░реЙрдХреНрд╕реА рдореЗрдВ рдЪрд╛рд░ рдкреНрд░рдореБрдЦ рдкреНрд░рдХрд╛рд░ рд╣реИрдВ рдЬреЛ рдПрдирдЬреАрдЖрдИрдПрдирдПрдХреНрд╕ рджреНрд╡рд╛рд░рд╛ рдкреЗрд╢ рдХрд┐рдП рдЧрдП рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪреЗ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВред рдХреЛрд░ рд╣реИ:


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

рд╡рд┐рд╢рд┐рд╖реНрдЯ NGINX рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╕реЗ рдореЗрд▓ рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП Envoy Proxy рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдо рдЗрди рдЪрд╛рд░ рдШрдЯрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред рдПрдирд╡реЙрдп рдХрд╛ рд▓рдХреНрд╖реНрдп рдПрдкреАрдЖрдИ рдФрд░ рдЧрддрд┐рд╢реАрд▓ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдореВрд▓ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди NGINX рд╕реЗ рд╕реНрдерд┐рд░, рд╣рд╛рд░реНрдб-рдХреЛрдбрд┐рдд рдорд╛рдкрджрдВрдбреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧрд╛ред


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


Nginx.conf рдХрд╛ рдкрд╣рд▓рд╛ рднрд╛рдЧ рдХреБрдЫ рдЖрдВрддрд░рд┐рдХ NGINX рдШрдЯрдХреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬрд┐рдиреНрд╣реЗрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред


рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдХрдиреЗрдХреНрд╢рди


рдиреАрдЪреЗ рджрд┐рдпрд╛ рдЧрдпрд╛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХрд╛рд░реНрдп рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдФрд░ рдХрдиреЗрдХреНрд╢рдиреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИред рдпрд╣ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ рдХрд┐ NGINX рдорд╛рдВрдЧ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреИрд╕реЗ рдкреИрдорд╛рдирд╛ рд╣реЛрдЧрд╛ред


 worker_processes 2; events { worker_connections 2000; } 

Envoy рдкреНрд░реЙрдХреНрд╕реА рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рдФрд░ рдХрдиреЗрдХреНрд╢рди рдХреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рддрд░реАрдХреЗ рд╕реЗ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рддрд╛ рд╣реИред


Envoy рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдереНрд░реЗрдб рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рдмрдирд╛рддрд╛ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рд╡рд░реНрдХрд░ рдереНрд░реЗрдб рдПрдХ рдиреЙрди-рдмреНрд▓реЙрдХрд┐рдВрдЧ рдИрд╡реЗрдВрдЯ рд▓реВрдк рдЪрд▓рд╛рддрд╛ рд╣реИ рдЬреЛ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИ


  1. рдкреНрд░рддреНрдпреЗрдХ рд╢реНрд░реЛрддрд╛ рдХреА рдмрд╛рдд рд╕реБрдирдирд╛
  2. рдирдП рдХрдиреЗрдХреНрд╢рди рд╕реНрд╡реАрдХрд╛рд░ рдХрд░реЗрдВ
  3. рдХрдиреЗрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдПрдХ рдлрд╝рд┐рд▓реНрдЯрд░ рд╕реЗрдЯ рдмрдирд╛рдирд╛
  4. рдПрдХ рдХрдиреЗрдХреНрд╢рди рдХреЗ рдЬреАрд╡рдирдХрд╛рд▓ рдореЗрдВ рд╕рднреА I / O рд╕рдВрдЪрд╛рд▓рди рдХреЛ рд╕рдВрднрд╛рд▓рдирд╛ред

рдЖрдЧреЗ рдХреЗ рд╕рднреА рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рдореЗрдВ рд╕рдВрд╕рд╛рдзрд┐рдд рд╣реЛрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ рдХрд┐рд╕реА рднреА рдЕрдЧреНрд░реЗрд╖рдг рд╡реНрдпрд╡рд╣рд╛рд░ рд╢рд╛рдорд┐рд▓ рд╣реИред


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


рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП, Envoy рдкреНрд░реЙрдХреНрд╕реА рдмреНрд▓реЙрдЧ рдкрд░ рдЬрд╛рдПрдБ ред


HTTP рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди


рдирд┐рдореНрди NGINX рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдмреНрд▓реЙрдХ HTTP рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЬреИрд╕реЗ:


  • рдХреНрдпрд╛ рдорд╛рдЗрдо рдкреНрд░рдХрд╛рд░ рд╕рдорд░реНрдерд┐рдд рд╣реИрдВ
  • рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдЯрд╛рдЗрдордЖрдЙрдЯ
  • Gzip рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди

рдЖрдк рдЗрди рдкрд╣рд▓реБрдУрдВ рдХреЛ Envoy рдкреНрд░реЙрдХреНрд╕реА рдореЗрдВ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣рдо рдмрд╛рдж рдореЗрдВ рдЪрд░реНрдЪрд╛ рдХрд░реЗрдВрдЧреЗред


рдЪрд░рдг 3 - рд╕рд░реНрд╡рд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди


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


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

рдПрдирд╡реЙрдп рдХреЗ рдЕрдВрджрд░, рд╢реНрд░реЛрддрд╛ рдЗрд╕реЗ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВред


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


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


рдиреАрдЪреЗ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╕реНрдирд┐рдкреЗрдЯ рдПрдХ рдирдпрд╛ рд╢реНрд░реЛрддрд╛ рдмрдирд╛ рджреЗрдЧрд╛ рдФрд░ рдЗрд╕реЗ 8080 рдкреЛрд░реНрдЯ рдХреЗ рд╕рд╛рде рд╕рдВрдмрджреНрдз рдХрд░ рджреЗрдЧрд╛ред рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдПрдиреНрд╡рд╛рдпреЙрдп рдкреНрд░реЙрдХреНрд╕реА рдХреЛ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдЖрдиреЗ рд╡рд╛рд▓реЗ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдХрд┐рди рдкреЛрд░реНрдЯреНрд╕ рдкрд░ рдмрд╛рдзреНрдп рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред


Envoy рдкреНрд░реЙрдХреНрд╕реА рдЕрдкрдиреЗ рд╡рд┐рдиреНрдпрд╛рд╕ рдХреЗ рд▓рд┐рдП YAML рдЕрдВрдХрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рдЕрдВрдХрди рдХреЗ рд╕рд╛рде рдЦреБрдж рдХреЛ рдкрд░рд┐рдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣рд╛рдВ рд▓рд┐рдВрдХ рджреЗрдЦреЗрдВред


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

рд╕рд░реНрд╡рд░_рдирд╛рдо рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдПрдирд╡реЙрдп рдкреНрд░реЙрдХреНрд╕реА рдлрд┐рд▓реНрдЯрд░ рдЗрд╕реЗ рд╕рдВрднрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВред


рдЪрд░рдг 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 рдкреНрд░реЙрдХреНрд╕реА рдореЗрдВ рдПрдХ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдлрд╝рд┐рд▓реНрдЯрд░ рд╣реИред рдЕрдиреНрдп рдлрд┐рд▓реНрдЯрд░ рдореЗрдВ рд░реЗрдбрд┐рд╕ , рдореЛрдВрдЧреЛ , рдЯреАрд╕реАрдкреА рд╢рд╛рдорд┐рд▓ рд╣реИрдВ ред рдЖрдк рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдВ рдкреВрд░реА рд╕реВрдЪреА рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред


рдЕрдиреНрдп рд▓реЛрдб рд╕рдВрддреБрд▓рди рдиреАрддрд┐рдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП, рджреВрдд рджрд╕реНрддрд╛рд╡реЗрдЬ рдкрд░ рдЬрд╛рдПрдВ ред


рдЪрд░рдг 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 рд╕реЗрд╡рд╛ рдЦреЛрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп , Envoy рдирд┐рд░рдВрддрд░ рдФрд░ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд░реВрдк рд╕реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ DNS рд▓рдХреНрд╖реНрдпреЛрдВ рдХреЛ рд╣рд▓ рдХрд░реЗрдЧрд╛ред DNS рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдкреНрд░рддреНрдпреЗрдХ рд▓реМрдЯреЗ рдЖрдИрдкреА рдкрддреЗ рдХреЛ рдЕрдкрд╕реНрдЯреНрд░реАрдо рдХреНрд▓рд╕реНрдЯрд░ рдореЗрдВ рдПрдХ рд╕реНрдкрд╖реНрдЯ рд╣реЛрд╕реНрдЯ рдорд╛рдирд╛ рдЬрд╛рдПрдЧрд╛ред рдЗрд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдпрджрд┐ рдЕрдиреБрд░реЛрдз рджреЛ рдЖрдИрдкреА рдкрддреЗ рд▓реМрдЯрд╛рддрд╛ рд╣реИ, рддреЛ рджреВрдд рдпрд╣ рдорд╛рди рд▓реЗрдЧрд╛ рдХрд┐ рдХреНрд▓рд╕реНрдЯрд░ рдореЗрдВ рджреЛ рдореЗрдЬрдмрд╛рди рд╣реИрдВ, рдФрд░ рджреЛрдиреЛрдВ рдХреЛ рд╕рдВрддреБрд▓рд┐рдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрджрд┐ рд╣реЛрд╕реНрдЯ рдХреЛ рдкрд░рд┐рдгрд╛рдо рд╕реЗ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ Envoy рдорд╛рдирддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЕрдм рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИ рдФрд░ рдХрд┐рд╕реА рднреА рдореМрдЬреВрджрд╛ рдХрдиреЗрдХреНрд╢рди рдкреВрд▓ рд╕реЗ рдЯреНрд░реИрдлрд╝рд┐рдХ рдХрд╛ рдЪрдпрди рдХрд░реЗрдЧрд╛ред


рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП, рдПрдирд╡реЙрдп рдкреНрд░реЙрдХреНрд╕реА рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рджреЗрдЦреЗрдВред


рдЪрд░рдг 6 - рдкреНрд░рд╡реЗрд╢ рдкреНрд░рд╡реЗрд╢ рдФрд░ рддреНрд░реБрдЯрд┐рдпрд╛рдВ


рдЕрдВрддрд┐рдо рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдкрдВрдЬреАрдХрд░рдг рд╣реИред рддреНрд░реБрдЯрд┐ рд▓реЙрдЧ рдХреЛ рдбрд┐рд╕реНрдХ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдПрдирд╡реЙрдп рдкреНрд░реЙрдХреНрд╕реА рдПрдХ рдХреНрд▓рд╛рдЙрдб-рдЖрдзрд╛рд░рд┐рдд рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рд╕рднреА рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд▓реЙрдЧ stdout рдФрд░ stderr рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред


рдЬрдм рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдкреНрд░рд╡реЗрд╢ рд▓реЙрдЧ рд╡реИрдХрд▓реНрдкрд┐рдХ рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЕрдХреНрд╖рдо рд╣реЛрддреЗ рд╣реИрдВред HTTP рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╡реЗрд╢ рд▓реЙрдЧ рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, HTTP рдХрдиреЗрдХреНрд╢рди рдкреНрд░рдмрдВрдзрдХ рдХреЗ рд▓рд┐рдП access_log рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рд╕рдХреНрд╖рдо рдХрд░реЗрдВред рдкрде рдпрд╛ рддреЛ рдбрд┐рд╡рд╛рдЗрд╕ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ рд╕реНрдЯрдбрдЖрдЙрдЯ , рдпрд╛ рдбрд┐рд╕реНрдХ рдкрд░ рдПрдХ рдлрд╝рд╛рдЗрд▓, рдЖрдкрдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ред


рдирд┐рдореНрди рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╕рднреА рдПрдХреНрд╕реЗрд╕ рд▓реЙрдЧ рдХреЛ stdout рдореЗрдВ рдмрджрд▓ рджреЗрдЧрд╛ (рдЕрдиреБрд╡рд╛рджрдХ рдХрд╛ рдиреЛрдЯ - stdout, docker рдХреЗ рдЕрдВрджрд░ env рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдпрджрд┐ рдЖрдк docker рдХреЗ рдмрд┐рдирд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ / 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: 

рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, Envoy рдореЗрдВ рдПрдХ рдкреНрд░рд╛рд░реВрдк рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╣реИ рдЬрд┐рд╕рдореЗрдВ 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_format рдлрд╝реАрд▓реНрдб рд╕реЗрдЯ рдХрд░рдХреЗ JSON рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рд▓реЙрдЧ рд╕реНрдЯреНрд░рд┐рдВрдЧ рднреА рдЖрдЙрдЯрдкреБрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:


 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


рд▓реЙрдЧ рдХрд░рдирд╛ рдХреЗрд╡рд▓ рдПрдиреНрд╡реЙрдп рдкреНрд░реЙрдХреНрд╕реА рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рд╡рд┐рдЪрд╛рд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдПрдХрдорд╛рддреНрд░ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИред рдЗрд╕рдореЗрдВ рдЯреНрд░реЗрд╕рд┐рдВрдЧ рдФрд░ рдореЗрдЯреНрд░рд┐рдХреНрд╕ рдХреЗ рд▓рд┐рдП рдмрд┐рд▓реНрдЯ-рдЗрди рдПрдбрд╡рд╛рдВрд╕ рдлреАрдЪрд░реНрд╕ рд╣реИрдВред рдЖрдк рдЯреНрд░реЗрд╕рд┐рдВрдЧ рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рдпрд╛ рдЗрдВрдЯрд░рдПрдХреНрдЯрд┐рд╡ рдЯреНрд░реЗрд╕рд┐рдВрдЧ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдФрд░ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред


рдЪрд░рдг 7 - рд▓реЙрдиреНрдЪ


рдЕрдм рдЖрдкрдиреЗ рдПрдирдЬреАрдЖрдИрдПрдирдПрдХреНрд╕ рд╕реЗ рдПрдирд╡реЙрдп рдкреНрд░реЙрдХреНрд╕реА рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рджрд┐рдпрд╛ рд╣реИред рдЕрдВрддрд┐рдо рдЪрд░рдг рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдирд╡реЙрдп рдкреНрд░реЙрдХреНрд╕реА рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдЪрд▓рд╛рдирд╛ рд╣реИред


рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реЗ рдЪрд▓рд╛рдПрдБ


NGINX рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рд╢реАрд░реНрд╖ рдкрд░, рд▓рд╛рдЗрди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ www www; рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ NGINX рдХреЛ рд╕реБрд░рдХреНрд╖рд╛ рдмрдврд╝рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдо рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░ рд╡рд╛рд▓реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред


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


Envoy рдкреНрд░реЙрдХреНрд╕реА рд▓реЙрдиреНрдЪ рдХрд░реЗрдВ


рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдЖрджреЗрд╢ рд╣реЛрд╕реНрдЯ рдкрд░ рдбреЙрдХ рдХрдВрдЯреЗрдирд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдирд╡реЙрдп рдкреНрд░реЙрдХреНрд╕реА рдХреЛ рд▓реЙрдиреНрдЪ рдХрд░реЗрдВрдЧреЗред рдпрд╣ рдХрдорд╛рдВрдб Envoy рдХреЛ рдкреЛрд░реНрдЯ 80 рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЖрдиреЗ рд╡рд╛рд▓реЗ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рд╕реБрдирдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЬреИрд╕рд╛ рдХрд┐ рд╢реНрд░реЛрддрд╛ рд╡рд┐рдиреНрдпрд╛рд╕ рдореЗрдВ рд╕рдВрдХреЗрдд рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, Envoy Proxy рдЖрдиреЗ рд╡рд╛рд▓реЗ рдЯреНрд░реИрдлрд┐рдХ рдХреЛ рдкреЛрд░реНрдЯ 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 рд╣реЛрдЧреА ред рдпрд╣ рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдЕрдкрд╕реНрдЯреНрд░реАрдо рдХрдиреЗрдХреНрд╢рди рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд╡реЗ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИрдВред рдЗрд╕ рдкреНрд░рдХрд╛рд░, Envoy рдкреНрд░реЙрдХреНрд╕реА рдХреЗ рдкрд╛рд╕ рдЕрдиреБрд░реЛрдз рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдЙрдкрд▓рдмреНрдз рд▓рдХреНрд╖реНрдп рдЧрдВрддрд╡реНрдп рдирд╣реАрдВ рд╣реИред рдирд┐рдореНрди рдЖрджреЗрд╢ HTTP рд╕реЗрд╡рд╛рдУрдВ рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рд▓реЙрдиреНрдЪ рдХрд░реЗрдЧрд╛ рдЬреЛ рдПрдирд╡реЙрдп рдХреЗ рд▓рд┐рдП рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╕реЗ рдореЗрд▓ рдЦрд╛рддреЗ рд╣реИрдВред


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

рдЙрдкрд▓рдмреНрдз рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рд╕рд╛рде, Envoy рдЕрдкрдиреЗ рдЧрдВрддрд╡реНрдп рдХреЗ рд▓рд┐рдП рдпрд╛рддрд╛рдпрд╛рдд рдХреЛ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдкреНрд░реЙрдХреНрд╕реА рдХрд░ рд╕рдХрддрд╛ рд╣реИред


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

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


рдЕрддрд┐рд░рд┐рдХреНрдд 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 } 

рдЕрдиреБрд╡рд╛рджрдХ рд╕реЗ рдЕрддрд┐рд░рд┐рдХреНрдд рдЬрд╛рдирдХрд╛рд░реА


Envoy рдкреНрд░реЙрдХреНрд╕реА рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдирд┐рд░реНрджреЗрд╢ https://www.getenvoy.io/ рдкрд░ рджреЗрдЦреЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ


рдЖрд░рдкреАрдПрдо рдореЗрдВ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдХреЛрдИ рд╕рд┐рд╕реНрдЯрдордб рд╕рд░реНрд╡рд┐рд╕ рдХреЙрдиреНрдлрд┐рдЧрд░ рдирд╣реАрдВ рд╣реИред


Systemd service config /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 config рдХреЛ рд╡рд╣рд╛рдВ рд░рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред


Envoy рдкреНрд░реЙрдХреНрд╕реА рджреНрд╡рд╛рд░рд╛ рдПрдХ рдЯреЗрд▓реАрдЧреНрд░рд╛рдо рдЪреИрдЯ рд╣реЛрддреА рд╣реИ: https://t.me/envoyproxy_ru


Envoy рдкреНрд░реЙрдХреНрд╕реА рд╕реНрдерд┐рд░ рд╕рд╛рдордЧреНрд░реА рд╡рд┐рддрд░рдг рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рддреЛ рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП рдХреМрди рд╡реЛрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реИ: https://github.com/envoyproxy/envoy/issues/378

Source: https://habr.com/ru/post/hi469455/


All Articles