áááºá¹ááá¬áá« Habrá ááá¯á·á
áºááᯠáá¬áá¬ááŒááºáá¬ážáá¬ááᯠáááºážááááá¬ážááá¡á±á¬áẠáá«ááŒá±á¬ááŒáááº
Envoy ááẠáá áºáŠážáá»ááºáž áááºáá±á¬ááºááŸá¯áá»á¬ážááŸáá·áº á¡ááá®áá±ážááŸááºážáá»á¬ážá¡ááœáẠáá®ááá¯ááºážáá¯ááºáá¬ážáá±á¬ á áœááºážáá±á¬ááºáááºááŒáá·áº ááŒáá·áºáá±áá¬ážáá±á¬ ááá±á¬ááºá á®áá¬áá¬áá áºáá¯ááŒá áºááŒá®áž ááŒá®ážáá¬ážáá±á¬ microservice âservice meshâ áááá¯áá¬áá»á¬áž á¡ááœáẠáá®ááá¯ááºážáá¯ááºáá¬ážááá·áº áááºááœááºáá±ážáááºá áºáá¬ážááŸáá·áº âuniversal data planeâ áááºážááŒá áºáááºá áááºážááá¯áááºáá®ážáá±á¬á¡áá«ááœáẠNGINXá HAProxyá hardware load balancers ááŸáá·áº cloud load balancers áá²á·ááá¯á·áá±á¬ áá¬áá¬áá»á¬áž ááœá¶á·ááŒáá¯ážááá¯ážáááºáá¬á ááºá¡ááœááºáž ááŒá áºáá±á«áºáá¬áá±á¬ ááŒá¿áá¬áá»á¬ážá¡ááœáẠááŒá±ááŸááºážáá»ááºáá»á¬ážááᯠááá·áºááœááºážá ááºážá á¬ážáá²á·áááºá Envoy ááẠá¡ááá®áá±ážááŸááºážáá áºáá¯á á®ááŸáá·áºá¡áá° áá¯ááºáá±á¬ááºááŒá®áž ááááºáá±á¬ááºážáááœá²ááŒá¬ážáá² áá¯á¶áá¯ááºáá±á¬ááºááá¯ááºá áœááºážááᯠáá±ážáá±á¬ááºááẠááœááºáááºááᯠááá¯ááºáá±á¬áºáááºá á¡ááŒá±áá¶á¡áá±á¬ááºá¡á¡á¯á¶áá áºáá¯ááŸá áááºáá±á¬ááºááŸá¯á¡ááœá¬ážá¡áá¬á¡á¬ážáá¯á¶ážááẠEnvoy mesh ááŸáááá·áº á á®ážáááºážáá¬áá±á¬á¡áá«á áááááºáááºážááŒáá·áºááŸá¯ááá¯ááºááŸá¯á á¡áá¯á¶ážá á¯á¶á áœááºážáá±á¬ááºáááºááᯠáá»áááºááŸááᬠáá®ážááŒá¬ážáááºáá±áá¬áá áºáá¯ááœáẠá¡ááááá¯ááºáá±á¬ááºááá¯ááºá áœááºážááᯠááá·áºááœááºážááŒááºážááŒáá·áº ááŒá¿áá¬á§áááá¬áá»á¬ážááᯠááŒááºáá±á¬ááºááẠááœááºáá°áá¬áááºá
á¡ááœááºá·á¡áááºáž
- áá¯ááºáááºážá ááºááŒááºá áááá¯áá¬- á¡áá°ážááá¯ááºá á¬ážááŸááºááẠRAM ááá¬áá¡áááºážáááºááᯠáá°áá±á¬ááºááá·áº ááá¯ááºááá¯ááºáá«ááŸááá±á¬á á áœááºážáá±á¬ááºáááºááŒáá·áº áá¬áá¬áá áºáá¯ááŒá áºáááºá áááºážááẠáááºááá·áº application language ááá¯á·ááá¯áẠframework ááŸáá·áºáááᯠááœá²áááºá¡áá¯ááºáá¯ááºáááºá
- http/2 ááŸáá·áº grpc áá¶á·ááá¯ážááŸá¯- á¡áá°ážááá¯ááºá á¬ážááŸááºááœáẠá¡áááºááŸáá·áºá¡ááœááºáá»áááºáááºááŸá¯á¡ááœáẠááááááºážá á¬áž http/2 ááŸáá·áº grpc áá¶á·ááá¯ážááŸá¯ááŸááááºá áááºážááẠhttp/1.1 á០http/2 á¡áá ááœáá·áºáááºážááŒááºáá¬áá±á¬ ááá±á¬ááºá á®áá áºáá¯ááŒá áºáááºá
- á¡ááá·áºááŒáá·áº Load Balancing- á¡áá°ážááá¯ááºá á¬ážááŸááºááẠá¡ááá¯á¡áá»á±á¬ááºááŒááºá ááºážááŒááºážá ááœááºážáááºááŒááºáá±á¬ááºááŒááºážá ááá¹áá¬áá¯á¶ážááá¯ááºáá¬ááŸá¯ááºážááá·áºáááºááŒááºážá áá±á¬ááºážááá¯áá»áẠá¡ááááºáá±ážááŒááºážá áá±áááá¯ááºáᬠáá¯ááºáááºáá»áááºááœááºáá»áŸá¬ áá»áááºááŸáááŒááºáž á áááºááŒáá·áº á¡ááá·áºááŒáá·áº áááºáá»áááºááœááºáá»áŸá¬ááᯠáá¶á·ááá¯ážáá±ážáá«áááºá
- Configuration Management API- áá¶ááááºááẠáááºáááœá²á·á ááºážáá¯á¶ááᯠá¡ááºááá¯ááºá¡á¬ážááá¯áẠá á®áá¶ááá·áºááœá²áááºá¡ááœáẠááá¯ááºáá¬áá±á¬ API ááᯠáá¶á·ááá¯ážáá±ážáá«áááºá
- ááŒáá·áºááŸá¯ááá¯ááºááŸá¯- L7 á¡ááœá¬ážá¡áá¬ááᯠáááºááŸáá¯ááºážá áœá¬ ááŒáá·áºááŸá¯ááá¯ááºááŸá¯á ááŒáá·áºáá±ááŸá¯ ááŒá±áá¬áá¶ááŒááºážááŸáá·áº mongodbá dynamodb ááŸáá·áº á¡ááŒá¬ážáá±á¬ á¡ááá®áá±ážááŸááºážáá»á¬ážá áœá¬á ááŒáá·áºáá±ááŸá¯ ááŒá±áá¬áá¶ááŒááºážá¡ááœáẠáá°áááºážáá¶á·ááá¯ážááŸá¯á
á¡ááá·áº 1 â á¥ááᬠNGINX Config
á€áá¬ááºááœáŸááºážááẠá¡áá°ážáááºáá®ážáá¬ážáá±á¬ááá¯ááºááᯠá¡áá¯á¶ážááŒá¯áááºá 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 ááœá²á·á ááºážááŸá¯áá¯á¶á á¶áá»á¬ážááẠáá¯á¶ááŸááºá¡á¬ážááŒáá·áº á¡áááá¡áá»ááºáá¯á¶ážáá»ááºáá«ááŸááááº-
- NGINX áá¬áá¬á ááŸááºáááºážááœá²á·á ááºážáá¯á¶ááŸáá·áº Gzip áá¯ááºáá±á¬ááºáá»ááºááᯠááŒááºáááºáááºááŸááºááŒááºážá á€áááºááᯠááá á¹á áááºááá¯ááºážááœáẠáá áºááá¹áá¬áá¯á¶ážá áááºááŸááºáááºá
- á¡áááºááŸááºáᶠáá±á¬ááºážááá¯ááŸá¯áá»á¬ážááᯠáááºáá¶ááẠNGINX ááᯠááŒááºáááºáááºááŸááºááŒááºážá one.example.com port 8080 ááœááº
- áá áºááŸááºáááºáá±áá¬ááᯠáááºááŸááºááŒááºážá URL á ááá°áá®áá±á¬ á¡á áááºá¡ááá¯ááºážáá»á¬ážá¡ááœáẠáááºážááŒá±á¬ááºážáá»á¬ážááᯠááá¯ááºááœááºáááºážá
ááœá²á·á ááºážááŸá¯á¡á¬ážáá¯á¶ážááᯠEnvoy Proxy ááœáẠáááºáá±á¬ááºááŸá¯ááŸááááºááá¯ááºáá«á á¡áá»áá¯á·áá±á¬áááºáááºáá»á¬ážááᯠááẠconfigure áá¯ááºáááºáááá¯á¡ááºáá«á Envoy Proxy ááŸááááºá áá±á¬á·á¡áá»áá¯ážá¡á á¬ážáá±ážáá»áá¯ážNGINX á០áá¶á·ááá¯ážáá±ážáá±á¬ á¡ááŒá±áá¶á¡áá±á¬ááºá¡áŠáá»á¬ážááᯠáá¶á·ááá¯ážáá±ážáááºá á¡áááá¡áá»ááºááŸá¬-
- áá¬ážáá±á¬ááºáá°áá»á¬áž- Envoy Proxy ááẠáááºáá¬áá±á¬ áá±á¬ááºážááá¯áá»ááºáá»á¬ážááᯠáááºááá¯á·áááºáá¶ááŒá±á¬ááºáž áá¯á¶ážááŒááºáááºá Envoy Proxy ááẠáááºááŸáááœáẠTCP á¡ááŒá±áᶠáá¬ážáá±á¬ááºáá°áá»á¬ážááá¯áᬠáá¶á·ááá¯ážáá±ážáááºá áá»áááºáááºááŸá¯áá áºáá¯áááºáá±á¬ááºááŒá®ážáááºááŸáá·áº áááºážááᯠáá¯ááºáá±á¬ááºáááºá¡ááœáẠá á áºáá¯ááºááŸá¯á¡á á¯áá áºáá¯ááá¯á· áá±ážááá¯á·áááºá
- á á áºáá¯ááºááŸá¯áá»á¬áž- áááºážááá¯á·ááẠá¡áááºááŸáá·áºá¡ááœááºáá±áá¬ááᯠá á®áá¶áá±á¬ááºááœááºááá¯ááºáá±á¬ ááá¯ááºááá¯ááºážáááºáá±á¬ááºááŸá¯áá áºáá¯á áá áºá áááºáá áºááá¯ááºážááŒá áºáááºá á€áá¯ááºáá±á¬ááºáá»ááºááœáẠáá¯á¶ážá áœá²áá°áᶠááá±ážááá¯á·áá® áá±áá¬ááᯠáá»á¯á¶á·áá±ážááá·áº Gzip áá²á·ááá¯á·áá±á¬ á á áºáá¯ááºááŸá¯áá»á¬áž áá«áááºáááºá
- Routers áá»á¬áž- áááºážááá¯á·ááẠá¡á á¯á¡áá±ážáá áºáá¯á¡ááŒá ẠáááºááŸááºáá¬ážáá±á¬ ááá¯á¡ááºáá±á¬ áŠážáááºáá¬ááá¯á· á¡ááœá¬ážá¡áá¬ááᯠáá±ážááá¯á·áááºá
- á¡á á¯á¡ááœá²á·áá»á¬áž- áááºážááá¯á·ááẠá¡ááœá¬ážá¡áá¬ááŸáá·áº ááœá²á·á ááºážááŸá¯ááá¯ááºáᬠááá·áºáááºáá±á¬ááºáá»á¬ážá¡ááœáẠá¡áá¯á¶ážááŸááºááᯠáááºááŸááºáááºá
áá®ážááŒá¬áž NGINX ááœá²á·á ááºážááŸá¯áá¯á¶á á¶ááŸáá·áº ááá¯ááºáá®ááẠEnvoy Proxy ááœá²á·á ááºážááŸá¯áá¯á¶á á¶ááᯠáááºáá®ážááẠá€á¡á áááºá¡ááá¯ááºážáá±ážáá¯ááᯠáá»áœááºá¯ááºááá¯á· á¡áá¯á¶ážááŒá¯áá«áááºá Envoy ááááºááŸááºážáá»ááºááŸá¬ APIs áá»á¬ážááŸáá·áº dynamic configuration áá»á¬ážááŒáá·áºá¡áá¯ááºáá¯ááºáááºááŒá áºáááºá á€ááá á¹á ááœááºá á¡ááŒá±áá¶ááœá²á·á ááºážááŸá¯áá¯á¶á á¶ááẠNGINX á០áááºááŒáááºáá±á¬á áá¬á·ááºáá¯ááºáááºáááºáá»á¬ážááᯠá¡áá¯á¶ážááŒá¯áááºááŒá áºáááºá
á¡ááá·áº 2 - NGINX ááœá²á·á ááºážááŸá¯áá¯á¶á á¶
áááá¥á®ážáá¯á¶ážá¡á ááá»á¡ááá¯áá»áž nginx.conf Configure áá¯ááºáááºááá¯á¡ááºáá±á¬ NGINX á¡ááœááºážááá¯ááºážá¡áá»áá¯á·ááᯠáááºááŸááºáááºá
á¡áá¯ááºááá¬ážáá»áááºáááºááŸá¯áá»á¬áž
á¡á±á¬ááºáá«ááœá²á·á ááºážáá¯á¶ááẠá¡áá¯ááºááá¬áž áá¯ááºáááºážá ááºáá»á¬ážááŸáá·áº áá»áááºáááºááŸá¯á¡áá±á¡ááœááºááᯠáá¯á¶ážááŒááºáá±ážáá«áááºá áááºážááẠNGINX ááẠáááºááá¯á¡á¬ážááŒáá·áºáá®ááẠáááºáá²á·ááá¯á· á¡ááá¯ááºážá¡áá¬ááᯠááœáŸááºááŒáááºá
worker_processes 2;
events {
worker_connections 2000;
}
Envoy Proxy ááẠáááºážáááºážá¡áá»áá¯ážáá»áá¯ážááŒáá·áº á¡áá¯ááºá¡ááœá¬ážá¡áá¬áá»á¬ážááŸáá·áº áá»áááºáááºááŸá¯áá»á¬ážááᯠá á®áá¶ááá·áºááœá²áááºá
Envoy ááẠá áá áºááŸá hardware thread áá áºáá¯á á®á¡ááœáẠworker thread áá áºáá¯ááᯠáááºáá®ážáááºá á¡áá¯ááºááá¬ážáá»ááºáá»áŸááºáá áºáá¯á á®ááẠááááºááá¯á·ááŒááºážááá¯ááºáá±á¬ ááŒá áºáááºááœááºážáááºáá áºáá¯ááᯠáá¯ááºáá±á¬ááºáááºá
- áá¬ážáá±á¬ááºáá°ááá¯ááºáž áá¬ážáá±á¬ááºáááºá
- áá»áááºáááºááŸá¯á¡áá áºáá»á¬ážááᯠáááºáá¶ááŒááºážá
- áá»áááºáááºááŸá¯á¡ááœáẠá á áºáá¯ááºááŸá¯á¡á á¯áá áºáᯠáááºáá®ážááŒááºážá
- áá»áááºáááºááŸá¯áááºáááºážáá áºáá»áŸá±á¬áẠI/O áá¯ááºáá±á¬ááºáá»ááºá¡á¬ážáá¯á¶ážááᯠáá¯ááºáá±á¬ááºáá«á
áááºááá·áºáá»áááºáááºááŸá¯áá¯ááºáá±á¬ááºááŒááºážá¡á¬ážáá¯á¶ážááᯠá¡áá¯ááºááá¬ážáá»ááºááŸá±á¬ááºááŸá¯ááœáẠáá¯á¶ážáá¯á¶ážáá»á¬ážáá»á¬áž ááá¯ááºááœááºáá±á¬ááºááœááºáá«áááºá
Envoy ááŸá á¡áá¯ááºááá¬ážáá»ááºáá»áŸááºáá áºáá¯á á®á¡ááœáẠáá»áááºáááºááŸá¯áá±áááºáá áºáᯠááŸááááºá ááá¯á·ááŒá±á¬áá·áº HTTP/2 áá»áááºáááºááŸá¯áá±á«ááºážá á¯áá»á¬ážááẠáá áºáá»áááºáááºážááœáẠááŒááºá host áá áºáá¯á á®á¡ááœáẠáá»áááºáááºááŸá¯áá áºáá¯áᬠááŒá¯áá¯ááºáá±ážáááºá á¡áááºá á¡áá¯ááºááá¬ážááá¯ááºážáá±ážáá¯ááŸááá«á áááºááŒáááºáá±á¬á¡ááŒá±á¡áá±ááœáẠááŒááºá host áá áºáá¯áá»áŸáẠHTTP/2 áá»áááºáááºááŸá¯áá±ážáá¯ááŸááááºááŒá áºáááºá á¡áá¬á¡á¬ážáá¯á¶ážááᯠá¡áá¯ááºááá¬ážáá»ááºáá»áŸááºáá áºáá¯áááºážááœáẠáá¬ážááŸáááŒááºážááŒáá·áºá áá¯ááºá¡á¬ážáá¯á¶ážáá®ážáá«ážááẠááŒáá¯ážáá áºáá»á±á¬ááºážáááºážáá«ááŸáááá²á·ááá¯á· ááááºááá¯á·ááŒááºážáááŸááá² áá±ážáá¬ážááá¯ááºáááºá á¡áá¯ááºááá¬áž ááá¯ááºážáá»á¬ážááᯠááá¯á¡ááºáááºáááºááá¯á ááœá²áá±áá¬ážáá«áá áááºážááẠáááºááá¯áá®ááᯠááŒá¯ááºážáá®ážááŒááºážááá¯á· áŠážáááºá á±áᬠidle áá»áááºáááºááŸá¯ á¡áá»á¬ážá¡ááŒá¬ážááᯠáááºáá®ážáᬠáá±áá°ážáááºááá¯á· ááŒááºááá¯á·ááá·áº á¡ááŒáááºá¡áá±á¡ááœááºááᯠáá»áŸá±á¬á·áá»ááá¯ááºáááºá
ááá¯ááá¯ááááŸáááá¯áá«áááœá¬ážáá±á¬ááºááŒáá·áºááŸá¯
HTTP ááœá²á·á ááºážááŸá¯
á¡á±á¬ááºáá« NGINX ááœá²á·á ááºážááŸá¯ááááºááá¯á·ááŒááºážááẠHTTP áááºáááºáá»á¬ážááᯠáááºááŸááºáááº-
- áááºááᯠmime á¡áá»áá¯ážá¡á á¬ážááœá±ááᯠáá¶á·ááá¯ážáá±ážáá²á
- áá¯á¶áá± á¡áá»áááºáá¯ááºáá¯á¶ážááŸá¯áá»á¬áž
- Gzip ááœá²á·á ááºážááŸá¯
áá±á¬ááºá០ááœá±ážááœá±ážáá±ážááá·áº Envoy Proxy ááŸá¬ filters ááœá±áá¯á¶ážááŒá®áž áá®á¡áá»ááºááœá±ááᯠá áááºááŒáá¯ááºááŒááºáááºááá¯ááºáá«áááºá
á¡ááá·áº 3 - Server Configuration
HTTP configuration block ááœááºá NGINX configuration ááẠport 8080 ááœáẠáá¬ážáá±á¬ááºáááºááŸáá·áº domain áá»á¬ážá¡ááœáẠáááºáá¬áá±á¬ áá±á¬ááºážááá¯ááŸá¯áá»á¬ážááᯠáá¯á¶á·ááŒááºááẠáááºááŸááºáááºá one.example.com О www.one.example.com.
server {
listen 8080;
server_name one.example.com www.one.example.com;
Envoy á¡ááœááºážááœáẠáááºážááᯠListeners á០ááááºážáá»á¯ááºáá¬ážáááºá
á¡áá°ážááá¯ááºá á¬ážááŸááº
Envoy Proxy ááŒáá·áº á áááºááŒááºážá á¡áá±ážááŒá®ážáá¯á¶áž ááá¹áááŸá¬ áááºá áá¬ážáá±á¬ááºáá°áá»á¬ážááᯠáááºááŸááºááŒááºáž ááŒá áºáááºá Envoy instance ááᯠáááºáááºáá²á·ááá¯á· áá¯ááºáá±á¬ááºááá¯ááŒá±á¬ááºáž áá±á¬áºááŒááá·áº configuration file áá áºáá¯ááᯠáááºáá®ážááẠááá¯á¡ááºáá«áááºá
á¡á±á¬ááºáá«á¡ááá¯á¡ááœá¬ááẠáá¬ážáááºáá°á¡áá áºááᯠáááºáá®ážááŒá®áž áááºážááᯠááááºáááºáž 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;
}
Envoy ááœáẠFilters á á€ááá¯á·áá¯ááºáá±á¬ááºáááºá
áá¶áááẠá á áºáá¯ááºááŸá¯áá»á¬áž
áááºááŒáááºááœá²á·á ááºážááŸá¯áá áºáá¯á¡ááœááºá á á áºáá¯ááºááŸá¯áá»á¬ážááẠá¡áááºáá±á¬ááºážááá¯ááŸá¯áá»á¬ážááᯠáááºááá¯á·áá¯ááºáá±á¬ááºááááºááᯠáá¯á¶ážááŒááºáááºá á€ááá á¹á ááœááºáá»áœááºá¯ááºááá¯á·áááºááá¯ááºáá®áá±á¬ filter áá»á¬ážááá¯áááºááŸááºáá¬ážáááºá áá¬áá¬_á¡áááºáá»á¬áž ááááºá¡ááá·áºááœááºá á¡áá»áá¯á·áá±á¬ ááá¯ááááºážáá»á¬ážááŸáá·áº áááºážááŒá±á¬ááºážáá»á¬ážááŸáá·áº ááá¯ááºáá®áá±á¬ á¡áááºáá±á¬ááºážááá¯ááŸá¯áá»á¬áž áá±á¬ááºááŸááá¬áá±á¬á¡áá«á áááºážááŒá±á¬ááºážááẠá¡á á¯á¡áá±ážááá¯á· áááºážááŒá±á¬ááºážááŒá±á¬ááºážááœá¬ážáá«áááºá áááºážááẠ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 ááœáẠbuilt-in filter áá
áºáá¯ááŒá
áºáááºá á¡ááŒá¬áž filter áá»á¬ážáá«áááºáááºá Redis, Mongo á¡áááá«ááº, ááẠTCP. á
á¬áááºážá¡ááŒáá·áºá¡á
á¯á¶ááᯠááœáẠááŒáá·áºááŸá¯ááá¯ááºáá«áááºá
á¡ááŒá¬áž áááºáá»áááºááœááºáá»áŸá¬ áá°áá«ááá»á¬ážá¡ááŒá±á¬ááºáž áá±á¬ááºáááºá¡áá»ááºá¡áááºáá»á¬ážá¡ááœáẠááœá¬ážáá±á¬ááºááŒáá·áºááŸá¯áá«á
á¡ááá·áº 5 - Proxy ááŸáá·áº Upstream Configuration
NGINX ááœááºá á¡áááºá á®ážááŒá±á¬ááºážááœá²á·á ááºážááŸá¯áá¯á¶á á¶ááẠá¡ááœá¬ážá¡áá¬ááá¯áá¯ááºáá±á¬ááºáá±ážááá·áº áá áºááŸááºáá¬áá¬á¡á á¯á¡áá±ážááᯠáááºááŸááºáááºá á€ááá á¹á ááœáẠá¡á á¯á¡ááœá²á· ááŸá áºáá¯ááᯠáá¬áááºáá±ážá¡ááºáá²á·áááºá
upstream targetCluster {
172.18.0.3:80;
172.18.0.4:80;
}
Envoy ááœááºá áááºážááᯠá¡á á¯á¡ááœá²á·áá»á¬ážááŒáá·áº á á®áá¶ááá·áºááœá²áááºá
á¡áá°ážááá¯ááºá á¬ážááŸáẠááá±áá¬áááº
á¡áááºááá¯ááºážáá®áá»áŸááŒááºážááᯠá¡á á¯á¡ááœá²á·áá»á¬ážá¡ááŒá ẠáááºááŸááºáááºá á€ááá á¹á ááœááºá áá¬ááºá¡ááœá¬ážá¡áá¬ááá¯áááºážáá±á¬ááºááá·áºá¡áááºááŸááºáá»á¬ážááá¯áá±á¬áºáá¯ááºáá²á·áááºá á¡áá»áááºáá¯ááºááœá¬ážááŒááºážáá²á·ááá¯á·áá±á¬ host áá»á¬ážáááºáá±á¬ááºááŒááºážáááºážáááºážááᯠcluster configuration áá áºáá¯á¡ááŒá ẠáááºááŸááºáááºá áááºážááẠlatency ááŸáá·áº load balancing áá²á·ááá¯á·áá±á¬ ááá¹ááá»á¬ážááᯠááá¯ááá¯á¡áá±ážá áááºááááºážáá»á¯ááºááá¯ááºá á±áá«áááºá
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 ááááºá á¬áá áºáá¯á á®ááᯠá¡áááºáá±á á®ážááŒá±á¬ááºážá¡á á¯á¡áá±ážááœáẠáááá»ááŒááºáá¬ážáá±á¬ áááºáá¶áá±á¬ááºááœááºáá±ážáá°á¡ááŒá ẠáááºááŸááºáááºááŒá áºáááºá ááá¯ááá¯áááºááŸá¬ áá±á¬ááºážááá¯áá»ááºáá áºáá¯ááẠIP ááááºá á¬ááŸá áºáá¯ááᯠááŒááºáá±ážáááºááá¯áá«áá Envoy ááẠá¡á á¯á¡áá±ážááœáẠhost ááŸá áºáá¯ááŸááá±áááºáᯠáá°ááááºááŒá áºááŒá®áž ááŸá áºáá¯á áá¯á¶ážááẠáá»áŸááá±ááááºááŒá áºáááºá á¡áááºá áááºáá¶áá°á¡á¬áž ááááºá០áááºááŸá¬ážáá«áá Envoy ááẠáááºážááᯠáááŸááá±á¬á·áᯠáá°ááááºááŒá áºááŒá®áž áááºááŸááá»áááºáááºááŸá¯áá±á«ááºážá á¯áá»á¬ážá០á¡ááœá¬ážá¡áá¬áá»á¬ážááᯠááœá²áá¯ááºáááºááŒá áºáááºá
ááá¯ááá¯ááááŸáááá¯áá«áááŒáá·áºáá«
á¡ááá·áº 6 â ááŸááºáááºážáááºáá±á¬ááºááŒááºážááŸáá·áº á¡ááŸá¬ážáá»á¬áž
áá±á¬ááºáá¯á¶ážááœá²á·á ááºážáá¯á¶ááŸá¬ ááŸááºáá¯á¶áááºááŒááºáž ááŒá áºáááºá á¡ááŸá¬ážá¡ááœááºážááŸááºáááºážáá»á¬ážááᯠdisk ááá¯á·ááœááºážáá»ááá·áºá¡á á¬áž Envoy Proxy ááẠcloud-based áá»ááºážáááºááŸá¯ááá¯áá¶áá°áááºá á¡ááá®áá±ážááŸááºážááŸááºáááºážáá»á¬ážá¡á¬ážáá¯á¶ážááᯠoutput ááá¯á·áá¯ááºáá±ážáá«áááºá ááá О á á á.
á¡áá¯á¶ážááŒá¯áá°áá»á¬ážááẠáá±á¬ááºážááá¯ááŸá¯ááŒá¯áá¯ááºáá±á¬á¡áá«á áááºáá±á¬ááºááœáá·áºááŸááºáááºážáá»á¬ážááᯠá áááºááŒáá¯ááºááœá±ážáá»ááºááá¯ááºááŒá®áž áá¯á¶ááŸááºá¡á¬ážááŒáá·áº ááááºáá¬ážáááºá HTTP áá±á¬ááºážááá¯ááŸá¯áá»á¬ážá¡ááœáẠáááºáá±á¬ááºááœáá·áºááŸááºáááºážáá»á¬ážááᯠááœáá·áºáááºá ááœá²á·á ááºážááŸá¯áá¯á¶á á¶ááᯠááœáá·áºáá«á access_log HTTP áá»áááºáááºááŸá¯áááºáá±áá»á¬á¡ááœááºá ááẠá¡á ááŸááá²á· áááááᬠáá áºáá¯áá¯ááᯠááŒá áºá á±ááá¯ááºáá«áááºá áááááá¯á·ááá¯áẠááá·áºááá¯á¡ááºáá»ááºáá»á¬ážáá±á«áºáá°áááºá áá áºááºáá±á«áºááŸá ááá¯ááºáá áºáá¯á
á¡á±á¬ááºáá«ááœá²á·á ááºážáá¯á¶ááẠáááºáá±á¬ááºááœáá·áºááŸááºáááºážáá»á¬ážá¡á¬ážáá¯á¶ážááᯠááŒááºáááºááœáŸááºážáá±ážáá«áááºá ááá (áá¬áá¬ááŒááºáá°áááŸááºáá»áẠ- stdout ááẠdocker á¡ááœááºážááŸá envoy ááá¯á¡áá¯á¶ážááŒá¯ááẠááá¯á¡ááºáááºá 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 áá±á¬áºáááºááŒáá·áº áá¯ááºááá¯ááºáááºá json_formatá á¥ááá¬:
access_log:
- name: envoy.file_access_log
config:
path: "/dev/stdout"
json_format: {"protocol": "%PROTOCOL%", "duration": "%DURATION%", "request_method": "%REQ(:METHOD)%"}
Envoy Registration Methodology ááá¯ááºáᬠáá±á¬ááºáááºá¡áá»ááºá¡áááºáá»á¬ážá¡ááœááºá ááœá¬ážáá±á¬ááºááŒáá·áºááŸá¯áá«á
áá
áºááá¯ážáá¯ááºááŒááºážááẠEnvoy Proxy ááŸáá·áº áá¯ááºáá±á¬ááºááŒááºážá¡ááœáẠááá¯ážááœááºážááááŒááºááá¯ááºáá±á¬ áá
áºáá¯áááºážáá±á¬áááºážáááºážááá¯ááºáá«á áááºážááœáẠá¡ááá·áºááŒáá·áºááŒá±áá¬áá¶ááŒááºážááŸáá·áº ááá¯ááºážáá¬ááŸá¯á
áœááºážáááºáá»á¬ážáá«ááŸááááºá ááœááºááá¯ááá¯ááŸá¬ááœá±ááá¯ááºáá«áááºá
á¡ááá·áº 7 - á áááºáá«á
áááºááẠááᯠáááºáááœá²á·á ááºážáá¯á¶ááᯠNGINX á០Envoy Proxy ááá¯á· ááŒá±á¬ááºážááœáŸá±á·ááá¯ááºáá«ááŒá®á áá±á¬ááºáá¯á¶ážá¡ááá·áºááŸá¬ áááºážááá¯á ááºážáááºáááºá¡ááœáẠEnvoy Proxy á¥ááá¬áá áºáá¯ááœáá·áºáááºááŒá áºáááºá
á¡áá¯á¶ážááŒá¯áá°á¡ááŒá Ạáá¯ááºáá±á¬ááºáá«á
NGINX ááœá²á·á ááºážááŸá¯ááá¯ááºážáááááºááœáẠá¡áá¯á¶ážááŒá¯áá° www www; áá¯á¶ááŒá¯á¶áá±ážááá¯ážáááºáá±á¬ááºážááœááºáá¬á á±ááẠNGINX ááᯠá¡ááœáá·áºáá°ážáá¶áááºážáá±á¬á¡áá¯á¶ážááŒá¯áá°á¡ááŒá ẠáááºááŸááºáááºá
Envoy Proxy ááẠáá¯ááºáááºážá ááºáá áºáá¯ááᯠááá¯ááºááá¯ááºáá°á¡á¬áž á á®áá¶ááá·áºááœá²áááºá¡ááœáẠcloud-based áá»ááºážáááºááŸá¯áá áºáá¯ááᯠááá°áááºá áá»áœááºá¯ááºááá¯á·ááẠEnvoy Proxy ááᯠááœááºááááºáá¬áá áºáá¯ááŸáá áºááá·áº áá¯ááºáá±á¬ááºáá±á¬á¡áá«á á¡ááœáá·áºáá°ážáá¶áááºážáá±á¬ á¡áá¯á¶ážááŒá¯áá°á¡á¬áž áááºááŸááºááá¯ááºáááºá
Envoy Proxy ááá¯ááœáá·áºáá±áá«áááºá
á¡á±á¬ááºáá« command ááẠhost ááŸá Docker container ááŸáááá·áº Envoy Proxy ááᯠrun áááá·áºáááºá ဠcommand ááẠEnvoy á¡á¬áž port 80 ááœáẠá¡áááºáá±á¬ááºážááá¯ááŸá¯áá»á¬ážááᯠáá¬ážáááºááá¯ááºá á±áá«áááºá ááá¯á·áá¬ááœááºá áá¬ážáááºáá°ááœá²á·á ááºážáá¯á¶ááœáẠáááºááŸááºáá¬ážááá·áºá¡ááá¯ááºáž Envoy Proxy ááẠport 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 ááœáẠáá±á¬ááºážááá¯áá»ááºá¡ááœáẠáááá¯ááºáá±á¬áá±áá¬áá»á¬áž áááŸááá«á á¡á±á¬ááºáá« command ááẠEnvoy á¡ááœáẠáááºááŸááºáá¬ážáá±á¬ ááœá²á·á ááºážááŸá¯áá¯á¶á á¶ááŸáá·áº ááá¯ááºáá®áá±á¬ HTTP áááºáá±á¬ááºááŸá¯áá»á¬áž á á®ážáá®ážáá»á¬ážááᯠá áááºáá«áááºá
docker run -d katacoda/docker-http-server; docker run -d katacoda/docker-http-server;
áááŸáááá¯ááºáá±á¬áááºáá±á¬ááºááŸá¯áá»á¬ážááŸáá·áºá¡áá° Envoy ááẠáááºážááŠážáááºáá¬ááá¯á· á¡ááœá¬ážá¡áá¬ááᯠá¡á±á¬ááºááŒááºá áœá¬ proxy áá¯ááºááá¯ááºáááºááŒá áºáááºá
curl -H "Host: one.example.com" localhost -i
Docker ááœááºááááºáá¬ááẠáá±á¬ááºážááá¯áá»ááºááᯠáá±á¬ááºááœááºáá±ážááŒá±á¬ááºáž ááœáŸááºááŒááá·áº áá¯á¶á·ááŒááºáá»ááºááᯠáááºááœá±á·ááá«áááºá Envoy Proxy ááŸááºáááºážáá»á¬ážááœáẠáááºáá±á¬ááºá¡áá¯á¶ážááŒá¯ááá¯ááºááá·áº á á¬ááŒá±á¬ááºážá¡ááœááºááá¯áááºáž ááœá±á·ááŒááºááá«áááºá
áá±á¬ááºááẠHTTP áá¯á¶á·ááŒááºááŸá¯ áá±á«ááºážá á®ážáá»á¬áž
á¡ááŸááºááááºáá±á¬ááºážááá¯ááŸá¯á áá¯á¶á·ááŒááºááŸá¯áá±á«ááºážá á®ážáá»á¬ážááœáẠáá±á¬ááºááẠHTTP áá±á«ááºážá á®ážáá»á¬ážááᯠáááºááœá±á·ááá«áááºá áá±á«ááºážá á®ážááẠáá±á¬ááºážááá¯áá»ááºááᯠáá¯ááºáá±á¬ááºáá±ááá·áº á¡áááºáá±á á®ážááŒá±á¬ááºáž áááºáá¶áá±á¬ááºááœááºáá±ážááá·áº á¡áá»áááºááᯠááŒááááºá áá®áá®á áá¹ááá·áºáá»á¬ážááŒáá·áº áá±á¬áºááŒáááºá áá¯á¶ážá áœá²áá°ááẠááœááºááẠlatency ááŸáá·áº ááŸáá¯ááºážááŸááºáá«á áááºáá±á¬ááºááŸá¯á¡áá»áááºááᯠáá¯á¶ážááŒááºááá¯áá«á áááºážááẠá¡áá¯á¶ážáááºáááºá
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 áááºáááºááŒááºážá¡ááœáẠáááºážááœáŸááºáá»ááºáá»á¬ážááᯠáááºááá¯ááºáá±á«áºááœáẠááœá±á·ááŸáááá¯ááºáá«áááºá
áá¯á¶ááŸááºá¡á¬ážááŒáá·áºá rpm ááœáẠsystemd service config áááŸááá«á
systemd áááºáá±á¬ááºááŸá¯ 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 Proxy ááẠáááºááŒáááºáá±á¬á¡ááŒá±á¬ááºážá¡áá¬ááᯠáá¶á·ááá¯ážááá¬ážáá«á ááá¯á·ááŒá±á¬áá·áºá á¡ááºá¹áá«áááºááᯠáá²áá±ážááá¯ááºáá°-
á
á¬áááºážááœááºážá¡áá¯á¶ážááŒá¯áá°áá»á¬ážáᬠá
á
áºáááºážááœáẠáá«áááºááá¯ááºáá«áááºá
á€ááá¯á·á áºááẠááá·áºá¡á¬áž á¡áá°ážááá¯ááºá á¬ážááŸááºááá±á¬ááºá á®ááᯠááá·áºááœááºážááŒá®áž á ááºážáááºááẠá¡á¬ážáá±ážáá«ááá¬ážá
-
áá¯ááºáá²á·
-
á¡áááºáá°áá»áŸá
á¡áá¯á¶ážááŒá¯áá° 75 áŠáž áá²áá±ážáá²á·áááºá á¡áá¯á¶ážááŒá¯áá° 18 ááŸá±á¬ááºáá±áá²á·áá«áááºá
source: www.habr.com