แƒ›แƒ˜แƒ’แƒ แƒแƒชแƒ˜แƒ Nginx-แƒ“แƒแƒœ Envoy Proxy-แƒจแƒ˜

แƒ’แƒแƒ›แƒแƒ แƒฏแƒแƒ‘แƒ, แƒฐแƒแƒ‘แƒ ! แƒ—แƒฅแƒ•แƒ”แƒœแƒก แƒงแƒฃแƒ แƒแƒ“แƒฆแƒ”แƒ‘แƒแƒก แƒ•แƒแƒฅแƒชแƒ”แƒ• แƒžแƒแƒกแƒขแƒ˜แƒก แƒ—แƒแƒ แƒ’แƒ›แƒแƒœแƒก: แƒ›แƒ˜แƒ’แƒ แƒแƒชแƒ˜แƒ Nginx-แƒ“แƒแƒœ Envoy Proxy-แƒจแƒ˜.

Envoy แƒแƒ แƒ˜แƒก แƒ›แƒแƒฆแƒแƒšแƒ˜ แƒฎแƒแƒ แƒ˜แƒกแƒฎแƒ˜แƒก แƒ’แƒแƒœแƒแƒฌแƒ˜แƒšแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒžแƒ แƒแƒฅแƒกแƒ˜ แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜ (แƒ“แƒแƒฌแƒ”แƒ แƒ˜แƒšแƒ˜ C++), แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒจแƒ”แƒฅแƒ›แƒœแƒ˜แƒšแƒ˜แƒ แƒ˜แƒœแƒ“แƒ˜แƒ•แƒ˜แƒ“แƒฃแƒแƒšแƒฃแƒ แƒ˜ แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ”แƒ‘แƒ˜แƒกแƒ แƒ“แƒ แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก, แƒ˜แƒก แƒแƒกแƒ”แƒ•แƒ” แƒแƒ แƒ˜แƒก แƒกแƒแƒ™แƒแƒ›แƒฃแƒœแƒ˜แƒ™แƒแƒชแƒ˜แƒ แƒแƒ•แƒขแƒแƒ‘แƒฃแƒกแƒ˜ แƒ“แƒ โ€žแƒฃแƒœแƒ˜แƒ•แƒ”แƒ แƒกแƒแƒšแƒฃแƒ แƒ˜ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ—แƒ•แƒ˜แƒ—แƒ›แƒคแƒ แƒ˜แƒœแƒแƒ•แƒ˜โ€œ, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒจแƒ”แƒฅแƒ›แƒœแƒ˜แƒšแƒ˜แƒ แƒ“แƒ˜แƒ“แƒ˜ แƒ›แƒ˜แƒ™แƒ แƒแƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ˜แƒก โ€žแƒ›แƒแƒ›แƒกแƒแƒฎแƒฃแƒ แƒ”แƒ‘แƒ˜แƒก แƒฅแƒกแƒ”แƒšแƒ˜แƒกโ€œ แƒแƒ แƒฅแƒ˜แƒขแƒ”แƒฅแƒขแƒฃแƒ แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก. แƒ›แƒ˜แƒกแƒ˜ แƒจแƒ”แƒฅแƒ›แƒœแƒ˜แƒกแƒแƒก แƒ›แƒฎแƒ”แƒ“แƒ•แƒ”แƒšแƒแƒ‘แƒแƒจแƒ˜ แƒ›แƒ˜แƒ˜แƒฆแƒ”แƒก แƒžแƒ แƒแƒ‘แƒšแƒ”แƒ›แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ“แƒแƒฌแƒงแƒ•แƒ”แƒขแƒ˜แƒšแƒ”แƒ‘แƒ”แƒ‘แƒ˜, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒ˜แƒช แƒฌแƒแƒ แƒ›แƒแƒ˜แƒจแƒ•แƒ แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒœแƒ•แƒ˜แƒ—แƒแƒ แƒ”แƒ‘แƒ˜แƒก แƒ“แƒ แƒแƒก, แƒ แƒแƒ’แƒแƒ แƒ˜แƒชแƒแƒ NGINX, HAProxy, แƒขแƒ”แƒฅแƒœแƒ˜แƒ™แƒ˜แƒก แƒ“แƒแƒขแƒ•แƒ˜แƒ แƒ—แƒ•แƒ˜แƒก แƒ‘แƒแƒšแƒแƒœแƒกแƒ”แƒ แƒ”แƒ‘แƒ˜ แƒ“แƒ แƒฆแƒ แƒฃแƒ‘แƒšแƒแƒ•แƒแƒœแƒ˜ แƒ“แƒแƒขแƒ•แƒ˜แƒ แƒ—แƒ•แƒ˜แƒก แƒ‘แƒแƒšแƒแƒœแƒกแƒ”แƒ แƒ”แƒ‘แƒ˜. Envoy แƒ›แƒฃแƒจแƒแƒแƒ‘แƒก แƒ—แƒ˜แƒ—แƒแƒ”แƒฃแƒš แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒแƒกแƒ—แƒแƒœ แƒ”แƒ แƒ—แƒแƒ“ แƒ“แƒ แƒแƒ‘แƒกแƒขแƒ แƒแƒฅแƒขแƒ”แƒ‘แƒก แƒฅแƒกแƒ”แƒšแƒก, แƒ แƒแƒ—แƒ แƒฃแƒ–แƒ แƒฃแƒœแƒ•แƒ”แƒšแƒงแƒแƒก แƒกแƒแƒ”แƒ แƒ—แƒ แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒแƒœแƒ˜แƒ แƒ”แƒ‘แƒ แƒžแƒšแƒแƒขแƒคแƒแƒ แƒ›แƒ˜แƒก แƒ›แƒ˜แƒฃแƒฎแƒ”แƒ“แƒแƒ•แƒแƒ“. แƒ แƒแƒ“แƒ”แƒกแƒแƒช แƒ˜แƒœแƒคแƒ แƒแƒกแƒขแƒ แƒฃแƒฅแƒขแƒฃแƒ แƒ˜แƒก แƒ›แƒ—แƒ”แƒšแƒ˜ แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ˜แƒก แƒขแƒ แƒแƒคแƒ˜แƒ™แƒ˜ แƒ›แƒ˜แƒ”แƒ“แƒ˜แƒœแƒ”แƒ‘แƒ Envoy mesh-แƒจแƒ˜, แƒแƒ“แƒ•แƒ˜แƒšแƒ˜ แƒฎแƒ“แƒ”แƒ‘แƒ แƒžแƒ แƒแƒ‘แƒšแƒ”แƒ›แƒฃแƒ แƒ˜ แƒขแƒ”แƒ แƒ˜แƒขแƒแƒ แƒ˜แƒ”แƒ‘แƒ˜แƒก แƒ•แƒ˜แƒ–แƒฃแƒแƒšแƒ˜แƒ–แƒแƒชแƒ˜แƒ แƒ—แƒแƒœแƒ›แƒ˜แƒ›แƒ“แƒ”แƒ•แƒ แƒฃแƒšแƒ˜ แƒ“แƒแƒ™แƒ•แƒ˜แƒ แƒ•แƒ”แƒ‘แƒ˜แƒ—, แƒ“แƒแƒแƒ แƒ”แƒ’แƒฃแƒšแƒ˜แƒ แƒแƒ— แƒกแƒแƒ”แƒ แƒ—แƒ แƒจแƒ”แƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒ แƒ“แƒ แƒ“แƒแƒ”แƒ›แƒแƒขแƒแƒก แƒซแƒ˜แƒ แƒ˜แƒ—แƒแƒ“แƒ˜ แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒ”แƒ‘แƒ˜ แƒ™แƒแƒœแƒ™แƒ แƒ”แƒขแƒฃแƒš แƒแƒ“แƒ’แƒ˜แƒšแƒแƒก.

แƒจแƒ”แƒกแƒแƒซแƒšแƒ”แƒ‘แƒšแƒแƒ‘แƒ”แƒ‘แƒ˜

  • แƒžแƒ แƒแƒชแƒ”แƒกแƒ˜แƒก แƒ’แƒแƒ แƒ”แƒจแƒ” แƒแƒ แƒฅแƒ˜แƒขแƒ”แƒฅแƒขแƒฃแƒ แƒ: envoy แƒแƒ แƒ˜แƒก แƒ“แƒแƒ›แƒแƒฃแƒ™แƒ˜แƒ“แƒ”แƒ‘แƒ”แƒšแƒ˜, แƒ›แƒแƒฆแƒแƒšแƒ˜ แƒฎแƒแƒ แƒ˜แƒกแƒฎแƒ˜แƒก แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ˜แƒ™แƒแƒ•แƒ”แƒ‘แƒก RAM-แƒ˜แƒก แƒ›แƒชแƒ˜แƒ แƒ” แƒ แƒแƒแƒ“แƒ”แƒœแƒแƒ‘แƒแƒก. แƒ˜แƒก แƒ›แƒฃแƒจแƒแƒแƒ‘แƒก แƒœแƒ”แƒ‘แƒ˜แƒกแƒ›แƒ˜แƒ”แƒ  แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ˜แƒก แƒ”แƒœแƒแƒกแƒ—แƒแƒœ แƒแƒœ แƒฉแƒแƒ แƒฉแƒแƒกแƒ—แƒแƒœ แƒ”แƒ แƒ—แƒแƒ“.
  • http/2 แƒ“แƒ grpc แƒ›แƒฎแƒแƒ แƒ“แƒแƒญแƒ”แƒ แƒ: envoy-แƒก แƒแƒฅแƒ•แƒก แƒžแƒ˜แƒ แƒ•แƒ”แƒšแƒ˜ แƒ™แƒšแƒแƒกแƒ˜แƒก http/2 แƒ“แƒ grpc แƒ›แƒฎแƒแƒ แƒ“แƒแƒญแƒ”แƒ แƒ แƒจแƒ”แƒ›แƒแƒ›แƒแƒ•แƒแƒšแƒ˜ แƒ“แƒ แƒ’แƒแƒ›แƒแƒ•แƒแƒšแƒ˜ แƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก. แƒ”แƒก แƒแƒ แƒ˜แƒก แƒ’แƒแƒ›แƒญแƒ•แƒ˜แƒ แƒ•แƒแƒšแƒ” แƒžแƒ แƒแƒฅแƒกแƒ˜ http/1.1-แƒ“แƒแƒœ http/2-แƒ›แƒ“แƒ”.
  • แƒ’แƒแƒคแƒแƒ แƒ—แƒแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ“แƒแƒขแƒ•แƒ˜แƒ แƒ—แƒ•แƒ˜แƒก แƒ‘แƒแƒšแƒแƒœแƒกแƒ˜แƒ แƒ”แƒ‘แƒ: envoy แƒ›แƒฎแƒแƒ แƒก แƒฃแƒญแƒ”แƒ แƒก แƒ“แƒแƒขแƒ•แƒ˜แƒ แƒ—แƒ•แƒ˜แƒก แƒ“แƒแƒ‘แƒแƒšแƒแƒœแƒกแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒคแƒแƒ แƒ—แƒแƒ”แƒ‘แƒฃแƒš แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒ”แƒ‘แƒก, แƒ›แƒแƒ— แƒจแƒแƒ แƒ˜แƒก แƒแƒ•แƒขแƒแƒ›แƒแƒขแƒฃแƒ แƒ˜ แƒ’แƒแƒœแƒ›แƒ”แƒแƒ แƒ”แƒ‘แƒ˜แƒ—แƒ˜ แƒชแƒ“แƒ”แƒ‘แƒ˜แƒก, แƒฏแƒแƒญแƒ•แƒ˜แƒก แƒ’แƒแƒฌแƒงแƒ•แƒ”แƒขแƒ˜แƒก, แƒ’แƒšแƒแƒ‘แƒแƒšแƒฃแƒ แƒ˜ แƒกแƒ˜แƒฉแƒฅแƒแƒ แƒ˜แƒก แƒจแƒ”แƒ–แƒฆแƒฃแƒ“แƒ•แƒ˜แƒก, แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ˜แƒก แƒ“แƒแƒฉแƒ แƒ“แƒ˜แƒšแƒ•แƒ˜แƒก, แƒšแƒแƒ™แƒแƒšแƒฃแƒ แƒ˜ แƒ–แƒแƒœแƒ˜แƒก แƒ“แƒแƒขแƒ•แƒ˜แƒ แƒ—แƒ•แƒ˜แƒก แƒ“แƒแƒ‘แƒแƒšแƒแƒœแƒกแƒ”แƒ‘แƒแƒก แƒ“แƒ แƒ.แƒจ.
  • แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ˜แƒก แƒ›แƒแƒ แƒ—แƒ•แƒ˜แƒก API: envoy แƒฃแƒ–แƒ แƒฃแƒœแƒ•แƒ”แƒšแƒงแƒแƒคแƒก แƒ›แƒซแƒšแƒแƒ•แƒ  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-แƒ–แƒ” แƒ“แƒ แƒ—แƒฅแƒ•แƒ”แƒœ แƒแƒ  แƒ’แƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒแƒ— แƒ–แƒแƒ’แƒ˜แƒ”แƒ แƒ—แƒ˜ แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ˜แƒก แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ. Envoy Proxy-แƒก แƒแƒฅแƒ•แƒก แƒแƒ—แƒฎแƒ˜ แƒซแƒ˜แƒ แƒ˜แƒ—แƒแƒ“แƒ˜ แƒขแƒ˜แƒžแƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ›แƒฎแƒแƒ แƒก แƒฃแƒญแƒ”แƒ แƒก NGINX-แƒ˜แƒก แƒ›แƒ˜แƒ”แƒ  แƒจแƒ”แƒ›แƒแƒ—แƒแƒ•แƒแƒ–แƒ”แƒ‘แƒฃแƒš แƒซแƒ˜แƒ แƒ˜แƒ—แƒแƒ“ แƒ˜แƒœแƒคแƒ แƒแƒกแƒขแƒ แƒฃแƒฅแƒขแƒฃแƒ แƒแƒก. แƒ‘แƒ˜แƒ แƒ—แƒ•แƒ˜ แƒแƒ แƒ˜แƒก:

  • แƒ›แƒกแƒ›แƒ”แƒœแƒ”แƒšแƒ”แƒ‘แƒ˜: แƒ˜แƒกแƒ˜แƒœแƒ˜ แƒ’แƒแƒœแƒกแƒแƒ–แƒฆแƒ•แƒ แƒแƒ•แƒ”แƒœ, แƒ—แƒฃ แƒ แƒแƒ’แƒแƒ  แƒ˜แƒฆแƒ”แƒ‘แƒก Envoy Proxy แƒจแƒ”แƒ›แƒแƒกแƒฃแƒš แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ”แƒ‘แƒก. Envoy Proxy แƒแƒ›แƒŸแƒแƒ›แƒแƒ“ แƒ›แƒฎแƒแƒ แƒก แƒฃแƒญแƒ”แƒ แƒก แƒ›แƒฎแƒแƒšแƒแƒ“ TCP-แƒ–แƒ” แƒ“แƒแƒคแƒฃแƒซแƒœแƒ”แƒ‘แƒฃแƒš แƒ›แƒกแƒ›แƒ”แƒœแƒ”แƒšแƒก. แƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ˜แƒก แƒ“แƒแƒ›แƒงแƒแƒ แƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’, แƒ˜แƒ’แƒ˜ แƒ’แƒแƒ“แƒแƒ”แƒชแƒ”แƒ›แƒ แƒคแƒ˜แƒšแƒขแƒ แƒ”แƒ‘แƒ˜แƒก แƒ™แƒแƒ›แƒžแƒšแƒ”แƒฅแƒขแƒก แƒ“แƒแƒกแƒแƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒšแƒแƒ“.
  • แƒคแƒ˜แƒšแƒขแƒ แƒ”แƒ‘แƒ˜: แƒ˜แƒกแƒ˜แƒœแƒ˜ แƒ›แƒ˜แƒšแƒกแƒแƒ“แƒ”แƒœแƒ˜แƒก แƒแƒ แƒฅแƒ˜แƒขแƒ”แƒฅแƒขแƒฃแƒ แƒ˜แƒก แƒœแƒแƒฌแƒ˜แƒšแƒ˜แƒ, แƒ แƒแƒ›แƒ”แƒšแƒกแƒแƒช แƒจแƒ”แƒฃแƒซแƒšแƒ˜แƒ แƒจแƒ”แƒ›แƒแƒ›แƒแƒ•แƒแƒšแƒ˜ แƒ“แƒ แƒ’แƒแƒ›แƒแƒ•แƒแƒšแƒ˜ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜แƒก แƒ“แƒแƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒ. แƒ”แƒก แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒ แƒ›แƒแƒ˜แƒชแƒแƒ•แƒก แƒคแƒ˜แƒšแƒขแƒ แƒ”แƒ‘แƒก, แƒ แƒแƒ’แƒแƒ แƒ˜แƒชแƒแƒ Gzip, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒจแƒ”แƒ™แƒฃแƒ›แƒจแƒแƒ•แƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒก แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒ’แƒแƒ’แƒ–แƒแƒ•แƒœแƒแƒ›แƒ“แƒ”.
  • แƒ›แƒแƒ แƒจแƒ แƒฃแƒขแƒ˜แƒ–แƒแƒขแƒแƒ แƒ”แƒ‘แƒ˜: แƒ˜แƒกแƒ˜แƒœแƒ˜ แƒแƒ’แƒ–แƒแƒ•แƒœแƒ˜แƒแƒœ แƒขแƒ แƒแƒคแƒ˜แƒ™แƒก แƒกแƒแƒญแƒ˜แƒ แƒ แƒ“แƒแƒœแƒ˜แƒจแƒœแƒฃแƒšแƒ”แƒ‘แƒ˜แƒก แƒแƒ“แƒ’แƒ˜แƒšแƒแƒ›แƒ“แƒ”, แƒ’แƒแƒœแƒกแƒแƒ–แƒฆแƒ•แƒ แƒฃแƒšแƒ˜ แƒ แƒแƒ’แƒแƒ แƒช แƒ™แƒšแƒแƒกแƒขแƒ”แƒ แƒ˜.
  • แƒ™แƒšแƒแƒกแƒขแƒ”แƒ แƒ”แƒ‘แƒ˜: แƒ˜แƒกแƒ˜แƒœแƒ˜ แƒ’แƒแƒœแƒกแƒแƒ–แƒฆแƒ•แƒ แƒแƒ•แƒ”แƒœ แƒกแƒแƒ‘แƒแƒšแƒแƒ แƒฌแƒ”แƒ แƒขแƒ˜แƒšแƒก แƒขแƒ แƒแƒคแƒ˜แƒ™แƒ˜แƒกแƒ แƒ“แƒ แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ˜แƒก แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก.

แƒฉแƒ•แƒ”แƒœ แƒ’แƒแƒ›แƒแƒ•แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ— แƒแƒ› แƒแƒ—แƒฎ แƒ™แƒแƒ›แƒžแƒแƒœแƒ”แƒœแƒขแƒก Envoy Proxy-แƒ˜แƒก แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ˜แƒก แƒจแƒ”แƒกแƒแƒฅแƒ›แƒœแƒ”แƒšแƒแƒ“, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒจแƒ”แƒ”แƒกแƒแƒ‘แƒแƒ›แƒ”แƒ‘แƒ แƒ™แƒแƒœแƒ™แƒ แƒ”แƒขแƒฃแƒš NGINX แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒแƒก. Envoy-แƒ˜แƒก แƒ›แƒ˜แƒ–แƒแƒœแƒ˜แƒ API-แƒ”แƒ‘แƒ—แƒแƒœ แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ แƒ“แƒ แƒ“แƒ˜แƒœแƒแƒ›แƒ˜แƒฃแƒ แƒ˜ แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ. แƒแƒ› แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒแƒจแƒ˜, แƒกแƒแƒ‘แƒแƒ–แƒ˜แƒกแƒ แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒก แƒกแƒขแƒแƒขแƒ˜แƒ™แƒฃแƒ แƒ˜, แƒ›แƒงแƒแƒ แƒ˜ แƒ™แƒแƒ“แƒ˜แƒ แƒ”แƒ‘แƒฃแƒš แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ”แƒ‘แƒก NGINX-แƒ˜แƒกแƒ’แƒแƒœ.

แƒœแƒแƒ‘แƒ˜แƒฏแƒ˜ 2 - NGINX แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ

แƒžแƒ˜แƒ แƒ•แƒ”แƒšแƒ˜ แƒœแƒแƒฌแƒ˜แƒšแƒ˜ nginx.conf แƒ’แƒแƒœแƒกแƒแƒ–แƒฆแƒ•แƒ แƒแƒ•แƒก แƒ–แƒแƒ’แƒ˜แƒ”แƒ แƒ— NGINX แƒ˜แƒœแƒขแƒ”แƒ แƒ˜แƒ”แƒ แƒก, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒกแƒแƒญแƒ˜แƒ แƒแƒ”แƒ‘แƒก แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒแƒก.

แƒ›แƒฃแƒจแƒแƒ—แƒ แƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ”แƒ‘แƒ˜

แƒฅแƒ•แƒ”แƒ›แƒแƒ— แƒ›แƒแƒชแƒ”แƒ›แƒฃแƒšแƒ˜ แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ แƒ’แƒแƒœแƒกแƒแƒ–แƒฆแƒ•แƒ แƒแƒ•แƒก แƒ›แƒฃแƒจแƒแƒ—แƒ แƒžแƒ แƒแƒชแƒ”แƒกแƒ”แƒ‘แƒ˜แƒกแƒ แƒ“แƒ แƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ”แƒ‘แƒ˜แƒก แƒ แƒแƒแƒ“แƒ”แƒœแƒแƒ‘แƒแƒก. แƒ”แƒก แƒ›แƒ˜แƒฃแƒ—แƒ˜แƒ—แƒ”แƒ‘แƒก แƒ˜แƒ›แƒแƒ–แƒ”, แƒ—แƒฃ แƒ แƒแƒ’แƒแƒ  แƒ’แƒแƒ˜แƒ–แƒ แƒ“แƒ”แƒ‘แƒ NGINX แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ˜แƒก แƒ“แƒแƒกแƒแƒ™แƒ›แƒแƒงแƒแƒคแƒ˜แƒšแƒ”แƒ‘แƒšแƒแƒ“.

worker_processes  2;

events {
  worker_connections   2000;
}

Envoy Proxy แƒ›แƒแƒ แƒ—แƒแƒ•แƒก แƒกแƒแƒ›แƒฃแƒจแƒแƒ แƒžแƒ แƒแƒชแƒ”แƒกแƒ”แƒ‘แƒกแƒ แƒ“แƒ แƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ”แƒ‘แƒก แƒกแƒฎแƒ•แƒแƒ“แƒแƒกแƒฎแƒ•แƒ แƒ’แƒ–แƒ˜แƒ—.

Envoy แƒฅแƒ›แƒœแƒ˜แƒก แƒ›แƒฃแƒจแƒ แƒซแƒแƒคแƒก แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ˜แƒก แƒ—แƒ˜แƒ—แƒแƒ”แƒฃแƒšแƒ˜ แƒขแƒ”แƒฅแƒœแƒ˜แƒ™แƒ˜แƒก แƒซแƒแƒคแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก. แƒ—แƒ˜แƒ—แƒแƒ”แƒฃแƒšแƒ˜ แƒ›แƒฃแƒจแƒ แƒ—แƒ”แƒ›แƒ แƒแƒฎแƒแƒ แƒชแƒ˜แƒ”แƒšแƒ”แƒ‘แƒก แƒแƒ แƒแƒ“แƒแƒ‘แƒšแƒแƒ™แƒ•แƒ˜แƒก แƒฆแƒแƒœแƒ˜แƒกแƒซแƒ˜แƒ”แƒ‘แƒ˜แƒก แƒชแƒ˜แƒ™แƒšแƒก, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒžแƒแƒกแƒฃแƒฎแƒ˜แƒกแƒ›แƒ’แƒ”แƒ‘แƒ”แƒšแƒ˜แƒ

  1. แƒ—แƒ˜แƒ—แƒแƒ”แƒฃแƒšแƒ˜ แƒ›แƒกแƒ›แƒ”แƒœแƒ”แƒšแƒ˜แƒก แƒ›แƒแƒกแƒ›แƒ”แƒœแƒ
  2. แƒแƒฎแƒแƒšแƒ˜ แƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ”แƒ‘แƒ˜แƒก แƒ›แƒ˜แƒฆแƒ”แƒ‘แƒ
  3. แƒคแƒ˜แƒšแƒขแƒ แƒ”แƒ‘แƒ˜แƒก แƒœแƒแƒ™แƒ แƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒฅแƒ›แƒœแƒ แƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก
  4. แƒ“แƒแƒแƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ— แƒงแƒ•แƒ”แƒšแƒ I/O แƒแƒžแƒ”แƒ แƒแƒชแƒ˜แƒ แƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ˜แƒก แƒ›แƒ—แƒ”แƒšแƒ˜ แƒžแƒ”แƒ แƒ˜แƒแƒ“แƒ˜แƒก แƒ’แƒแƒœแƒ›แƒแƒ•แƒšแƒแƒ‘แƒแƒจแƒ˜.

แƒงแƒ•แƒ”แƒšแƒ แƒจแƒ”แƒ›แƒ“แƒ’แƒแƒ›แƒ˜ แƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ˜แƒก แƒ“แƒแƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒ แƒ›แƒ—แƒšแƒ˜แƒแƒœแƒแƒ“ แƒ›แƒฃแƒจแƒแƒ•แƒ“แƒ”แƒ‘แƒ แƒ›แƒฃแƒจแƒ แƒซแƒแƒคแƒจแƒ˜, แƒœแƒ”แƒ‘แƒ˜แƒกแƒ›แƒ˜แƒ”แƒ แƒ˜ แƒ’แƒแƒ“แƒแƒ›แƒ˜แƒกแƒแƒ›แƒแƒ แƒ—แƒ”แƒ‘แƒ˜แƒก แƒฅแƒชแƒ”แƒ•แƒ˜แƒก แƒฉแƒแƒ—แƒ•แƒšแƒ˜แƒ—.

Envoy-แƒจแƒ˜ แƒ—แƒ˜แƒ—แƒแƒ”แƒฃแƒšแƒ˜ แƒ›แƒฃแƒจแƒ แƒซแƒแƒคแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒแƒ แƒ˜แƒก แƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ˜แƒก แƒแƒฃแƒ–แƒ˜. แƒแƒกแƒ” แƒ แƒแƒ›, HTTP/2 แƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ˜แƒก แƒแƒฃแƒ–แƒ˜ แƒแƒ›แƒงแƒแƒ แƒ”แƒ‘แƒก แƒ›แƒฎแƒแƒšแƒแƒ“ แƒ”แƒ แƒ— แƒ™แƒแƒ•แƒจแƒ˜แƒ แƒก แƒ’แƒแƒ แƒ” แƒฐแƒแƒกแƒขแƒ–แƒ” แƒ”แƒ แƒ—แƒ“แƒ แƒแƒฃแƒšแƒแƒ“, แƒ—แƒฃ แƒแƒ—แƒฎแƒ˜ แƒ›แƒฃแƒจแƒ แƒ—แƒ”แƒ›แƒ แƒ˜แƒฅแƒœแƒ”แƒ‘แƒ, แƒ˜แƒฅแƒœแƒ”แƒ‘แƒ แƒแƒ—แƒฎแƒ˜ HTTP/2 แƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ˜ แƒ—แƒ˜แƒ—แƒ แƒ’แƒแƒ แƒ” แƒฐแƒแƒกแƒขแƒ–แƒ” แƒกแƒขแƒแƒ‘แƒ˜แƒšแƒฃแƒ  แƒ›แƒ“แƒ’แƒแƒ›แƒแƒ แƒ”แƒแƒ‘แƒแƒจแƒ˜. แƒงแƒ•แƒ”แƒšแƒแƒคแƒ แƒ˜แƒก แƒ”แƒ แƒ— แƒ›แƒฃแƒจแƒ แƒซแƒแƒคแƒจแƒ˜ แƒจแƒ”แƒœแƒแƒฎแƒ•แƒ˜แƒ—, แƒ—แƒ˜แƒ—แƒฅแƒ›แƒ˜แƒก แƒงแƒ•แƒ”แƒšแƒ แƒ™แƒแƒ“แƒ˜ แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ“แƒแƒ˜แƒฌแƒ”แƒ แƒแƒก แƒ“แƒแƒ‘แƒšแƒแƒ™แƒ•แƒ˜แƒก แƒ’แƒแƒ แƒ”แƒจแƒ”, แƒ—แƒ˜แƒ—แƒฅแƒแƒก แƒ”แƒ แƒ—แƒ˜ แƒœแƒแƒ™แƒแƒ“แƒ˜ แƒ˜แƒงแƒแƒก. แƒ—แƒฃ แƒ›แƒ”แƒขแƒ˜ แƒ›แƒฃแƒจแƒ แƒซแƒแƒคแƒ”แƒ‘แƒ˜ แƒ’แƒแƒ›แƒแƒ˜แƒงแƒแƒคแƒ, แƒ•แƒ˜แƒ“แƒ แƒ” แƒกแƒแƒญแƒ˜แƒ แƒแƒ, แƒแƒ›แƒแƒœ แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ’แƒแƒ›แƒแƒ˜แƒฌแƒ•แƒ˜แƒแƒก แƒ›แƒ”แƒฎแƒกแƒ˜แƒ”แƒ แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒคแƒฃแƒญแƒ”แƒ‘แƒ, แƒจแƒ”แƒฅแƒ›แƒœแƒแƒก แƒฃแƒ›แƒแƒฅแƒ›แƒ”แƒ“แƒ แƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ”แƒ‘แƒ˜แƒก แƒ“แƒ˜แƒ“แƒ˜ แƒ แƒแƒแƒ“แƒ”แƒœแƒแƒ‘แƒ แƒ“แƒ แƒจแƒ”แƒแƒ›แƒชแƒ˜แƒ แƒแƒก แƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ”แƒ‘แƒ˜แƒก แƒแƒฃแƒ–แƒจแƒ˜ แƒ“แƒแƒ‘แƒ แƒฃแƒœแƒ”แƒ‘แƒ˜แƒก แƒ แƒแƒแƒ“แƒ”แƒœแƒแƒ‘แƒ.

แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ˜แƒ—แƒ˜ แƒ˜แƒœแƒคแƒแƒ แƒ›แƒแƒชแƒ˜แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒ”แƒฌแƒ•แƒ˜แƒ”แƒ— Envoy Proxy แƒ‘แƒšแƒแƒ’แƒ˜.

HTTP แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ

แƒจแƒ”แƒ›แƒ“แƒ”แƒ’แƒ˜ NGINX แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ˜แƒก แƒ‘แƒšแƒแƒ™แƒ˜ แƒ’แƒแƒœแƒกแƒแƒ–แƒฆแƒ•แƒ แƒแƒ•แƒก HTTP แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ”แƒ‘แƒก, แƒ แƒแƒ’แƒแƒ แƒ˜แƒชแƒแƒ:

  • แƒ แƒ แƒ›แƒ˜แƒ›แƒ”แƒ‘แƒ˜แƒก แƒขแƒ˜แƒžแƒ”แƒ‘แƒ˜แƒ แƒ›แƒฎแƒแƒ แƒ“แƒแƒญแƒ”แƒ แƒ˜แƒšแƒ˜
  • แƒœแƒแƒ’แƒฃแƒšแƒ˜แƒกแƒฎแƒ›แƒ”แƒ•แƒ˜ แƒ•แƒแƒ“แƒ”แƒ‘แƒ˜
  • Gzip แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ

แƒแƒ› แƒแƒกแƒžแƒ”แƒฅแƒขแƒ”แƒ‘แƒ˜แƒก แƒ›แƒแƒ แƒ’แƒ”แƒ‘แƒ แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— Envoy Proxy-แƒ˜แƒก แƒคแƒ˜แƒšแƒขแƒ แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ—, แƒ แƒแƒ›แƒ”แƒšแƒ–แƒ”แƒช แƒ›แƒแƒ’แƒ•แƒ˜แƒแƒœแƒ”แƒ‘แƒ˜แƒ— แƒ’แƒแƒœแƒ•แƒ˜แƒฎแƒ˜แƒšแƒแƒ•แƒ—.

แƒœแƒแƒ‘แƒ˜แƒฏแƒ˜ 3 - แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜แƒก แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ

HTTP แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ˜แƒก แƒ‘แƒšแƒแƒ™แƒจแƒ˜, NGINX แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ แƒ’แƒแƒœแƒกแƒแƒ–แƒฆแƒ•แƒ แƒแƒ•แƒก แƒ›แƒแƒกแƒ›แƒ”แƒœแƒแƒก 8080 แƒžแƒแƒ แƒขแƒ–แƒ” แƒ“แƒ แƒฃแƒžแƒแƒกแƒฃแƒฎแƒแƒก แƒจแƒ”แƒ›แƒแƒ›แƒแƒ•แƒแƒš แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ”แƒ‘แƒก แƒ“แƒแƒ›แƒ”แƒœแƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก. one.example.com ะธ www.one.example.com.

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

Envoy-แƒ˜แƒก แƒจแƒ˜แƒ’แƒœแƒ˜แƒ—, แƒ›แƒแƒก แƒแƒ™แƒแƒœแƒขแƒ แƒแƒšแƒ”แƒ‘แƒ”แƒœ แƒ›แƒกแƒ›แƒ”แƒœแƒ”แƒšแƒ”แƒ‘แƒ˜.

แƒ“แƒ”แƒกแƒžแƒแƒœแƒ˜ แƒ›แƒกแƒ›แƒ”แƒœแƒ”แƒšแƒ”แƒ‘แƒ˜

Envoy Proxy-แƒ˜แƒก แƒ“แƒแƒฌแƒงแƒ”แƒ‘แƒ˜แƒก แƒงแƒ•แƒ”แƒšแƒแƒ–แƒ” แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ•แƒแƒœแƒ˜ แƒแƒกแƒžแƒ”แƒฅแƒขแƒ˜แƒ แƒ—แƒฅแƒ•แƒ”แƒœแƒ˜ แƒ›แƒกแƒ›แƒ”แƒœแƒ”แƒšแƒ˜แƒก แƒ’แƒแƒœแƒกแƒแƒ–แƒฆแƒ•แƒ แƒ. แƒ—แƒฅแƒ•แƒ”แƒœ แƒฃแƒœแƒ“แƒ แƒจแƒ”แƒฅแƒ›แƒœแƒแƒ— แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ˜แƒก แƒคแƒแƒ˜แƒšแƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒแƒฆแƒฌแƒ”แƒ แƒก, แƒ—แƒฃ แƒ แƒแƒ’แƒแƒ  แƒ’แƒกแƒฃแƒ แƒ— Envoy แƒ˜แƒœแƒกแƒขแƒแƒœแƒชแƒ˜แƒ˜แƒก แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒ.

แƒฅแƒ•แƒ”แƒ›แƒแƒ— แƒ›แƒแƒชแƒ”แƒ›แƒฃแƒšแƒ˜ แƒคแƒ แƒแƒ’แƒ›แƒ”แƒœแƒขแƒ˜ แƒจแƒ”แƒฅแƒ›แƒœแƒ˜แƒก แƒแƒฎแƒแƒš แƒ›แƒกแƒ›แƒ”แƒœแƒ”แƒšแƒก แƒ“แƒ แƒ“แƒแƒแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ”แƒ‘แƒก แƒ›แƒแƒก 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-แƒจแƒ˜, แƒ›แƒ“แƒ”แƒ‘แƒแƒ แƒ”แƒแƒ‘แƒ˜แƒก แƒ‘แƒšแƒแƒ™แƒ˜ แƒ’แƒแƒœแƒกแƒแƒ–แƒฆแƒ•แƒ แƒแƒ•แƒก, แƒ—แƒฃ แƒ แƒแƒ’แƒแƒ  แƒฃแƒœแƒ“แƒ แƒ“แƒแƒ›แƒฃแƒจแƒแƒ•แƒ“แƒ”แƒก แƒ“แƒ แƒกแƒแƒ“ แƒ’แƒแƒแƒขแƒแƒ แƒแƒก แƒขแƒ แƒแƒคแƒ˜แƒ™แƒ˜. แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒคแƒ แƒแƒ’แƒ›แƒ”แƒœแƒขแƒจแƒ˜, แƒกแƒแƒ˜แƒขแƒ˜แƒก แƒ›แƒ—แƒ”แƒšแƒ˜ แƒขแƒ แƒแƒคแƒ˜แƒ™แƒ˜ แƒ’แƒแƒ“แƒแƒ“แƒ˜แƒก แƒ–แƒ”แƒ›แƒแƒ— แƒ“แƒ˜แƒœแƒ”แƒ‘แƒแƒจแƒ˜ (แƒ›แƒ—แƒแƒ แƒ’แƒ›แƒœแƒ”แƒšแƒ˜แƒก แƒจแƒ”แƒœแƒ˜แƒจแƒ•แƒœแƒ: upstream แƒฉแƒ•แƒ”แƒฃแƒšแƒ”แƒ‘แƒ แƒ˜แƒ• แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ˜แƒก แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜แƒ) แƒ™แƒšแƒแƒกแƒขแƒ”แƒ แƒจแƒ˜ แƒกแƒแƒฎแƒ”แƒšแƒแƒ“ targetCluster. แƒ–แƒ”แƒ“แƒ แƒœแƒแƒ™แƒแƒ“แƒ˜แƒก แƒ™แƒšแƒแƒกแƒขแƒ”แƒ แƒ˜ แƒ’แƒแƒœแƒกแƒแƒ–แƒฆแƒ•แƒ แƒแƒ•แƒก แƒ™แƒ•แƒแƒœแƒซแƒ”แƒ‘แƒก, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒ›แƒแƒช แƒฃแƒœแƒ“แƒ แƒ“แƒแƒแƒ›แƒฃแƒจแƒแƒแƒœ แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ. แƒแƒ›แƒแƒ–แƒ” แƒ’แƒแƒœแƒ•แƒ˜แƒฎแƒ˜แƒšแƒแƒ•แƒ— แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒ”แƒขแƒแƒžแƒ–แƒ”.

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

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

Envoy-แƒจแƒ˜ แƒแƒ›แƒแƒก Filters แƒแƒ™แƒ”แƒ—แƒ”แƒ‘แƒก.

Envoy แƒคแƒ˜แƒšแƒขแƒ แƒ”แƒ‘แƒ˜

แƒกแƒขแƒแƒขแƒ˜แƒ™แƒฃแƒ แƒ˜ แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก, แƒคแƒ˜แƒšแƒขแƒ แƒ”แƒ‘แƒ˜ แƒ’แƒแƒœแƒกแƒแƒ–แƒฆแƒ•แƒ แƒแƒ•แƒ”แƒœ แƒจแƒ”แƒ›แƒแƒ›แƒแƒ•แƒแƒšแƒ˜ แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ”แƒ‘แƒ˜แƒก แƒ“แƒแƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒแƒก. แƒแƒ› แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒแƒจแƒ˜ แƒฉแƒ•แƒ”แƒœ แƒ•แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ— แƒจแƒ”แƒกแƒแƒ‘แƒแƒ›แƒ˜แƒก แƒคแƒ˜แƒšแƒขแƒ แƒ”แƒ‘แƒก แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜แƒก_แƒกแƒแƒฎแƒ”แƒšแƒ”แƒ‘แƒ˜ แƒฌแƒ˜แƒœแƒ แƒกแƒแƒคแƒ”แƒฎแƒฃแƒ แƒ–แƒ”. แƒ แƒแƒ“แƒ”แƒกแƒแƒช แƒจแƒ”แƒ›แƒแƒ›แƒแƒ•แƒแƒšแƒ˜ แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ”แƒ‘แƒ˜ แƒฉแƒแƒ›แƒแƒ“แƒ˜แƒก, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒ˜แƒช แƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒ แƒ’แƒแƒ แƒ™แƒ•แƒ”แƒฃแƒš แƒ“แƒแƒ›แƒ”แƒœแƒ”แƒ‘แƒกแƒ แƒ“แƒ แƒ›แƒแƒ แƒจแƒ แƒฃแƒขแƒ”แƒ‘แƒก, แƒขแƒ แƒแƒคแƒ˜แƒ™แƒ˜ แƒ›แƒ˜แƒ”แƒ›แƒแƒ แƒ—แƒ”แƒ‘แƒ แƒ™แƒšแƒแƒกแƒขแƒ”แƒ แƒจแƒ˜. แƒ”แƒก แƒแƒ แƒ˜แƒก 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

แƒกแƒแƒฎแƒ”แƒšแƒ˜ แƒ“แƒ”แƒกแƒžแƒแƒœแƒ˜.http_connection_manager แƒแƒ แƒ˜แƒก แƒฉแƒแƒจแƒ”แƒœแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒคแƒ˜แƒšแƒขแƒ แƒ˜ Envoy Proxy-แƒจแƒ˜. แƒกแƒฎแƒ•แƒ แƒคแƒ˜แƒšแƒขแƒ แƒ”แƒ‘แƒ˜ แƒ›แƒแƒ˜แƒชแƒแƒ•แƒก Redis, Mongo, TCP. แƒกแƒ แƒฃแƒšแƒ˜ แƒกแƒ˜แƒ แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒœแƒแƒฎแƒแƒ— แƒแƒฅ แƒ“แƒแƒ™แƒฃแƒ›แƒ”แƒœแƒขแƒแƒชแƒ˜แƒ.

แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ˜แƒ—แƒ˜ แƒ˜แƒœแƒคแƒแƒ แƒ›แƒแƒชแƒ˜แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒ“แƒแƒขแƒ•แƒ˜แƒ แƒ—แƒ•แƒ˜แƒก แƒ“แƒแƒ‘แƒแƒšแƒแƒœแƒกแƒ”แƒ‘แƒ˜แƒก แƒกแƒฎแƒ•แƒ แƒžแƒแƒšแƒ˜แƒขแƒ˜แƒ™แƒ˜แƒก แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘ แƒ”แƒฌแƒ•แƒ˜แƒ”แƒ— แƒ“แƒ”แƒกแƒžแƒแƒœแƒ˜แƒก แƒ“แƒแƒ™แƒฃแƒ›แƒ”แƒœแƒขแƒแƒชแƒ˜แƒ.

แƒœแƒแƒ‘แƒ˜แƒฏแƒ˜ 5 - แƒžแƒ แƒแƒฅแƒกแƒ˜ แƒ“แƒ แƒ–แƒ”แƒ“แƒ แƒ“แƒ˜แƒœแƒ”แƒ‘แƒ˜แƒก แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ

NGINX-แƒจแƒ˜ แƒ–แƒ”แƒ“แƒ แƒ“แƒ˜แƒœแƒ”แƒ‘แƒ˜แƒก แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ แƒ’แƒแƒœแƒกแƒแƒ–แƒฆแƒ•แƒ แƒแƒ•แƒก แƒกแƒแƒ›แƒ˜แƒ–แƒœแƒ” แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ”แƒ‘แƒ˜แƒก แƒ”แƒ แƒ—แƒแƒ‘แƒšแƒ˜แƒแƒ‘แƒแƒก, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒ˜แƒช แƒแƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒ”แƒœ แƒขแƒ แƒแƒคแƒ˜แƒ™แƒก. แƒแƒ› แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒแƒจแƒ˜ แƒ“แƒแƒ˜แƒœแƒ˜แƒจแƒœแƒ แƒแƒ แƒ˜ แƒ™แƒšแƒแƒกแƒขแƒ”แƒ แƒ˜.

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

Envoy-แƒจแƒ˜ แƒแƒ›แƒแƒก แƒ›แƒแƒ แƒ—แƒแƒ•แƒก แƒ™แƒšแƒแƒกแƒขแƒ”แƒ แƒ”แƒ‘แƒ˜.

แƒ“แƒ”แƒกแƒžแƒแƒœแƒ˜แƒก แƒ™แƒšแƒแƒกแƒขแƒ”แƒ แƒ”แƒ‘แƒ˜

แƒ–แƒ”แƒ“แƒ แƒ“แƒ˜แƒœแƒ”แƒ‘แƒ˜แƒก แƒ”แƒ™แƒ•แƒ˜แƒ•แƒแƒšแƒ”แƒœแƒขแƒ˜ แƒ’แƒแƒœแƒ˜แƒกแƒแƒ–แƒฆแƒ•แƒ แƒ”แƒ‘แƒ, แƒ แƒแƒ’แƒแƒ แƒช แƒ™แƒšแƒแƒกแƒขแƒ”แƒ แƒ”แƒ‘แƒ˜. แƒแƒ› แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒแƒจแƒ˜ แƒ’แƒแƒ›แƒแƒ•แƒšแƒ”แƒœแƒ˜แƒšแƒ˜แƒ แƒ›แƒแƒกแƒžแƒ˜แƒœแƒซแƒšแƒ”แƒ‘แƒ˜, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒ˜แƒช แƒ›แƒแƒ”แƒ›แƒกแƒแƒฎแƒฃแƒ แƒ”แƒ‘แƒ˜แƒแƒœ แƒ›แƒแƒซแƒ แƒแƒแƒ‘แƒแƒก. แƒฐแƒแƒกแƒขแƒ”แƒ‘แƒ–แƒ” แƒฌแƒ•แƒ“แƒแƒ›แƒ˜แƒก แƒ’แƒ–แƒ, แƒ แƒแƒ’แƒแƒ แƒ˜แƒชแƒแƒ แƒ“แƒ แƒแƒ˜แƒก แƒแƒ›แƒแƒฌแƒฃแƒ แƒ•แƒ, แƒ’แƒแƒœแƒ˜แƒกแƒแƒ–แƒฆแƒ•แƒ แƒ”แƒ‘แƒ แƒ แƒแƒ’แƒแƒ แƒช แƒ™แƒšแƒแƒกแƒขแƒ”แƒ แƒฃแƒšแƒ˜ แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ. แƒ”แƒก แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒแƒก แƒ˜แƒซแƒšแƒ”แƒ•แƒ แƒฃแƒคแƒ แƒ แƒ›แƒแƒ แƒชแƒ•แƒšแƒแƒ•แƒแƒœแƒ˜ แƒ™แƒแƒœแƒขแƒ แƒแƒšแƒ˜ แƒแƒกแƒžแƒ”แƒฅแƒขแƒ”แƒ‘แƒ–แƒ”, แƒ แƒแƒ’แƒแƒ แƒ˜แƒชแƒแƒ แƒจแƒ”แƒงแƒแƒ•แƒœแƒ”แƒ‘แƒ แƒ“แƒ แƒ“แƒแƒขแƒ•แƒ˜แƒ แƒ—แƒ•แƒ˜แƒก แƒ“แƒแƒ‘แƒแƒšแƒแƒœแƒกแƒ”แƒ‘แƒ.

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 แƒ›แƒ˜แƒ–แƒœแƒ”แƒ‘แƒก. แƒ—แƒ˜แƒ—แƒแƒ”แƒฃแƒšแƒ˜ แƒ“แƒแƒ‘แƒ แƒฃแƒœแƒ”แƒ‘แƒฃแƒšแƒ˜ IP แƒ›แƒ˜แƒกแƒแƒ›แƒแƒ แƒ—แƒ˜ DNS แƒจแƒ”แƒ“แƒ”แƒ’แƒ˜แƒ“แƒแƒœ แƒฉแƒแƒ˜แƒ—แƒ•แƒšแƒ”แƒ‘แƒ แƒแƒจแƒ™แƒแƒ แƒ แƒฐแƒแƒกแƒขแƒแƒ“ แƒ–แƒ”แƒ“แƒ แƒœแƒแƒ™แƒแƒ“แƒ˜แƒก แƒ™แƒšแƒแƒกแƒขแƒ”แƒ แƒจแƒ˜. แƒ”แƒก แƒœแƒ˜แƒจแƒœแƒแƒ•แƒก, แƒ แƒแƒ› แƒ—แƒฃ แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ แƒ“แƒแƒแƒ‘แƒ แƒฃแƒœแƒ”แƒ‘แƒก แƒแƒ  IP แƒ›แƒ˜แƒกแƒแƒ›แƒแƒ แƒ—แƒก, Envoy แƒฉแƒแƒ—แƒ•แƒšแƒ˜แƒก, แƒ แƒแƒ› แƒ™แƒšแƒแƒกแƒขแƒ”แƒ แƒจแƒ˜ แƒแƒ แƒ˜ แƒฐแƒแƒกแƒขแƒ˜แƒ แƒ“แƒ แƒแƒ แƒ˜แƒ•แƒ” แƒฃแƒœแƒ“แƒ แƒ˜แƒงแƒแƒก แƒ“แƒแƒ‘แƒแƒšแƒแƒœแƒกแƒ”แƒ‘แƒฃแƒšแƒ˜. แƒ—แƒฃ แƒฐแƒแƒกแƒขแƒ˜ แƒแƒ›แƒแƒฆแƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒจแƒ”แƒ“แƒ”แƒ’แƒ˜แƒ“แƒแƒœ, Envoy แƒฉแƒแƒ—แƒ•แƒšแƒ˜แƒก, แƒ แƒแƒ› แƒ˜แƒก แƒแƒฆแƒแƒ  แƒแƒ แƒกแƒ”แƒ‘แƒแƒ‘แƒก แƒ“แƒ แƒแƒ›แƒแƒ˜แƒฆแƒ”แƒ‘แƒก แƒขแƒ แƒแƒคแƒ˜แƒ™แƒก แƒœแƒ”แƒ‘แƒ˜แƒกแƒ›แƒ˜แƒ”แƒ แƒ˜ แƒแƒ แƒกแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ˜แƒก แƒแƒฃแƒ–แƒ”แƒ‘แƒ˜แƒ“แƒแƒœ.

แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ˜แƒ—แƒ˜ แƒ˜แƒœแƒคแƒแƒ แƒ›แƒแƒชแƒ˜แƒ˜แƒกแƒแƒ—แƒ•แƒ˜แƒก แƒ˜แƒฎ แƒ“แƒ”แƒกแƒžแƒแƒœแƒ˜แƒก แƒ›แƒแƒ แƒ˜แƒแƒœแƒ”แƒขแƒฃแƒšแƒ˜ แƒ“แƒแƒ™แƒฃแƒ›แƒ”แƒœแƒขแƒแƒชแƒ˜แƒ.

แƒœแƒแƒ‘แƒ˜แƒฏแƒ˜ 6 - แƒŸแƒฃแƒ แƒœแƒแƒšแƒ˜แƒก แƒฌแƒ•แƒ“แƒแƒ›แƒ แƒ“แƒ แƒจแƒ”แƒชแƒ“แƒแƒ›แƒ”แƒ‘แƒ˜

แƒกแƒแƒ‘แƒแƒšแƒแƒ แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ แƒแƒ แƒ˜แƒก แƒ แƒ”แƒ’แƒ˜แƒกแƒขแƒ แƒแƒชแƒ˜แƒ. แƒ˜แƒ›แƒ˜แƒก แƒœแƒแƒชแƒ•แƒšแƒแƒ“, แƒ แƒแƒ› แƒจแƒ”แƒชแƒ“แƒแƒ›แƒ”แƒ‘แƒ˜แƒก แƒŸแƒฃแƒ แƒœแƒแƒšแƒ˜ แƒ“แƒ˜แƒกแƒ™แƒ–แƒ” แƒ’แƒแƒ“แƒแƒ˜แƒขแƒแƒœแƒแƒก, Envoy Proxy แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒก แƒฆแƒ แƒฃแƒ‘แƒ”แƒšแƒ–แƒ” แƒ“แƒแƒคแƒฃแƒซแƒœแƒ”แƒ‘แƒฃแƒš แƒ›แƒ˜แƒ“แƒ’แƒแƒ›แƒแƒก. แƒงแƒ•แƒ”แƒšแƒ แƒ’แƒแƒœแƒแƒชแƒฎแƒแƒ“แƒ˜แƒก แƒŸแƒฃแƒ แƒœแƒแƒšแƒ˜ แƒ’แƒแƒ›แƒแƒ›แƒแƒ•แƒแƒšแƒ˜แƒ แƒ›แƒ™แƒแƒชแƒ แƒ˜ ะธ แƒฃแƒคแƒ แƒแƒกแƒ˜.

แƒ แƒแƒ“แƒ”แƒกแƒแƒช แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒšแƒ”แƒ‘แƒ˜ แƒแƒ™แƒ”แƒ—แƒ”แƒ‘แƒ”แƒœ แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒแƒก, แƒฌแƒ•แƒ“แƒแƒ›แƒ˜แƒก แƒŸแƒฃแƒ แƒœแƒแƒšแƒ”แƒ‘แƒ˜ แƒแƒ แƒฉแƒ”แƒ•แƒ˜แƒ—แƒ˜แƒ แƒ“แƒ แƒœแƒแƒ’แƒฃแƒšแƒ˜แƒกแƒฎแƒ›แƒ”แƒ•แƒแƒ“ แƒ’แƒแƒ›แƒแƒ แƒ—แƒฃแƒšแƒ˜แƒ. HTTP แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒฌแƒ•แƒ“แƒแƒ›แƒ˜แƒก แƒŸแƒฃแƒ แƒœแƒแƒšแƒ”แƒ‘แƒ˜แƒก แƒฉแƒแƒกแƒแƒ แƒ—แƒแƒ•แƒแƒ“, แƒฉแƒแƒ แƒ—แƒ”แƒ— แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ แƒจแƒ”แƒกแƒ•แƒšแƒ˜แƒก_แƒšแƒแƒ’แƒ˜ HTTP แƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ˜แƒก แƒ›แƒ”แƒœแƒ”แƒฏแƒ”แƒ แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก. แƒ‘แƒ˜แƒšแƒ˜แƒ™แƒ˜ แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ˜แƒงแƒแƒก แƒ˜แƒกแƒ”แƒ—แƒ˜ แƒ›แƒแƒฌแƒงแƒแƒ‘แƒ˜แƒšแƒแƒ‘แƒ, แƒ แƒแƒ’แƒแƒ แƒ˜แƒชแƒแƒ แƒ›แƒ™แƒแƒชแƒ แƒ˜, แƒแƒœ แƒคแƒแƒ˜แƒšแƒ˜ แƒ“แƒ˜แƒกแƒ™แƒ–แƒ”, แƒ—แƒฅแƒ•แƒ”แƒœแƒ˜ แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ”แƒ‘แƒ˜แƒ“แƒแƒœ แƒ’แƒแƒ›แƒแƒ›แƒ“แƒ˜แƒœแƒแƒ แƒ”.

แƒจแƒ”แƒ›แƒ“แƒ”แƒ’แƒ˜ แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ แƒ’แƒแƒ“แƒแƒ›แƒ˜แƒกแƒแƒ›แƒแƒ แƒ—แƒ”แƒ‘แƒก แƒฌแƒ•แƒ“แƒแƒ›แƒ˜แƒก แƒงแƒ•แƒ”แƒšแƒ แƒŸแƒฃแƒ แƒœแƒแƒšแƒก แƒ›แƒ™แƒแƒชแƒ แƒ˜ (แƒ›แƒ—แƒแƒ แƒ’แƒ›แƒœแƒ”แƒšแƒ˜แƒก แƒจแƒ”แƒœแƒ˜แƒจแƒ•แƒœแƒ - stdout แƒกแƒแƒญแƒ˜แƒ แƒแƒ แƒ“แƒแƒ™แƒ”แƒ แƒ˜แƒก แƒจแƒ˜แƒ’แƒœแƒ˜แƒ— envoy-แƒ˜แƒก แƒ’แƒแƒ›แƒแƒกแƒแƒงแƒ”แƒœแƒ”แƒ‘แƒšแƒแƒ“. แƒ—แƒฃ แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ แƒ“แƒแƒ™แƒ”แƒ แƒ˜แƒก แƒ’แƒแƒ แƒ”แƒจแƒ”, แƒ›แƒแƒจแƒ˜แƒœ แƒจแƒ”แƒชแƒ•แƒแƒšแƒ”แƒ— /dev/stdout แƒฉแƒ•แƒ”แƒฃแƒšแƒ”แƒ‘แƒ แƒ˜แƒ•แƒ˜ log แƒคแƒแƒ˜แƒšแƒ˜แƒก แƒ’แƒ”แƒ–แƒ˜แƒ—). แƒ“แƒแƒแƒ™แƒแƒžแƒ˜แƒ แƒ”แƒ— แƒคแƒ แƒแƒ’แƒ›แƒ”แƒœแƒขแƒ˜ แƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ˜แƒก แƒ›แƒ”แƒœแƒ”แƒฏแƒ”แƒ แƒ˜แƒก แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ˜แƒก แƒ’แƒแƒœแƒงแƒแƒคแƒ˜แƒšแƒ”แƒ‘แƒแƒจแƒ˜:

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 แƒคแƒแƒ แƒ›แƒแƒขแƒจแƒ˜ แƒ•แƒ”แƒšแƒ˜แƒก แƒ“แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ— 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-แƒจแƒ˜. แƒ‘แƒแƒšแƒ แƒœแƒแƒ‘แƒ˜แƒฏแƒ˜ แƒแƒ แƒ˜แƒก Envoy Proxy แƒ˜แƒœแƒกแƒขแƒแƒœแƒชแƒ˜แƒ˜แƒก แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒ แƒ›แƒ˜แƒก แƒจแƒ”แƒกแƒแƒ›แƒแƒฌแƒ›แƒ”แƒ‘แƒšแƒแƒ“.

แƒ’แƒแƒฃแƒจแƒ•แƒ˜แƒ— แƒ แƒแƒ’แƒแƒ แƒช แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒ”แƒšแƒ˜

NGINX แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ˜แƒก แƒฎแƒแƒ–แƒ˜แƒก แƒ–แƒ”แƒ“แƒ แƒœแƒแƒฌแƒ˜แƒšแƒจแƒ˜ แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒ”แƒšแƒ˜ www www; แƒ’แƒแƒœแƒกแƒแƒ–แƒฆแƒ•แƒ แƒแƒ•แƒก NGINX-แƒ˜แƒก แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒแƒก, แƒ แƒแƒ’แƒแƒ แƒช แƒ“แƒแƒ‘แƒแƒšแƒ˜ แƒžแƒ แƒ˜แƒ•แƒ˜แƒšแƒ”แƒ’แƒ˜แƒ แƒ”แƒ‘แƒฃแƒš แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒ”แƒšแƒก แƒฃแƒกแƒแƒคแƒ แƒ—แƒฎแƒแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒกแƒแƒฃแƒ›แƒฏแƒแƒ‘แƒ”แƒกแƒ”แƒ‘แƒšแƒแƒ“.

Envoy Proxy แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒก แƒฆแƒ แƒฃแƒ‘แƒ”แƒšแƒ–แƒ” แƒ“แƒแƒคแƒฃแƒซแƒœแƒ”แƒ‘แƒฃแƒš แƒ›แƒ˜แƒ“แƒ’แƒแƒ›แƒแƒก แƒ˜แƒ›แƒ˜แƒก แƒ›แƒแƒ แƒ—แƒ•แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก, แƒ—แƒฃ แƒ•แƒ˜แƒœ แƒคแƒšแƒแƒ‘แƒก แƒžแƒ แƒแƒชแƒ”แƒกแƒก. แƒ แƒแƒ“แƒ”แƒกแƒแƒช แƒฉแƒ•แƒ”แƒœ แƒ•แƒแƒขแƒแƒ แƒ”แƒ‘แƒ— Envoy Proxy-แƒก แƒ™แƒแƒœแƒขแƒ”แƒ˜แƒœแƒ”แƒ แƒจแƒ˜, แƒฉแƒ•แƒ”แƒœ แƒจแƒ”แƒ’แƒ•แƒ˜แƒซแƒšแƒ˜แƒ แƒ›แƒ˜แƒฃแƒ—แƒ˜แƒ—แƒแƒ— แƒ“แƒแƒ‘แƒแƒšแƒ˜ แƒžแƒ แƒ˜แƒ•แƒ˜แƒšแƒ”แƒ’แƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒ”แƒšแƒ˜.

Envoy Proxy-แƒ˜แƒก แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒ

แƒฅแƒ•แƒ”แƒ›แƒแƒ— แƒ›แƒแƒงแƒ•แƒแƒœแƒ˜แƒšแƒ˜ แƒ‘แƒ แƒซแƒแƒœแƒ”แƒ‘แƒ แƒ’แƒแƒฃแƒจแƒ•แƒ”แƒ‘แƒก Envoy Proxy-แƒก แƒฐแƒแƒกแƒขแƒ˜แƒก Docker แƒ™แƒแƒœแƒขแƒ”แƒ˜แƒœแƒ”แƒ แƒจแƒ˜. แƒ”แƒก แƒ‘แƒ แƒซแƒแƒœแƒ”แƒ‘แƒ แƒแƒซแƒšแƒ”แƒ•แƒก 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 Proxy-แƒก แƒแƒ  แƒแƒฅแƒ•แƒก แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒฎแƒ”แƒšแƒ›แƒ˜แƒกแƒแƒฌแƒ•แƒ“แƒแƒ›แƒ˜ แƒ›แƒ˜แƒ›แƒแƒ แƒ—แƒฃแƒšแƒ”แƒ‘แƒ”แƒ‘แƒ˜. แƒจแƒ”แƒ›แƒ“แƒ”แƒ’แƒ˜ แƒ‘แƒ แƒซแƒแƒœแƒ”แƒ‘แƒ แƒ“แƒแƒ˜แƒฌแƒงแƒ”แƒ‘แƒก HTTP แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ”แƒ‘แƒ˜แƒก แƒกแƒ”แƒ แƒ˜แƒแƒก, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒ Envoy-แƒกแƒ—แƒ•แƒ˜แƒก แƒ’แƒแƒœแƒกแƒแƒ–แƒฆแƒ•แƒ แƒฃแƒš แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒแƒก.

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

แƒฎแƒ”แƒšแƒ›แƒ˜แƒกแƒแƒฌแƒ•แƒ“แƒแƒ›แƒ˜ แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ”แƒ‘แƒ˜แƒ—, Envoy-แƒก แƒจแƒ”แƒฃแƒซแƒšแƒ˜แƒ แƒฌแƒแƒ แƒ›แƒแƒขแƒ”แƒ‘แƒ˜แƒ— แƒ›แƒแƒแƒฎแƒ“แƒ˜แƒœแƒแƒก แƒ›แƒแƒ แƒ˜แƒแƒœแƒ”แƒขแƒฃแƒšแƒ˜ แƒขแƒ แƒแƒคแƒ˜แƒ™แƒ˜ แƒ“แƒแƒœแƒ˜แƒจแƒœแƒฃแƒšแƒ”แƒ‘แƒ˜แƒก แƒแƒ“แƒ’แƒ˜แƒšแƒ–แƒ”.

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

แƒ—แƒฅแƒ•แƒ”แƒœ แƒฃแƒœแƒ“แƒ แƒœแƒแƒฎแƒแƒ— แƒžแƒแƒกแƒฃแƒฎแƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ›แƒ˜แƒฃแƒ—แƒ˜แƒ—แƒ”แƒ‘แƒก, แƒ แƒแƒ›แƒ”แƒš Docker แƒ™แƒแƒœแƒขแƒ”แƒ˜แƒœแƒ”แƒ แƒ›แƒ แƒ“แƒแƒแƒ›แƒฃแƒจแƒแƒ•แƒ แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ. 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 }

แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ˜แƒ—แƒ˜ แƒ˜แƒœแƒคแƒแƒ แƒ›แƒแƒชแƒ˜แƒ แƒ›แƒ—แƒแƒ แƒ’แƒ›แƒœแƒ”แƒšแƒ˜แƒกแƒ’แƒแƒœ

Envoy Proxy-แƒ˜แƒก แƒ“แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒก แƒ˜แƒœแƒกแƒขแƒ แƒฃแƒฅแƒชแƒ˜แƒ แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒ˜แƒฎแƒ˜แƒšแƒแƒ— แƒ•แƒ”แƒ‘แƒ’แƒ•แƒ”แƒ แƒ“แƒ–แƒ” 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

Envoy Proxy-แƒก แƒแƒ  แƒแƒฅแƒ•แƒก แƒกแƒขแƒแƒขแƒ˜แƒ™แƒฃแƒ แƒ˜ แƒ™แƒแƒœแƒขแƒ”แƒœแƒขแƒ˜แƒก แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ˜แƒก แƒ›แƒฎแƒแƒ แƒ“แƒแƒญแƒ”แƒ แƒ. แƒแƒ›แƒ˜แƒขแƒแƒ›, แƒ•แƒ˜แƒก แƒจแƒ”แƒฃแƒซแƒšแƒ˜แƒ แƒฎแƒ›แƒ แƒ›แƒ˜แƒกแƒชแƒ”แƒก แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒแƒก: https://github.com/envoyproxy/envoy/issues/378

แƒ’แƒแƒ›แƒแƒ™แƒ˜แƒ—แƒฎแƒ•แƒแƒจแƒ˜ แƒ›แƒแƒœแƒแƒฌแƒ˜แƒšแƒ”แƒแƒ‘แƒ แƒจแƒ”แƒฃแƒซแƒšแƒ˜แƒแƒ— แƒ›แƒฎแƒแƒšแƒแƒ“ แƒ“แƒแƒ แƒ”แƒ’แƒ˜แƒกแƒขแƒ แƒ˜แƒ แƒ”แƒ‘แƒฃแƒš แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒšแƒ”แƒ‘แƒก. แฒจแƒ”แƒ‘แƒ แƒซแƒแƒœแƒ“แƒ˜แƒ—แƒ’แƒ—แƒฎแƒแƒ•แƒ—

แƒแƒ› แƒžแƒแƒกแƒขแƒ›แƒ แƒ›แƒแƒ’แƒแƒœแƒ˜แƒญแƒแƒ—, แƒ“แƒแƒแƒ˜แƒœแƒกแƒขแƒแƒšแƒ˜แƒ แƒแƒ— แƒ“แƒ แƒ’แƒแƒ›แƒแƒกแƒชแƒแƒ“แƒแƒ— envoy proxy?

  • แƒ“แƒ˜แƒแƒฎ

  • แƒแƒ แƒแƒ แƒ˜แƒก

แƒ›แƒ˜แƒกแƒชแƒ แƒฎแƒ›แƒ 75 แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒ”แƒšแƒ›แƒ. 18-แƒ›แƒ แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒ”แƒšแƒ›แƒ แƒ—แƒแƒ•แƒ˜ แƒจแƒ”แƒ˜แƒ™แƒแƒ•แƒ.

แƒฌแƒงแƒแƒ แƒ: www.habr.com

แƒแƒฎแƒแƒšแƒ˜ แƒ™แƒแƒ›แƒ”แƒœแƒขแƒแƒ แƒ˜แƒก แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ