เบชเบฐเบเบฒเบเบเบต, Habr! เบเปเบฒโเบเบฐโเปเบเบปเปเบฒโเบเปเบฒโเปเบญเบปเบฒโเบเบงเบฒเบกโเบชเบปเบโเปเบโเบเบญเบโเบเปเบฒเบโเบเบฒเบโเปเบโเบเบฒโเบชเบฒโเบเบญเบโเบเบฒเบโเบเบญเบโเปเบเปโ:
Envoy เปเบเบฑเบเปเบเบตเบเปเบงเบตเบเบฃเบฑเบญเบเบเบตเบเบตเปเปเบเบเบขเบฒเบเบเบฐเบชเบดเบเบเบดเบเบฒเบเบชเบนเบ (เบเบฝเบเปเบ C ++) เบญเบญเบเปเบเบเบกเบฒเบชเปเบฒเบฅเบฑเบเบเบฒเบเบเปเบฅเบดเบเบฒเบเบชเปเบงเบเบเบธเบเบเบปเบเปเบฅเบฐเบเปเบฒเบฎเปเบญเบเบชเบฐเบซเบกเบฑเบ, เบกเบฑเบเบเบฑเบเปเบเบฑเบเบฅเบปเบเปเบกเบเบฒเบเบชเบทเปเบชเบฒเบเปเบฅเบฐ "เบเบปเบเบเปเปเบกเบนเบเบเบปเปเบงเปเบ" เบเบตเปเบเบทเบเบญเบญเบเปเบเบเบกเบฒเบชเปเบฒเบฅเบฑเบเบชเบฐเบเบฒเบเบฑเบเบเบฐเบเบฐเบเปเบฒ "เบเบฒเบซเบเปเบฒเบเบเบฒเบเบเปเบฅเบดเบเบฒเบ" เบเบฐเบซเบเบฒเบเปเบซเบเปเบเบญเบ microservice. เปเบกเบทเปเบญเบชเปเบฒเบเบกเบฑเบ, เบเบฒเบเปเบเปเปเบเบเบฑเบเบซเบฒเบเบตเปเปเบเบตเบเบเบทเปเบเปเบเบฅเบฐเบซเบงเปเบฒเบเบเบฒเบเบเบฑเบเบเบฐเบเบฒเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบเปเบเบฑเปเบ NGINX, HAProxy, hardware load balancers เปเบฅเบฐ cloud load balancers เปเบเปเบเบทเบเบเบดเบเบฒเบฅเบฐเบเบฒ. Envoy เปเบฎเบฑเบเบงเบฝเบเบเบฝเบเบเบนเปเบเบฑเบเปเบเปเบฅเบฐเบเปเบฒเบฎเปเบญเบเบชเบฐเบซเบกเบฑเบเปเบฅเบฐ abstracts เปเบเบทเบญเบเปเบฒเบเปเบเบทเปเบญเบชเบฐเบซเบเบญเบเบเบฒเบเปเบฎเบฑเบเบงเบฝเบเบเบปเปเบงเปเบเปเบเบเบเปเปเบเปเบฒเบเบถเบเปเบเบดเบเปเบงเบเบตเปเบ. เปเบกเบทเปเบญเบเบฒเบเบเบฐเบฅเบฒเบเบญเบเบเปเบฅเบดเบเบฒเบเบเบฑเบเปเบปเบเปเบเปเบเบเบชเปเบฒเบเบเบทเปเบเบเบฒเบเปเบซเบผเบเปเบฒเบเบเบฒเปเปเบฒเบ Envoy, เบกเบฑเบเบเบฐเบเบฒเบเปเบเบฑเบเปเบฅเบทเปเบญเบเบเปเบฒเบเบเบตเปเบเบฐเปเบเบดเปเบเปเบซเบฑเบเบเบทเปเบเบเบตเปเบเบฑเบเบซเบฒเบเปเบงเบเบเบฒเบเบชเบฑเบเปเบเบเบเบฒเบเบเบตเปเบชเบญเบเบเปเบญเบ, เบเบฑเบเบเบฐเบชเบดเบเบเบดเบเบฒเบเปเบเบเบฅเบงเบก, เปเบฅเบฐเปเบเบตเปเบกเบเบฒเบเปเบฎเบฑเบเบงเบฝเบเบซเบผเบฑเบเปเบเบชเบฐเบเบฒเบเบเบตเปเบชเบฐเปเบเบฒเบฐ.
เบเบธเบเบเบฐเบชเบปเบกเบเบฑเบ
- เบชเบฐเบเบฒเบเบฑเบเบเบฐเบเบฐเบเบณเบเบตเปเบเปเปเบชเบณเปเบฅเบฑเบเบเบฐเบเบงเบเบเบฒเบ: เบเบนเบเปเบกเปเบเปเบเบตเบเปเบงเบตเบเบตเปเบกเบตเบเบฐเบชเบดเบเบเบดเบเบฒเบเบชเบนเบ, เบเบฑเบเบเบธ RAM เปเปเบญเบเปเบถเปเบ. เบกเบฑเบเปเบฎเบฑเบเบงเบฝเบเบฎเปเบงเบกเบเบฑเบเบเบฑเบเบเบฒเบชเบฒเบเปเบฒเบฎเปเบญเบเบชเบฐเบซเบกเบฑเบเบซเบผเบทเบเบญเบ.
- http/2 เปเบฅเบฐ grpc เบชเบฐเบซเบเบฑเบเบชเบฐเบซเบเบนเบ: envoy เบกเบตเบเบฑเปเบเบเปเบฒเบญเบดเบ http/2 เปเบฅเบฐเบชเบฐเบซเบเบฑเบเบชเบฐเบซเบเบนเบ grpc เบชเปเบฒเบฅเบฑเบเบเบฒเบเปเบเบทเปเบญเบกเบเปเปเบเบฒเปเบเบปเปเบฒเปเบฅเบฐเบเบฒเบญเบญเบ. เบเบตเปเปเบกเปเบเบเบปเบงเปเบเบเปเบเปเบเปเบชเบเบฒเบ http/1.1 เบซเบฒ http/2.
- เบเบฒเบเบเบธเปเบเบเปเบฝเบเบเบฒเบเปเบซเบผเบเปเบเบเบเบดเปเบชเบ: เบเบนเบเบชเบฐเบซเบเบฑเบเบชเบฐเบซเบเบนเบเบเบธเบเบเบฐเบชเบปเบกเบเบฑเบเบเบฒเบเบเบธเปเบเบเปเบฝเบเบเบฒเบเปเบซเบผเบเปเบเบเบเบดเปเบชเบเบฅเบงเบกเบเบฑเบเบเบฒเบ retries เบญเบฑเบเบเบฐเปเบเบกเบฑเบ, เบเบฒเบเบเปเบฒเบฅเบฒเบเบฅเบฐเบเบปเบเบเปเบญเบเปเบชเป, เบเบฒเบเบเปเบฒเบเบฑเบเบญเบฑเบเบเบฒเบเบปเปเบงเปเบฅเบ, เบเบฒเบเบฎเปเบญเบเบเปเปเบซเปเปเบเบปเบฒ, เบเบฒเบเบเบธเปเบเบเปเบฝเบเบเบฒเบเปเบซเบผเบเปเบเบเบเปเบญเบเบเบดเปเบ, เปเบฅเบฐเบญเบทเปเบเป.
- API เบเบฒเบโเบเบธเปเบกโเบเบญเบโเบเบฒเบโเบเบฑเปเบโเบเปเบฒ: envoy เปเบซเป API เบเบตเปโเปเบเบฑเปเบกโเปเบเบโเบชเปเบฒโเบฅเบฑเบโเบเบฒเบโเบเบธเปเบกโเบเบญเบโเบเบฒเบโเบเบฑเปเบโเบเปเบฒโเบเบญเบโเบเปเบฒเบโเปเบเบโเปเบเบทเปเบญเบโเปเบซเบง.
- เบเบฒเบเบชเบฑเบเปเบเบเบเบฒเบ: เบเบฒเบเบชเบฑเบเปเบเบเบขเปเบฒเบเปเบฅเบดเบเปเบเบดเปเบเบเบญเบเบเบฒเบเบเบฐเบฅเบฒเบเบญเบ L7, เบเบฒเบเบชเบฐเบซเบเบฑเบเบชเบฐเบซเบเบนเบเบเบทเปเบเปเบกเบทเบญเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเบเบดเบเบเบฒเบกเบเบฒเบเปเบเบเบขเบฒเบเปเบฅเบฐเบเบฒเบเบชเบฑเบเปเบเบเบเบฒเบเบเบญเบ mongodb, dynamodb เปเบฅเบฐเบเปเบฒเบฎเปเบญเบเบชเบฐเบซเบกเบฑเบเบญเบทเปเบเปเบเปเบฒเบเบงเบเบซเบผเบฒเบ.
เบเบฑเปเบเบเบญเบเบเบต 1 โ เบเบปเบงเบขเปเบฒเบ NGINX Config
เบชเบฐเบเบฃเบดเบเบเบตเปเปเบเปเปเบเบฅเปเบเบตเปเบชเปเบฒเบเบเบถเปเบเปเบเบเบชเบฐเปเบเบฒเบฐ 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, เปเบฅเบฐเบเปเบฒเบเบเปเปเบเบณเปเบเบฑเบเบเปเบญเบเบเบณเบเบปเบเบเปเบฒเบเบฒเบเบญเบฑเบ. เบเบปเบงเปเบเบเบเบนเบเบกเบต เบชเบตเปโเบเบฐโเปเบเบโเบเบตเปโเบชเปเบฒโเบเบฑเบโ, เปเบเบดเปเบเบชเบฐเบซเบเบฑเบเบชเบฐเบซเบเบนเบเปเบเบเบชเปเบฒเบเบเบทเปเบเบเบฒเบเบเบตเปเบชเบฐเปเบซเบเบตเปเบเบ NGINX. เบซเบผเบฑเบเปเบกเปเบ:
- เบเบนเปเบเบฑเบ: เบเบงเบเปเบเบปเบฒเปเบเบปเปเบฒเบเปเบฒเบเบปเบเบงเบดเบเบตเบเบฒเบ Envoy Proxy เบเบญเบกเบฎเบฑเบเบเปเบฒเบฎเปเบญเบเบเปเบเบตเปเปเบเบปเปเบฒเบกเบฒ. เบเบฐเบเบธเบเบฑเบเบเบตเป Envoy Proxy เบฎเบญเบเบฎเบฑเบเบเบนเปเบเบฑเบเบเบตเปเบญเบตเบเปเบชเป TCP เปเบเบปเปเบฒเบเบฑเปเบ. เปเบกเบทเปเบญเบเบฒเบเปเบเบทเปเบญเบกเบเปเปเบเบทเบเบชเปเบฒเบเบเบฑเปเบเบเบถเปเบ, เบกเบฑเบเบเบทเบเบชเบปเปเบเปเบเบซเบฒเบเบธเบเบเบญเบเบเบปเบงเบเบญเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเบเบธเบเปเบเปเบ.
- เบเบฒเบเบเบฑเปเบเบเบญเบ: เบเบงเบเบกเบฑเบเปเบเบฑเบเบชเปเบงเบเบซเบเบถเปเบเบเบญเบเบชเบฐเบเบฒเบเบฑเบเบเบฐเบเบฐเบเปเบฒเบเปเปเบเบตเปเบชเบฒเบกเบฒเบเบเบฐเบกเบงเบเบเบปเบเบเปเปเบกเบนเบเบเบฒเปเบเบปเปเบฒเปเบฅเบฐเบเบฒเบญเบญเบ. เบซเบเปเบฒเบเบตเปเบเบตเปเบเบฐเบเบญเบเบกเบตเบเบฒเบเบเบฑเปเบเบเบญเบเปเบเบฑเปเบ Gzip, เปเบเบดเปเบเบเบตเบเบญเบฑเบเบเปเปเบกเบนเบเบเปเบญเบเบเบตเปเบเบฐเบชเบปเปเบเปเบซเปเบฅเบนเบเบเปเบฒ.
- เปเบฃเบปเบฒเปเบเบต: เบเบงเบเปเบเบปเบฒเบชเบปเปเบเบเบฒเบเบเบฐเบฅเบฒเบเบญเบเปเบเบซเบฒเบเบธเบเบซเบกเบฒเบเบเบฒเบเบเบฒเบเบเบตเปเบเปเบญเบเบเบฒเบ, เบเปเบฒเบเบปเบเปเบเบฑเบเบเบธเปเบก.
- เบเบธเปเบก: เบเบงเบเปเบเบปเบฒเบเปเบฒเบเบปเบเบเบธเบเบชเบดเปเบเบชเบธเบเบชเปเบฒเบฅเบฑเบเบเบปเบงเบเปเบฒเบเบปเบเบเบฒเบเบเบฒเบฅเบฐเบเบญเบเปเบฅเบฐเบเบฒเบเบเบฑเปเบเบเปเบฒ.
เบเบงเบเปเบฎเบปเบฒเบเบฐเปเบเปเบชเบตเปเบญเบปเบเบเบฐเบเบญเบเปเบซเบผเบปเปเบฒเบเบตเปเปเบเบทเปเบญเบชเปเบฒเบเบเบฒเบเบเบฑเปเบเบเปเบฒเบเบปเบงเปเบเบ Envoy เปเบเบทเปเบญเปเบซเปเบเบปเบเบเบฑเบเบเบฒเบเบเบฑเปเบเบเปเบฒ NGINX เบชเบฐเปเบเบฒเบฐ. เปเบเบปเปเบฒเปเบฒเบเบเบญเบ Envoy เปเบกเปเบเปเบเบทเปเบญเปเบฎเบฑเบเบงเบฝเบเบเบฑเบ APIs เปเบฅเบฐเบเบฒเบเบเบฑเปเบเบเปเบฒเปเบเบเปเบเบทเปเบญเบเปเบซเบง. เปเบเบเปเบฅเบฐเบเบตเบเบตเป, เบเบฒเบเบเบฑเปเบเบเปเบฒเบเบทเปเบเบเบฒเบเบเบฐเปเบเปเบเบฒเบเบเบฑเปเบเบเปเบฒเปเบเบเบเบปเบเบเบตเป, เบฅเบฐเบซเบฑเบเปเบเบเบเบฒเบ NGINX.
เบเบฑเปเบเบเบญเบเบเบต 2 - เบเบฒเบเบเบฑเปเบเบเปเบฒ NGINX
เบชเปเบงเบ เบเบณ เบญเบดเบ nginx.conf เบเปเบฒเบเบปเบเบเบฒเบ NGINX เบเบฒเบเปเบเบเบตเปเบเปเบญเบเปเบเปเบฎเบฑเบเบเบฒเบเบเบฑเปเบเบเปเบฒ.
เบเบฒเบเปเบเบทเปเบญเบกเบเปเปเบเบฐเบเบฑเบเบเบฒเบ
เบเบฒเบเบเบฑเปเบเบเปเบฒเบเปเบฒเบเบฅเบธเปเบกเบเบตเปเบเปเบฒเบเบปเบเบเปเบฒเบเบงเบเบเบญเบเบเบฐเบเบงเบเบเบฒเบเบเบญเบเบเบฐเบเบฑเบเบเบฒเบเปเบฅเบฐเบเบฒเบเปเบเบทเปเบญเบกเบเปเป. เบเบตเปเบเบตเปเบเบญเบเบงเบดเบเบตเบเบฒเบ NGINX เบเบฐเบเบฐเบซเบเบฒเบเปเบเบทเปเบญเบเบญเบเบชเบฐเบซเบเบญเบเบเบงเบฒเบกเบเปเบญเบเบเบฒเบ.
worker_processes 2;
events {
worker_connections 2000;
}
Envoy Proxy เบเบฑเบเบเบฒเบเบเบฐเบเบงเบเบเบฒเบเปเบฎเบฑเบเบงเบฝเบ เปเบฅเบฐเบเบฒเบเปเบเบทเปเบญเบกเบเปเปเบเปเบงเบเบงเบดเบเบตเบเปเบฒเบเป.
Envoy เบชเปเบฒเบเบเบฐเบเบนเปเบเบปเบเบเบฒเบเบชเปเบฒเบฅเบฑเบเปเบเปเบฅเบฐเบซเบปเบงเบเปเปเบฎเบฒเบเปเบงเปเบเบฅเบฐเบเบปเบ. เปเบเปเบฅเบฐเบเบฐเบเบนเปเบเบญเบเบเบฐเบเบฑเบเบเบฒเบเบเบฐเบเบดเบเบฑเบ loop เปเบซเบเบเบฒเบเบเบตเปเบเปเปเบกเบตเบเบฒเบเบเบฑเบเบเบงเบฒเบเบเบตเปเบฎเบฑเบเบเบดเบเบเบญเบ
- เบเบฑเบโเปเบเปโเบฅเบฐโเบเบปเบ
- เบเบญเบกเบฎเบฑเบเบเบฒเบเปเบเบทเปเบญเบกเบเปเปเปเบซเบกเป
- เบเบฒเบเบชเปเบฒเบเบเบธเบเบเบญเบเบเบปเบงเบเบญเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเปเบเบทเปเบญเบกเบเปเป
- เบเบฐเบกเบงเบเบเบปเบเบเบฒเบเบเปเบฒเปเบเบตเบเบเบฒเบ I/O เบเบฑเบเปเบปเบเปเบเบเปเบงเบเบญเบฒเบเบธเบเบญเบเบเบฒเบเปเบเบทเปเบญเบกเบเปเป.
เบเบฒเบเบเบฐเบกเบงเบเบเบปเบเบเบฒเบเปเบเบทเปเบญเบกเบเปเปเบเปเปเปเบเบเบฑเบเบซเบกเบปเบเปเบกเปเบเบเบฑเบเบเบฒเบเบเบฑเบเบซเบกเบปเบเปเบเบเบฐเบเบนเปเบเบญเบเบเบฐเบเบฑเบเบเบฒเบ, เบฅเบงเบกเบเบฑเบเบเบถเบเบเบดเบเปเบฒเบเบฒเบเบชเบปเปเบเบเปเปเปเบเป.
เบชเปเบฒเบฅเบฑเบเปเบเปเบฅเบฐเบเบฐเบเบนเปเบเบฐเบเบฑเบเบเบฒเบเปเบ Envoy, เบกเบตเบชเบฐเบเบธเบเปเบเบตเบเบฒเบเปเบเบทเปเบญเบกเบเปเป. เบเบฑเปเบเบเบฑเปเบ HTTP/2 เปเบเบทเปเบญเบกเบเปเปเปเบเบทเปเบญเบกเบเปเปเบเบฝเบเปเบเปเบซเบเบถเปเบเบเบฒเบเปเบเบทเปเบญเบกเบเปเปเบเปเปเปเบฎเบเบเบฒเบเบเบญเบเปเบเปเบงเบฅเบฒเบเบฝเบง, เบเปเบฒเบกเบตเบชเบตเป threads เบเบญเบเบเบฐเบเบฑเบเบเบฒเบ, เบกเบฑเบเบเบฐเบกเบตเบชเบตเปเบเบฒเบเปเบเบทเปเบญเบกเบเปเป HTTP/2 เบเปเปเปเบฎเบเบเบฒเบเบเบญเบเบขเบนเปเปเบเบชเบฐเบเบฒเบเบฐเบเบตเปเบซเบกเบฑเปเบเบเบปเบ. เปเบเบเบเบฒเบเบฎเบฑเบเบชเบฒเบเบธเบเบชเบดเปเบเบเบธเบเบขเปเบฒเบเบขเบนเปเปเบเบเบฐเบเบนเปเบเบปเบเบเบฝเบง, เปเบเบทเบญเบเบฅเบฐเบซเบฑเบเบเบฑเบเบซเบกเบปเบเบชเบฒเบกเบฒเบเบเบทเบเบเบฝเบเปเบเบเบเปเปเบกเบตเบเบฒเบเบชเบฐเบเบฑเบ, เบเบทเบเบฑเบเบงเปเบฒเบกเบฑเบเปเบเบฑเบเบเบฐเบเบนเปเบเบฝเบง. เบเปเบฒเบเบฐเบเบนเปเบเบปเบเบเบฒเบเบเบทเบเบเบฑเบเบชเบฑเบเบซเบผเบฒเบเบเบงเปเบฒเบเบงเบฒเบกเบเปเบฒเปเบเบฑเบ, เบเบตเปเบชเบฒเบกเบฒเบเบเปเบฒเปเบเบชเบนเปเบเบงเบฒเบกเบเบปเบเบเปเบฒเบเบตเปเปเบชเบเปเบ, เบเบฒเบเบชเปเบฒเบเบเปเบฒเบเบงเบเบเบฒเบเปเบเบทเปเบญเบกเบเปเปเบเบตเปเบเปเปเบกเบตเบเบฐเปเบซเบเบ, เปเบฅเบฐเบเบฒเบเบซเบผเบธเบเบเปเบญเบเบเปเบฒเบเบงเบเปเบงเบฅเบฒเบเบตเปเปเบเบทเปเบญเบกเบเปเปเบเบฑเบเบเบทเบเปเบเบเปเบญเบเบชเบฐเบเบธเบเปเบเบต.
เบชเปเบฒเบฅเบฑเบเบเปเปเบกเบนเบเปเบเบตเปเบกเปเบเบตเบกเปเบเบขเปเบฝเบกเบขเบฒเบก
เบเบฒเบเบเบฑเปเบเบเปเบฒ HTTP
เบเบฑเบเบเบฒเบเบเบฑเปเบเบเปเบฒ NGINX เบเปเปเปเบเบเบตเปเบเปเบฒเบเบปเบเบเบฒเบเบเบฑเปเบเบเปเบฒ HTTP เปเบเบฑเปเบ:
- เบชเบดเปเบเบเบตเปเบเบฐเปเบเบ mime เปเบเปเบฎเบฑเบเบเบฒเบเบชเบฐเบซเบเบฑเบเบชเบฐเบซเบเบนเบ
- เปเบปเบเปเบงเบฅเบฒเปเบฅเบตเปเบกเบเบปเปเบ
- เบเบฒเบเบเบฑเปเบเบเปเบฒ 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 instance.
snippet เบเปเบฒเบเบฅเบธเปเบกเบเบตเปเบเบฐเบชเปเบฒเบเบเบนเปเบเบฑเบเปเบซเบกเปเปเบฅเบฐเบเบนเบเบกเบฑเบเบกเบฑเบเบเบฑเบเบเบญเบ 8080. เบเบฒเบเบเบฑเปเบเบเปเบฒเบเบญเบ Envoy Proxy เบงเปเบฒเบเบญเบเปเบเบเบตเปเบกเบฑเบเบเบงเบเบเบฐเบเบนเบเบกเบฑเบเบเบฑเบเบเปเบฒเบฎเปเบญเบเบเปเบเบฒเปเบเบปเปเบฒ.
Envoy Proxy เปเบเป notation YAML เบชเปเบฒเบฅเบฑเบเบเบฒเบเบเบฑเปเบเบเปเบฒเบเบญเบเบกเบฑเบ. เบชเปเบฒเบฅเบฑเบเบเบฒเบเปเบเบฐเบเปเบฒเบเปเบฝเบงเบเบฑเบ notation เบเบตเป, เปเบเบดเปเบเบเบตเปเบเบตเป
Copy to Editorstatic_resources:
listeners:
- name: listener_0
address:
socket_address: { address: 0.0.0.0, port_value: 8080 }
เบเปเปเบเปเบฒเปเบเบฑเบเบเปเบญเบเบเปเบฒเบเบปเบ server_name, เปเบเบทเปเบญเบเบเบฒเบเบเบปเบงเบเบญเบเบเบปเบงเปเบเบ Envoy เบเบฐเบเบฑเบเบเบฒเบเบเบฑเบเบชเบดเปเบเบเบตเป.
เบเบฑเปเบเบเบญเบเบเบต 4 - เบเบฒเบเบเบฑเปเบเบเปเบฒเบชเบฐเบเบฒเบเบเบตเป
เปเบกเบทเปเบญเบเปเบฒเบฎเปเบญเบเบเปเปเบเบปเปเบฒเบกเบฒเปเบ NGINX, เบเบฑเบเบชเบฐเบเบฒเบเบเบตเปเบเปเบฒเบเบปเบเบงเบดเบเบตเบเบฒเบเบเบธเบเปเบเปเบเปเบฅเบฐเบเปเบญเบเบเบตเปเบเบฐเบชเบปเปเบเบเบฒเบเบเบฐเบฅเบฒเบเบญเบ. เปเบเบเบดเปเบเบเปเปเปเบเบเบตเป, เบเบฒเบเบเบฐเบฅเบฒเบเบญเบเบเบฑเบเบซเบกเบปเบเปเบเบซเบฒเปเบงเบฑเบเปเบเบเปเปเบกเปเบเปเบญเบเปเบเบซเบฒเบเบปเปเบเบเปเปเบฒ (เบซเบกเบฒเบเปเบซเบเบเบญเบเบเบนเปเปเบเบเบฒเบชเบฒ: เบเปเปเบฒเปเบเบดเบเปเบกเปเบเบเบปเบเบเบฐเบเบดเปเบฅเปเบงเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบเบเบญเบเบเปเบฒเบฎเปเบญเบเบชเบฐเบซเบกเบฑเบ) เบเบธเปเบกเบเบตเปเบกเบตเบเบทเป. เบเบธเปเบกเปเบเบปเปเบฒเปเบฒเบ. เบเบธเปเบก upstream เบเปเบฒเบเบปเบ nodes เบเบตเปเบเบงเบเบเบฐเบเปเบฒเปเบเบตเบเบเบฒเบเบฎเปเบญเบเบเป. เบเบงเบเปเบฎเบปเบฒเบเบฐเบเบถเบเบชเบฒเบซเบฒเบฅเบทเบเปเบฝเบงเบเบฑเบเปเบฅเบทเปเบญเบเบเบตเปเปเบเบเบฑเปเบเบเบญเบเบเปเปเปเบ.
location / {
proxy_pass http://targetCluster/;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
เบขเบนเป Envoy, Filters เปเบฎเบฑเบเบชเบดเปเบเบเบตเป.
เบเบฒเบเบเบฑเปเบเบเบญเบเบเบนเบ
เบชเปเบฒเบฅเบฑเบเบเบฒเบเบเบฑเปเบเบเปเบฒเบเบปเบเบเบตเป, เบเบปเบงเบเบญเบเบเปเบฒเบเบปเบเบงเบดเบเบตเบเบฒเบเบเบฐเบกเบงเบเบเบปเบเบเปเบฒเบฎเปเบญเบเบเปเบเบตเปเปเบเบปเปเบฒเบกเบฒ. เปเบเบเปเบฅเบฐเบเบตเบเบตเปเบเบงเบเปเบฎเบปเบฒเบเปเบฒเบเบปเบเบเบปเบงเบเบญเบเบเบตเปเบเบปเบเบเบฑเบ server_names เปเบเบเบฑเปเบเบเบญเบเบเบตเปเบเปเบฒเบเบกเบฒ. เปเบกเบทเปเบญเบเปเบฒเบฎเปเบญเบเบเปเปเบเบปเปเบฒเบกเบฒเบเบตเปเบเบปเบเบเบฑเบเปเบเปเบกเบเปเบฅเบฐเปเบชเบฑเปเบเบเบฒเบเบเบตเปเปเบเปเบเบญเบ, เบเบฒเบเบเบฐเบฅเบฒเบเบญเบเปเบกเปเบเบเบทเบเบชเบปเปเบเปเบเบซเบฒเบเบธเปเบก. เบเบตเปเปเบกเปเบเบเบฝเบเปเบเบปเปเบฒเบเบฑเบเบเบฒเบเบเบฑเปเบเบเปเบฒเบฅเบธเปเบกเบชเบธเบเบเบญเบ 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_manage เปเบเบฑเบเบเบปเบงเบเบญเบเบเบตเปเบชเปเบฒเบเบเบถเปเบเปเบ Envoy Proxy. เบเบฒเบเบเบฑเปเบเบเบญเบเบญเบทเปเบเปเบเบฐเบเบญเบเบกเบต Redis, เบกเบปเบเปเบ, TCP. เบเปเบฒเบเบชเบฒเบกเบฒเบเบเบญเบเบซเบฒเบเบฑเบเบเบตเบฅเบฒเบเบเบทเปเปเบเบฑเบกเบเบตเป
เบชเปเบฒเบฅเบฑเบเบเปเปเบกเบนเบเปเบเบตเปเบกเปเบเบตเบกเบเปเบฝเบงเบเบฑเบเบเบฐเปเบเบเบฒเบเบเบฒเบเบเบธเปเบเบเปเบฝเบเบเบฒเบเปเบซเบผเบเบญเบทเปเบเป, เปเบเบขเปเบฝเบกเบขเบฒเบก
เบเบฑเปเบโเบเบญเบโเบเบต 5 - เบเบฒเบโเบเบฑเปเบโเบเปเบฒ Proxy เปเบฅเบฐ Upstream
เปเบ NGINX, เบเบฒเบเบเบฑเปเบเบเปเบฒ upstream เบเปเบฒเบเบปเบเบเบธเบเบเบญเบเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบเปเบเบปเปเบฒเบซเบกเบฒเบเบเบตเปเบเบฐเบเบฐเบกเบงเบเบเบปเบเบเบฒเบเบเบฐเบฅเบฒเบเบญเบ. เปเบเบเปเบฅเบฐเบเบตเบเบตเป, เบชเบญเบเบเบธเปเบกเปเบเปเบเบทเบเบกเบญเบเบซเบกเบฒเบ.
upstream targetCluster {
172.18.0.3:80;
172.18.0.4:80;
}
เปเบ Envoy, เบเบตเปเปเบกเปเบเบเบฒเบเบเบธเปเบกเบเบญเบเปเบเบเบเบธเปเบก.
เบเบธเปเบกเบเบนเบ
เบเปเบฒเบเบฝเบเปเบเบปเปเบฒเบเบปเปเบเบเปเบณเปเบกเปเบเบเบณเบเบปเบเปเบเบฑเบเบเบธเปเบก. เปเบเบเปเบฅเบฐเบเบตเบเบตเป, เปเบเบปเปเบฒเบเบฒเบเบเบตเปเบเบฐเบฎเบฑเบเปเบเปเบเบฒเบเบเบฐเบฅเบฒเบเบญเบเปเบเปเบเบทเบเบฅเบฐเบเบธ. เบงเบดเบเบตเบเบตเปเปเบฎเบเบเบทเบเปเบเบปเปเบฒเปเบเบดเบ, เปเบเบฑเปเบเบงเปเบฒเบซเบกเบปเบเปเบงเบฅเบฒ, เบเบทเบเบเปเบฒเบเบปเบเปเบเบฑเบเบเบฒเบเบเบฑเปเบเบเปเบฒเบเบธเปเบก. เบเบตเปเบญเบฐเบเบธเบเบฒเบเปเบซเปเบกเบตเบเบฒเบเบเบงเบเบเบธเบก granular เบซเบผเบฒเบเบเปเบฝเบงเบเบฑเบเบฅเบฑเบเบชเบฐเบเบฐเปเบเบฑเปเบ: latency เปเบฅเบฐเบเบฒเบเบเบธเปเบเบเปเบฝเบเบเบฒเบเปเบซเบผเบ.
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 เบเบฐเบขเปเบฒเบเบเปเปเปเบเบทเปเบญเบเปเบฅเบฐ asynchronously เปเบเปเปเบเปเบเบปเปเบฒเบซเบกเบฒเบ DNS เบเบตเปเบเปเบฒเบเบปเบเปเบงเป. เปเบเปเบฅเบฐเบเบตเปเบขเบนเป IP เบเบตเปเบชเบปเปเบเบเบทเบเบกเบฒเบเบฒเบเบเบปเบเปเบเปเบฎเบฑเบ DNS เบเบฐเบเบทเบเบเบดเบเบฒเบฅเบฐเบเบฒเปเบเบฑเบเปเบเบปเปเบฒเบเบฒเบเบเบตเปเบเบฑเบเปเบเบเบขเบนเปเปเบเบเบธเปเบกเบเบปเปเบเบเปเปเบฒ. เบเบตเปเบซเบกเบฒเบเบเบงเบฒเบกเบงเปเบฒเบเปเบฒเบเปเบฒเบฎเปเบญเบเบเปเบชเบปเปเบเบเบทเบเบชเบญเบเบเบตเปเบขเบนเป IP, Envoy เบเบฐเบชเบปเบกเบกเบธเบเบงเปเบฒเบกเบตเบชเบญเบเปเบฎเบเบขเบนเปเปเบเบเบธเปเบก, เปเบฅเบฐเบเบฑเบเบชเบญเบเบเบฐเบเปเบญเบเบเบทเบเปเบซเบฅเบเบชเบปเบกเบเบธเบ. เบเปเบฒเปเบฎเบชเบเบทเบเปเบเบเบเปเบฒเบเบญเบญเบเบเบฒเบเบเบปเบเปเบเปเบฎเบฑเบ, Envoy เบเบฐเบชเบปเบกเบกเบธเบเบงเปเบฒเบกเบฑเบเบเปเปเบกเบตเบเปเปเปเบเบญเบตเบเปเบฅเปเบงเปเบฅเบฐเบเบฐเบเบถเบเบเบฒเบเบเบฐเบฅเบฒเบเบญเบเบเบฒเบเบเบธเบเบเบฒเบเปเบเบทเปเบญเบกเบเปเปเบเบตเปเบกเบตเบขเบนเป.
เบชเปเบฒเบฅเบฑเบเบเปเปเบกเบนเบเปเบเบตเปเบกเปเบเบตเบกเปเบเบดเปเบ
เบเบฑเปเบโเบเบญเบโเบเบต 6 โ เปเบเบปเปเบฒโเบชเบนเปโเบฅเบฐโเบเบปเบโเปเบฅเบฐโเบเบงเบฒเบกโเบเบดเบโเบเบฒเบโ
เบเบฒเบเบเบฑเปเบเบเปเบฒเบชเบธเบเบเปเบฒเบเปเบกเปเบเบเบฒเบเบฅเบปเบเบเบฐเบเบฝเบ. เปเบเบเบเบตเปเบเบฐเบเบนเปเบเบฑเบเบเบถเบเบเบงเบฒเบกเบเบดเบเบเบฒเบเปเบเปเบชเปเปเบเปเบเบเบดเบ, Envoy Proxy เปเบเปเบงเบดเบเบตเบเบฒเบเบเบตเปเบญเบตเบเปเบชเปเบเบฅเบฒเบง. เบเบฑเบโเบเบถเบโเบเบญเบโเบเปเบฒโเบฎเปเบญเบโเบชเบฐโเบซเบกเบฑเบโเบเบฑเบโเบซเบกเบปเบโเปเบกเปเบโเบเบปเบโเบเบฐโเบฅเบดเบโเปเบเบทเปเบญโ stdout ะธ stderr.
เปเบกเบทเปเบญเบเบนเปเปเบเปเปเบฎเบฑเบเบเบฒเบเบฎเปเบญเบเบเป, เบเบฑเบเบเบถเบเบเบฒเบเปเบเบปเปเบฒเปเบเบดเบเปเบกเปเบเบเบฒเบเปเบฅเบทเบญเบเปเบฅเบฐเบเบดเบเบเบฒเบเปเบเปเบเบฒเบเปเบเบเบเปเบฒเปเบฅเบตเปเบกเบเบปเปเบ. เปเบเบทเปเบญเปเบเบตเบเปเบเปเบเบฑเบเบเบถเบเบเบฒเบเปเบเบปเปเบฒเปเบเบดเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเบฎเปเบญเบเบเป HTTP, เปเบเบตเบเปเบเปเบเบฒเบเบเบฑเปเบเบเปเบฒ access_log เบชเปเบฒเบฅเบฑเบเบเบปเบงเบเบฑเบเบเบฒเบเบเบฒเบเปเบเบทเปเบญเบกเบเปเป HTTP. เปเบชเบฑเปเบเบเบฒเบเบชเบฒเบกเบฒเบเปเบเบฑเบเบญเบธเบเบฐเบเบญเบเปเบเบฑเปเบ: stdout, เบซเบผเบทเปเบเบฅเปเปเบเปเบเปเบ, เบเบถเปเบเบเบฑเบเบเบงเบฒเบกเบเปเบญเบเบเบฒเบเบเบญเบเบเปเบฒเบ.
เบเบฒเบเบเบฑเปเบเบเปเบฒเบเปเปเปเบเบเบตเปเบเบฐเบเปเบฝเบเปเบชเบฑเปเบเบเบฒเบเบเบฑเบเบเบถเบเบเบฒเบเปเบเบปเปเบฒเปเบเบดเบเบเบฑเบเปเบปเบเปเบเบซเบฒ stdout (เบเบฑเบเบเบถเบเบเบญเบเบเบนเปเปเบ - stdout เบเปเบฒเปเบเบฑเบเบเปเบญเบเปเบเป envoy เบเบฒเบเปเบ docker. เบเปเบฒเปเบเปเปเบเบเบเปเปเบกเบต 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, เปเบเบขเปเบฝเบกเบขเบฒเบก
เบเบฒเบเบเบฑเบเปเบกเปเบเปเปเปเบกเปเบเบงเบดเบเบตเบเบฝเบงเบเบตเปเบเบฐเปเบเปเบฎเบฑเบเบเบงเบฒเบกเปเบเบปเปเบฒเปเบเปเบเบเบฒเบเปเบฎเบฑเบเบงเบฝเบเบเบฑเบ Envoy Proxy. เบกเบฑเบเบกเบตเบเบงเบฒเบกเบชเบฒเบกเบฒเบเปเบเบเบฒเบเบเบดเบเบเบฒเบกเปเบฅเบฐเบงเบฑเบเปเบเบเบเบฑเปเบเบชเบนเบเบเบตเปเบชเปเบฒเบเบเบถเปเบเปเบเบกเบฑเบ. เบเปเบฒเบเบชเบฒเบกเบฒเบเบเบญเบเบซเบฒเบเปเปเบกเบนเบเปเบเบตเปเบกเปเบเบตเบกเปเบเปเบเบตเป
เบเบฑเปเบเบเบญเบเบเบต 7 - เปเบเบตเบเบเบปเบง
เบเบฝเบงเบเบตเปเบเปเบฒเบเปเบเปเบเปเบฒเบเบเบฒเบเบเบฑเปเบเบเปเบฒเบเบญเบเบเปเบฒเบเบเบฒเบ NGINX เปเบเปเบเบฑเบ Envoy Proxy. เบเบฑเปเบเบเบญเบเบชเบธเบเบเปเบฒเบเปเบกเปเบเปเบเบทเปเบญเปเบเบตเบเบเบปเบงเบขเปเบฒเบ Envoy Proxy เปเบเบทเปเบญเบเบปเบเบชเบญเบเบกเบฑเบ.
เบเปเบฒเปเบเบตเบเบเบฒเบเปเบเบฑเบเบเบนเปเปเบเป
เบขเบนเปเปเบเบดเบเบชเบธเบเบเบญเบเปเบชเบฑเปเบเบเบฒเบเบเบฑเปเบเบเปเบฒ NGINX เบเบนเปเปเบเป www www; เบเปเบฒเบเบปเบเปเบซเปเบเปเบฒเปเบเบตเบเบเบฒเบ NGINX เปเบเบฑเบเบเบนเปเปเบเปเบชเบดเบเบเบดเบเบดเปเบชเบเบเปเปเบฒเปเบเบทเปเบญเบเบฑเบเบเบธเบเบเบงเบฒเบกเบเบญเบเปเบ.
Envoy Proxy เปเบเปเบงเบดเบเบตเบเบฒเบเบเบตเปเบญเบตเบเปเบชเปเบเบฅเบฒเบงเปเบเบทเปเบญเบเบฑเบเบเบฒเบเบงเปเบฒเปเบเปเบเบฑเบเปเบเบปเปเบฒเบเบญเบเบเบฐเบเบงเบเบเบฒเบ. เปเบกเบทเปเบญเบเบงเบเปเบฎเบปเบฒเปเบเบตเบเปเบเป Envoy Proxy เบเปเบฒเบเบเปเบญเบเบเบฑเบเบเบธ, เบเบงเบเปเบฎเบปเบฒเบชเบฒเบกเบฒเบเบฅเบฐเบเบธเบเบนเปเปเบเปเบเบตเปเบกเบตเบชเบดเบเบเบดเบเบดเปเบชเบเบเปเปเบฒ.
เปเบเบตเบเบเบปเบงเบเบปเบงเปเบเบ Envoy
เบเปเบฒเบชเบฑเปเบเบเปเบฒเบเบฅเบธเปเบกเบเบตเปเบเบฐเบเปเบฒเปเบเบตเบเบเบฒเบ Envoy Proxy เบเปเบฒเบ Docker container เบขเบนเปเปเบเปเบฎเบ. เบเปเบฒเบชเบฑเปเบเบเบตเปเปเบฎเบฑเบเปเบซเป 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 เบเปเปเปเบเบเบตเปเบญเบญเบเบเปเบฒเบฎเปเบญเบเบเปเบเบฑเบ host header เบเบตเปเบเปเบฒเบเบปเบเปเบงเปเปเบเบเบฒเบเบเบฑเปเบเบเปเบฒเบเบปเบงเปเบเบ.
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 container เปเบเบเปเบฒเปเบเบตเบเบเบฒเบเบเปเบฒเบฎเปเบญเบเบเป. เปเบเบเบฑเบเบเบถเบ 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 เบเปเปเบกเบตเบเบฒเบเบเบฑเปเบเบเปเบฒเบเปเบฅเบดเบเบฒเบเบฅเบฐเบเบปเบ.
เปเบเบตเปเบกเบเบฒเบเบเบฑเปเบเบเปเบฒเบฅเบฐเบเบปเบเบเบฒเบเบเปเบฅเบดเบเบฒเบ /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 เบเบนเปเปเบเปเบเบปเบ.
เปเบซเบผเปเบเบเปเปเบกเบนเบ: www.habr.com