αα½ααααΈ α αΆα! αααα»αβααΌαβααΆαβα’αΆααααααβα’αααβαα
βααΎαβααΆαβααβααααβααβααΆαβαααααΆαβαααα
Envoy ααΊααΆαααΆαααΈαααααααΌααααΈα ααα αΆααααααΆαααααα·αααααΆαααααα (αααααααΆ C ++) ααααα ααΆα‘αΎααααααΆααααααΆαααα αα·ααααααα·ααΈααΈαα½αα ααΆααααΆα‘αΆααααα»αααααΆαααααα αα·α "ααααα αααα·ααααααααα" αααααααΌαααΆααα ααΆα‘αΎααααααΆααααααΆαααααααα "αααααΆαααααΆ" ααααΆαααΌα ααααΆαααα αα ααααααααΎαααΆ αααααααααΆαα αααααααα αΆαααααΎαα‘αΎαααα‘α»αααααααααΎα server ααΌα ααΆ NGINX, HAProxy, hardware load balancers αα·α cloud load balancers ααααΌαααΆααααααααα·α αΆαααΆα ααααααααααΎααΆααα½αααΆαα½αααΉααααααα·ααΈααΈαα½αα α αΎαα’ααΌααΈαααααΆαααΎααααΈαααααααΌααα»αααΆαααΌαα ααααα·ααα·αααΈαααα·ααΆα αα ααααααα ααΆα αααααααΆααααααΆααα’αααα αααα»αα αααααΆαα ααΆααααααααα αΌαααΆαααααααΆα Envoy ααΆααΉαααΆααααα½ααααα»αααΆαααΎαααΎαααααααααα αΆααΆαα½αααΉαααΆαααααααααΆααααΆαα ααααα½αααααΎαααΆαααΆααααΌα αα·ααααααααα»αααΆαααααΌααα αααα»αααΈααΆααααΆααααΆαααα½αα
αααααααα·ααα
- ααααΆαααααααααααα ααααΎαααΆαα ααααααααΊααΆαααΆαααΈααααααααααΎαααΆαααααααα½αα―α αα·αααααΎαααΆααααααααααα RAM αα·α αα½α α ααΆααααΎαααΆααααααααΆααααΆαα½αααΆααΆαααααα·ααΈ α¬αααααααααααΆαα½αα
- ααΆαααΆαααα http/2 αα·α grpcα ααααααααΆαααΆαααΆαααα http/2 αα·α grpc ααααΆααααααΌααααααΆααααΆααααααΆααα αΌααα·αα ααα αααααΊααΆααααΌααααΈααααΆααΈ http/1.1 αα http/2 α
- αα»αααααΆαααααα»αααααα·ααααααα ααααααααΆαααααα»αααΆααα»αααααΆαααααα»αααααα·αααααα αα½αααΆααααΆαααααΆααΆαα‘αΎααα·ααααααααααααααααα· ααΆαααααααααααααααΆαα ααΆααααααα’ααααΆααα ααΆαααΆααααααααααααΎ αα»αααααΆαααΆααααα»ααααααααα
- Configuration Management APIα αααααααααααααΌα 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 αα α αΎαα’ααααα·αα αΆαααΆα αααααααα ααΆαααααααααα½αα ααα½αααα αααααα·αααααΌααααΈααΆα ααααααααααΆαααα ααα½ααα½ααααααΆααααα αααααΆαα ααΆααααααααααααΌαααααααααααα NGINX α ααααΌαααΊα
- α’αααααααΆααα αα½ααααααααααΈααααααα Envoy Proxy ααα½αααααααΎα αΌαα Envoy Proxy αα αα α»ααααααααΆααααααα’αααααααΆαααααααΆαααΌαααααΆαααΎ TCP ααα»αααααα αα ααααααααΆααααααΆααααααΌαααΆααααααΎαα‘αΎα ααΆααααΌαααΆααααααΌααα αααα»αααααααααααααΆααααααΎαααΆαα
- αααααα αα½αααΆααΆααααααα½αααααααΆααααααααααααααααα’αΆα ααααΎαααΆααα·ααααααα αΌααα·αα ααα αα»αααΆαααααα½ααααα αΌααααααααΌα ααΆ Gzip ααααααα αΆαααα·αααααααα»αααααααααΌαααΆαα αααΆαααΈααααααα
- αααααααα αα½ααααααααΌαα ααΆα ααααα ααΆααααααα αααααααΌαααΆα ααααααααααΆα αααααα
- α ααααα: αα½ααααααααα ααα»α αααα αααααααΆαααααΆαααΆααααααα ααΆα ααα αα·αααΆαααααααα ααΆααααααααα
ααΎαααΉαααααΎαααΆαααΆαα»ααΆαααα½ααααααΎααααΈαααααΎαααΆαααααααα ααΆααααααααααααΌααααΈ Envoy ααΎααααΈααααΌααααααΆαααααααα ααΆαααααααα NGINX ααΆααααΆαααα½αα ααααα ααααααααααααΊααΎααααΈααααΎααΆαααΆαα½α APIs αα·αααΆαααααααα ααΆααααααααααΆαααααα αααα»αααααΈααα ααΆαααααααα ααΆααααααααααΌαααααΆαααΉαααααΎααΆααααααααΌαααΉα αα·ααα·αα·ααααααΈ NGINX α
ααα αΆαααΈ 2 - ααΆαααααααα ααΆαααααααα NGINX
αααααααααΌα nginx.conf ααααααααααααΆααααα»α NGINX αα½αα ααα½ααααααααΌαααααααα ααΆααααααααα
ααααΆαααααααααααα
ααΆαααααααα ααΆααααααααααΆαααααααααααα ααα½αααααΎαααΆα αα·αααΆααααααΆααααααααααααα ααααααα αΆαααΈααααααα NGINX ααΉαααααΎααΆαααααααΆαααΎααααΈααααααααααΌαααΆαα
worker_processes 2;
events {
worker_connections 2000;
}
Envoy Proxy αααααααααααα αΌαααΆαααΆα αα·αααΆααααααΆααααΆααα·ααΈααααααααααΆα
αααααααααααΎααααααααα‘αΆααααααααααααΆαααααααααα‘αΆααααααααΉαααΈαα½αααα ααΎααααααααα αααααααα‘αΆααααααααα·αα½ααααααα·ααααα·ααααα·ααα»αααααΉαααα·ααΆαααααααα·αααΆααΆαααααααα½ααα»αααααΌα
- ααααΆααα’αααααααΆααααααΆααα
- ααΆαααα½αααααΆααααααΆααααααΈα
- ααΆααααααΎααααα»αααααααααααααΆααααΆααααααΆαα
- ααααΎαααΆαααααα·ααααα·ααΆα I/O ααΆααα’αααααα»αα’αα‘α»ααααααααΆααααααΆααα
ααααΎαααΆααααααΆαααααααααααααΆααα’ααααααΌαααΆααααααααααααΆαααααα»ααα αααα»ααααααααα‘αΆααααααα αα½αααΆααα₯αα·ααΆαααααααΌαααααα
αααααΆαααααααααα‘αΆααααααααα·αα½αααα αααα»α Envoy ααΆαα’αΆααααααΆααα ααΌα αααα ααααα»αααΆααααααΆαα HTTP/2 αααααΎαααΆααααααΆαααααα½ααααααΆαααααΆαααΈαααΆααααα αα ααααααα½α ααααα·αααΎααΆααααααααα‘αΆααααααα 2 αααααΉαααΆαααΆααααααΆαα HTTP/XNUMX α ααα½ααα½ααααα»ααα½ααααΆαααΈαααΆααααα αααα»αααααΆαααΆααααα·αααΆαα ααααααααΆα’αααΈαααααααααΆααα αααα»ααααααααα‘αΆααααααααααα½α ααΌαααααΎαααααΆααα’ααα’αΆα ααααΌαααΆαααααααααααααΆαααΆααααααααΆαα ααΌα ααΆααααα·αααΎααΆααααΌαααΆααααα αΌααααα½αααααα ααααα·αααΎαααααααα‘αΆαααααααα αααΎαααααΌαααΆααααα ααααΎαααΈααΆαα αΆαααΆα α ααΆα’αΆα ααΆαα±ααααΆαααααααΆαα αα αΆα αααααΎαα ααα½αα αααΎαααααΆααααααΆααααααα αα·αααΆαααααααα ααα½ααααααααΆααααααΆααααααΌαααΆααααααααα α’αΆααα·αα
αααααΆααααααααΆαααααααααΌαα
αΌαααΎα
ααΆαααααααα ααΆαααααααα 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 Proxy ααΊααΆααααααα’αααααααΆααααααα’αααα α’αααβααααΌαβαααααΎαβα―αααΆαβαααααβαα ααΆααααααααβαααβαα·αααααΆβα’αααΈβααααβαααβα’αααβα ααβααααΎαααΆαβ Envoy instanceα
α’αααααααΆααααααααΉααααααΎαα’αααααααΆααααααΈ α αΎαα αααΆαα α ααα 8080α ααΆαααααααα ααΆααααααααααααΆαα Envoy Proxy ααΆααΎα αααααΆαααααΆαα½αα ααααααΆααααααΎα αΌαα
ααααΌααααΈαααααα·αααααΎαααααΆαααααΆαα YAML αααααΆααααΆαααααααα
ααΆααααααααααααααΆα αααααΆααααΆαααααΆαα’αααΈαααααΆαααα ααΌαααΎααα
ααΈααα
Copy to Editorstatic_resources:
listeners:
- name: listener_0
address:
socket_address: { address: 0.0.0.0, port_value: 8080 }
αα·αα αΆαααΆα ααααααααα server_name α αΆααααΆααααΈ Envoy Proxy filters ααΉααααααααΆαααΆα
ααα αΆαααΈ 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 ααααΎααααααα
ααααααααααα
αααααΆααααΆαααααααα ααΆαααααααααα·αα·αααα ααααααααααααΈααααααααΎαααΆαααααΎα αΌαα αααα»αααααΈαααααΎααααααααααααααααααΌαααααΆα 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
ααααα αααααα.http_connection_manager ααΊααΆααααααααααααΆααααααΆαα½ααα
αααα»α Envoy Proxyα ααααααααααααααα½αααΆα Redis, ααα»αα αααα, 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 ααααααααΉααααααααααααΆαααααα DNS αααααΆααααααΆααααΆαααααααααΆαα αα·αα’ααααΆαα α’αΆααααααΆα IP ααΈαα½αααααααΆααααα‘ααααΈαααααα DNS ααΉαααααΌαααΆαα αΆαααα»αααΆααΆαααΆαααΈαα αααΆααααΆαααα αααα»αα αααααααΆαααΎα αααααΆααααααΆααααα·αααΎααααΎαααα‘ααα’αΆααααααΆα IP ααΈα αααααα·αααΉαααααααααΆααΆααααΆαααΈαααΈααα αααα»αα ααααα α αΎαααΆααααΈαααααΌααααααα»αααΆααα»αααααΆαα ααααα·αααΎαααΆαααΈααα½αααααΌαααΆαααα ααααΈαααααα ααααααααΉαααααααααΆααΆαααααΆααααα αΎα α αΎαααΉαααΆαα ααΆα αααΈαααα»ααααααΆαααααααΆαααααΆααα
αααααΆααααααααΆαααααααααΌαααΎα
ααα αΆαααΈ 6 - ααΆαα αΌαααααΎαααααα ααα» αα·αααα α»α
ααΆααααααα α»ααααααααΊααΆαα α»ααααααα αααα½αα±ααααΆααα»ααααααα ααα»ααα α»ααα ααΆα ααααΌααααΈ Envoy ααααΎαα·ααΈααΆαααααααα’ααααΎαααα αααααα ααα»αααααα·ααΈααΆααα’ααααααΌαααΆααααα αααα stdout ΠΈ stderr.
αα αααα’αααααααΎααααΆααααααΎααΆαααααΎαα»α αααααα ααα»α αΌαααααΎααΊααααα α α·ααα αα·ααα·αααΆαααααΆαααΎαα ααΎααααΈααΎαααααΎαααΆααααααα ααα»αααααΆααααααΎ HTTP ααΌαααΎαααΆαααααα access_log αααααΆαααααααα·ααΈαααααααααααΆααααααΆαα HTTP α ααααΌαα’αΆα ααΆα§αααααααΌα ααΆ stdoutα¬α―αααΆααα ααΎααΆα α’αΆαααααααΎαααααΌαααΆαααααα’αααα
ααΆαααααααα ααΆααααααααααΆααααααααΉαααααΌααα·ααααααα ααα»α αΌαααααΎαααΆαααΆααα’αααα stdout (ααααααααααΆααααααα’ααααααααα - stdout αααααΌαα±ααααααΎαααααα·ααα ααΆααααα»α 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 Proxy αααααα ααΆβααΆαβαααααααΆαβααΆαβααΆαβααααα·αβααααα αα·αβααααααβαααβααΆαβαααααΎαβα‘αΎαβαα
βαααα»αβααΆα α’αααα’αΆα
αααααααααααααααα
ααα αΆαααΈ 7 - α αΆααααααΎα
α₯α‘αΌααααα’αααααΆαααααΆααααααΌαααΆααααααααααα’αααααΈ NGINX αα Envoy Proxyα ααα αΆαα α»ααααααααΊααααΌαααΎαααααΎαααΆα Envoy Proxy instance ααΎααααΈααΆαααααααΆα
ααααΎαααΆαααΆα’αααααααΎααααΆαα
αα αααααααΆαααΎαααααααΆααααααααα ααΆαααααααα NGINX α’αααααααΎααααΆαα www www; αααααΆααααΎααααΈααααΎαααΆα NGINX ααΆα’αααααααΎααααΆαααααααΆααα·αααα·ααΆα ααΎααααΈαααααΎααα»ααααα·ααΆαα
αααααα·αααααΌααααΈαααα·ααΈααΆαααααααα’ααααΎαααααΎααααΈαααααααααα’ααααααααΆααα αΆααααααΎαααΆαα αα ααααααααΎαααααΎαααΆα Envoy Proxy ααΆαααααα»αααΊααα ααΎαα’αΆα αααααΆααα’αααααααΎααααΆαααααααΆααα·αααα·ααΆαα
ααΎαααααΎαααΆαααααΌααααΈαααααα
ααΆααααααααΆααΆααααααααΉαααααΎαααΆα Envoy Proxy ααΆαααα Docker container αα ααΎαααΆαααΈαα ααΆααααααααΆααααααααα±αα Envoy ααΌααααααααΆααααα»αααΆαααααΆααααααΎα αΌααα ααΎα ααα 80α αααααΆαααΆαααΆααααα ααΌα αααααΆααααααΆαααα αααα»αααΆαααααααα ααΆααααααααα’αααααααΆαα ααααΌααααΈ Envoy ααααΆαααααααΆααα ααΆα αα αΌααα ααΎα ααα 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. αααβααΊβαααβααΆαβααβααΆαβαααααΆααβα ααααβαα·αβααααΎαααΆαβαα·αβαα·αβα’αΆα βααααΎβααΆαβα ααΌα αααα αααααα·αααααΌααααΈαα·αααΆααα·ααα αααααΆααααααΎαααααα ααΆααααααααΆααΆααααααααΉαα αΆααααααΎααααααΈααααααΆαααα HTTP αααααααΌαααΉαααΆαααααααα ααΆαααααααααααααΆαααααααααααΆαα Envoy α
docker run -d katacoda/docker-http-server; docker run -d katacoda/docker-http-server;
ααΆαα½αααΉαααααΆαααααααααΆα αααααα·αα’αΆα ααααΎα ααΆα αααααΌααααΈααααααααααα ααΆααααααα ααααααΆα
curl -H "Host: one.example.com" localhost -i
α’ααααα½αααααΎαααΆαααααΎαααααααααα αΆαααΆ Docker container αα½αααΆααΆαααααΎαααΆαααααΎα αα αααα»ααααααα ααα»ααααΌααααΈ Envoy α’ααααααα½αααΎαααααααααααα’ααααα αΌαααααΎαααΆααααααα
ααααααΆααααΎααα HTTP αααααα
α’αααααΉαααΎαααααααΆ HTTP αααααααα αααα»αααααααΆααααΎαααααααααΎαα·αααααΆααα ααααααΆαααα αΆααααααααΆααααααΆαααΈαααΆαααΎααΆαα αααΆαααααΎαααΆαααααΎα αααα αΆαααΆααΈααΈαα·ααΆααΈα ααΆααΆαααααααααααααα·αααΎα’αα·αα·ααα ααααααααααααααΆααααααΆαααααααααΉαααΆαααΊααααααααΆαα
x-envoy-upstream-service-time: 0
server: envoy
ααΆααααααα α»αααααα
static_resources:
listeners:
- name: listener_0
address:
socket_address: { address: 0.0.0.0, port_value: 8080 }
filter_chains:
- filters:
- name: envoy.http_connection_manager
config:
codec_type: auto
stat_prefix: ingress_http
route_config:
name: local_route
virtual_hosts:
- name: backend
domains:
- "one.example.com"
- "www.one.example.com"
routes:
- match:
prefix: "/"
route:
cluster: targetCluster
http_filters:
- name: envoy.router
clusters:
- name: targetCluster
connect_timeout: 0.25s
type: STRICT_DNS
dns_lookup_family: V4_ONLY
lb_policy: ROUND_ROBIN
hosts: [
{ socket_address: { address: 172.18.0.3, port_value: 80 }},
{ socket_address: { address: 172.18.0.4, port_value: 80 }}
]
admin:
access_log_path: /tmp/admin_access.log
address:
socket_address: { address: 0.0.0.0, port_value: 9090 }
ααααααΆαααααααααΈα’ααααααααα
ααΆαααααΆααααααΆααααΆαααα‘αΎα Envoy 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 αα ααΈαααα
ααΆαααΆαααααααΆαααΌαααααααααααΎααααΌααααΈααααααα
αααααα·αααααΌααααΈαα·αααΆααααααΆααααααΎααΆαα·ααΆαα·αα·ααααααα ααΌα
αααα ααΎα’αααααΆα’αΆα
ααααααααα±αααααααααα·ααααααα
ααΆαααα’αααααααΎααααΆαααααααΆαα
α»ααααααααα»ααααααααα’αΆα
α
αΌααα½ααααα»αααΆααααααααα·αααα
ααΎαααααΆααααααΎαααΉαα α·αααα’αααα±ααααα‘αΎα αα·αααΆαααααααααΌααααΈαααααααα?
-
ααΆα
-
ααααΆα
α’αααααααΎααααΆαα 75 ααΆααααΆαααααααααα α’αααααααΎααααΆαα α‘α€ ααΆααααααΌαααΆαα αΆαααΆααα
ααααα: www.habr.com