แแแแแ แฏแแแ, แฐแแแ ! แแฅแแแแก แงแฃแ แแแฆแแแแก แแแฅแชแแ แแแกแขแแก แแแ แแแแแก:
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 แฌแงแแ แแก แแแแคแแแฃแ แแชแแ
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 8080 แแแ แขแแ.
- แกแแแแแแ แแแแแแ แแแแแก แแแงแแแแแ, แ แแแแ แฃแแแ แแแแฃแจแแแแแก แขแ แแคแแแ 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 แฅแแแแก แแฃแจแ แซแแคแก แกแแกแขแแแแก แแแแแแฃแแ แขแแฅแแแแแก แซแแคแแกแแแแก. แแแแแแฃแแ แแฃแจแ แแแแ แแฎแแ แชแแแแแแก แแ แแแแแแแแแแก แฆแแแแกแซแแแแแก แชแแแแก, แ แแแแแแช แแแกแฃแฎแแกแแแแแแแแ
- แแแแแแฃแแ แแกแแแแแแแก แแแกแแแแ
- แแฎแแแ แแแแจแแ แแแแก แแแฆแแแ
- แคแแแขแ แแแแก แแแแ แแแแก แจแแฅแแแ แแแแจแแ แแกแแแแก
- แแแแแฃแจแแแแ แงแแแแ I/O แแแแ แแชแแ แแแแจแแ แแก แแแแแ แแแ แแแแแก แแแแแแแแแแแจแ.
แงแแแแ แจแแแแแแแ แแแแจแแ แแก แแแแฃแจแแแแแ แแแแแแแแ แแฃแจแแแแแแ แแฃแจแ แซแแคแจแ, แแแแแกแแแแ แ แแแแแแแกแแแแ แแแแแก แฅแชแแแแก แฉแแแแแแ.
Envoy-แจแ แแแแแแฃแแ แแฃแจแ แซแแคแแกแแแแก แแ แแก แแแแจแแ แแก แแฃแแ. แแกแ แ แแ, HTTP/2 แแแแจแแ แแก แแฃแแ แแแงแแ แแแก แแฎแแแแ แแ แ แแแแจแแ แก แแแ แ แฐแแกแขแแ แแ แแแ แแฃแแแ, แแฃ แแแฎแ แแฃแจแ แแแแ แแฅแแแแ, แแฅแแแแ แแแฎแ HTTP/2 แแแแจแแ แ แแแแ แแแ แ แฐแแกแขแแ แกแขแแแแแฃแ แแแแแแแ แแแแแจแ. แงแแแแแคแ แแก แแ แ แแฃแจแ แซแแคแจแ แจแแแแฎแแแ, แแแแฅแแแก แงแแแแ แแแแ แจแแแซแแแแ แแแแฌแแ แแก แแแแแแแแแก แแแ แแจแ, แแแแฅแแก แแ แแ แแแแแแ แแงแแก. แแฃ แแแขแ แแฃแจแ แซแแคแแแ แแแแแแงแแคแ, แแแแ แ แกแแญแแ แแ, แแแแ แจแแแซแแแแ แแแแแแฌแแแแก แแแฎแกแแแ แแแแก แแแคแฃแญแแแ, แจแแฅแแแแก แฃแแแฅแแแแ แแแแจแแ แแแแก แแแแ แ แแแแแแแแ แแ แจแแแแชแแ แแก แแแแจแแ แแแแก แแฃแแจแ แแแแ แฃแแแแแก แ แแแแแแแแ.
แแแแแขแแแแแ แแแคแแ แแแชแแแกแแแแก แแฌแแแแ
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)%"}
แแแแแขแแแแแ แแแคแแ แแแชแแแกแแแแก แแแฉแแก แ แแแแกแขแ แแชแแแก แแแแแแแแแแแแก แจแแกแแฎแแ แแฌแแแแ
แจแแกแแแ แแ แแ แแก แแ แแแแแ แแ แแแ 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-แแก แแแงแแแแแแก แแแกแขแ แฃแฅแชแแ แจแแแแซแแแแ แแฎแแแแ แแแแแแแ แแแ
แแแแฃแแแกแฎแแแแแ, 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 แแแแคแแแฃแ แแชแแ.
แแ แกแแแแแก แขแแแแแ แแแแก แฉแแขแ แแแกแแแแแก แแ แแฅแกแแก แแแแแงแแแแแแ:
Envoy Proxy-แก แแ แแฅแแก แกแขแแขแแแฃแ แ แแแแขแแแขแแก แกแแ แแแกแแก แแฎแแ แแแญแแ แ. แแแแขแแ, แแแก แจแแฃแซแแแ แฎแแ แแแกแชแแก แคแฃแแฅแชแแแก:
แแแแแแแแฎแแแจแ แแแแแฌแแแแแแ แจแแฃแซแแแแ แแฎแแแแ แแแ แแแแกแขแ แแ แแแฃแ แแแแฎแแแ แแแแแแก.
แแ แแแกแขแแ แแแแแแแญแแ, แแแแแแกแขแแแแ แแ แแ แแแแแกแชแแแแ envoy proxy?
-
แแแแฎ
-
แแ แแ แแก
แแแกแชแ แฎแแ 75 แแแแฎแแแ แแแแแแ. 18-แแ แแแแฎแแแ แแแแแแ แแแแ แจแแแแแแ.
แฌแงแแ แ: www.habr.com