á°áá ááĽá! á¨ááĽáá áľááá áá° áĽááľá áľáŠá¨áľ á ááŁáááĄ-
áááĽáá°á ááá á áááááśá˝ áĽá á áááŹá˝áá˝ á°áĽá á¨á°áá°á á¨áá°á á ááťá¸á áŤáá á¨á°á¨ááá ááŽáᲠá°áá¨á (á C++ á¨á°áťá) á˛áá á á°á¨ááŞá á¨áááá á ááśáĄáľ áĽá "áááá°áá áłáł á ááŽááá" ááľáá áááᎠá áááááľ "á¨á áááááľ áá¨áĽ" á ááá´áá¸á á¨á°áá°á ááᢠá áááĽáŠá áľ áá áĽáá° NGINX, HAProxy, á¨áááľáá áááľ ááá áĽá á¨á°áá áááľ ááá á¨ááłá°á á ááááŽá˝ á ááá áŠá áľ áá áá°ááą á˝ááŽá˝ áááľááá˝ á°ááľá°áá. áááĽáá°á á¨áĽáŤááłááą áá°áá áŞáŤ áá á áĽáŽ áá°áŤá áĽá ááľá¨á ááá ááá áá á¨á፠á°ááŁáŤáľá ááá á¨áĽ á ááłá¨ áá¨áĄá áŤá áááᢠá áá á¨á° áááľ ááľáĽ áŤáá ááá á¨á áááááľ áľáŤáá á á°áááŞá áá¨áĽ ááľáĽ á˛ááľáŁ á¨á˝áá áŚáłáá˝á á á°á¨áłáłá áłáá˘ááľ ááá¨áľáŁ á á ááá á ááťá¸áá áááľá°áŤá¨á áĽá á á ááľ á¨á°áá°á áŚáł áá áá á°ááŁáŤáľá ááá¨áá ááá ááááá˘
áŁá áŞáá˝
- á¨áá°áľ áá á¨áá á ááá´áá¸áᥠáááĽáá°á áŤáąá á¨áťáᣠá¨áá°á á ááťá¸á áŤáá á áááá á˛áá áľáá˝ áá á áŤáá RAM á¨áááľáľ ááᢠá¨ááááá á¨áá°áá áŞáŤ ááá ááá áááá áá á áĽáŽ áá°áŤáá˘
- http/2 áĽá grpc áľááᥠááááá°áá ááᢠáĽá á᪠áááááśá˝ á¨ááááŞáŤ á°á¨á http/2 áĽá grpc áľáá á ááᢠáá ᨠhttp/1.1 áá° http/2 ááá˝ á°áŞ ááá˘
- á¨áá áááľ áááŁá áᥠááááá°áá á ááśáá˛á áá¨áŤáá˝áᣠá°áá°ááľ áá°áŁá ááᣠááá á áá á°á¨áá ááá°áĽáŁ á¨áĽáŤá áĽáᣠá¨á áŤáŁá˘ áá áááľ áááŁá áᣠááá° á¨áᎠá¨áá áááľ áááŁá á áŁá áŞáŤáľá áá°áááá˘
- á¨áááá á áľá°áłá°á á¤áá áᥠáááĽáá°á áá ááá á á°áááá ááááľ áááľá°áłá°á á ááŤáŤ á¤áá á áá°áŁáá˘
- áłáá˘ááľáĄ á¨á¤á 7 áľáŤáá áĽáá áłáá˘ááľáŁ áá°á¨ááá ááá áĽá á¨ááááľáĽáŁ áłááááľáĽ áĽá ááá˝ áĽá áá°áá áŞáŤáá˝ á¤á°á áľááá˘
á°á¨á 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 á ááááᣠá¨áááἠááľáłááť ááá á áĽá á¨ááá á°ááŁáá á áááá ááᢠáá á ááá áááłáá˝ á ááá á áá á°á¨á ááááťá.
- áá áľá°ááá áĽáŤááá˝á áááá á NGINXá á áááá áá á ááľ.eample.com áá°áĽ 8080.
- á¨áłáááá áŚáł áááá áᣠáá°ááŤáŠ á¨áŠá áá¤á áááá˝ áľáŤáá áĽáá´áľ áĽáá°áááá˘
ááá áá á á Envoy Proxy áá á áá°áá ááᣠáĽá á ááłááľ á ááĽáŽá˝á áááá á áŤáľáááááľáᢠá¨á°áá᪠ááŽáᲠá ááᢠá áŤáľ ááá ááááśá˝á NGINX á¨áá¨á áá áá áá á¨á° áááľ á¨áá°ááᢠááá ááááĄ-
- á áľááŽá˝áĄ- á¨áááĽááľ á°áŞ áᢠáĽáŤááá˝á áĽáá´áľ áĽáá°ááá á áááľááᢠá¨áááĽááľ á°áŞ á á áá áá á TCP áá á¨á°áá°á¨áą á áľááŽá˝á áĽáť áá°áááᢠáááááľ á¨á°áá ᨠá áá áááááŁá á áá° ááŁáŞáŤáá˝ áľáĽáľáĽ áá°áááá.
- ááŁáŞáŤáá˝áĄ- áᢠáĽá á᪠áááĽá ááŤááľ á¨áá˝á á¨á§á᧠ááľáá á ááá´áá¸á á áŤá áá¸áᢠáá á°ááŁá áá°áá áá á¨ááአá ááľ áááĄá á¨áá¨ááá áĽáá° Gzip áŤá ááŁáŞáŤáá˝á áŤáŤáľáłáá˘
- áŤáá°áŽá˝ áĽáá° ááá áá°á°ááá¸á áľáŤáá áá°ááááá ááľá¨áť áŤáľá°ááááá˘
- ááááá˝ ááľáŤáá áĽá áá á¨áľ áááŞáŤáá˝ á¨áá¨á¨áťáá ááĽáĽ ááááťá.
á¨á°áá°á á¨NGINX áá á áá áááááľ á¨Envoy Proxy áá á áááá á áĽááá á á áŤáľ á áŤááľ áĽáá ááááᢠá¨áááĽáá°áá á áá á¨á¤áá á áĽá á¨á°áááá áá á¨áľ áá ááľáŤáľ ááᢠá áá á ááŁá á¨áá á¨áľ áá á á¨NGINX á¨ááááááĄáŁ á á°á¨á áŽáľ á¨á°á°á¨ááŁá¸á á ááĽáŽá˝á áá áááá˘
á°á¨á 2 - ᨠNGINX áá á
á¨ááááŞáŤ ááá nginx.conf áááá áŤááŁá¸áá á ááłáᾠᨠNGINX á¨ááľáĽ á áŤááľá ááááťáá˘
á¨á°áŤá°á áááááśá˝
á¨áłá˝ áŤáá áá á á¨á°áŤá°á áá°áśá˝á áĽá áááááśá˝á áĽááľ áááľáá. áá NGINX ááááľá áááááľ áĽáá´áľ áĽáá°áááá áŤáłáŤáá˘
worker_processes 2;
events {
worker_connections 2000;
}
á¨áááĽááľ á°áŞ á¨áľáŤ áá°áśá˝á áĽá áááááśá˝á á á°ááŤáŠ ááááśá˝ áŤáľá°áłáľáŤáá˘
áááĽáá°á á áľáááą áá ááĽáŤááłááą á¨áááľáá áá á¨á°áŤá°á áá áááĽáŤáᢠáĽáŤááłááą á¨á°áŤá°á áá áááááľ áŤáá áľá á¨ááŤááľ á¨ááľá°áľ ááááľ áŤáľáá˝áá
- áĽáŤááłááąá á áľáá ááłááĽ
- á áłá˛áľ áááááśá˝á ááá á
- ááááááľ á¨ááŁáŞáŤáá˝ áľáĽáľáĽ ááá á
- á áááááą á¨á áááľ ááá áááá á¨I/O áľáŤáá˝á áŤáľáŹáąá˘
ááá á°á¨á᪠á¨áááááľ áá°áśá˝ áááááá á¨ááľá°ááá፠áŁá áŞá á¨áᎠáá á áá á á áŤá°á áá ááľáĽ ááŤáá.
á Envoy ááľáĽ ááá áĽáŤááłááą á¨á°áŤá°á ááᣠá¨áááááľ áááł á áᢠáľááá á¨á¤á˝á˛á˛á/2 áááá áááłáá˝ á á ááľ áá áá ááľ á¨áá á áľá°ááá á ááľ áááááľ áĽáť ááá°ááłáᣠá áŤáľ á¨á°áŤá°á ááŽá˝ áŤá á á°á¨áá áááł ááľáĽ á á ááľ á¨á᪠á áľá°ááá á áŤáľ HTTP/2 áááááśá˝ áááŤáᢠáááá ááá á á ááľ á¨á°áŤá°á áá ááľáĽ á ááá¨áľ, ááá áááľ ááťáá ááá áŽáľ áá áĽáá° áá á áá áŤá áĽááł ááá áá˝áá. á¨á áľáááá á áá áĽá á¨á°áŤá°á ááŽá˝ á¨á°áá°áĄ, áá áá° áĽáááľ áá á°á¨ áľááľáł, áĽá ááĽá á¨ááá¸á á¨áľáŤ ááľ áááááśá˝á áááĽáŤá, áĽá áá° áááłá á¨ááááąáľá áááááśá˝ ááĽá ááááłá.
áá áá áá¨á ááĽá
HTTP áá á
á¨áá¨á°áá ᨠNGINX áá á áĽááł áĽáá° HTTP á ááĽáŽá˝á ááááááĄ
- áá ááááľ ááá ááááśá˝ áá°ááá
- ááŁáŞ á¨áá ááĽááŤáá˝
- á¨ááá áá á
á Envoy Proxy ááľáĽ ááŁáŞáŤáá˝á á áá áá áĽááá á áá˝áłáá˝ áá ááľ áá˝ááᣠáá á á áá á¨ááááŤáá áľá˘
á°á¨á 3 - á¨á áááá áá á
á á¤á˝á˛á˛á áá á áĽáá ááľáĽáŁ á¨NGINX áá á á áááľ 8080 áá áááłáἠáĽá ááᢠá¨á፠áĽáŤááá˝ ááá˝ áá°áŁáᢠá ááľ.eample.com и www.one.example.com.
server {
listen 8080;
server_name one.example.com www.one.example.com;
á ááľáĽ ááááá°ááᣠá á áľááŽá˝ ááĽáĽá áľá ááá˘
á°áá᪠á áľááŽá˝
á Envoy Proxy ááááá á áŁá á áľáááá áá˝áł á áľááŽá˝áá áááá˝ ááᢠá¨áááĽáá°ááá ááłá áĽáá´áľ áááľ áĽáá°áááá á¨áááá˝ á¨áá á ááá ááá á áŤáľáááááłáá˘
á¨áłá˝ áŤáá á áááĽáἠá á˛áľ á áľáá áááĽáŤá áĽá á¨áááľ 8080 áá áŤáľáŤáᥠáá አáááᥠáĽáŤááá˝ á¨á¨áľááš áá°áŚá˝ áá ááŤáŤá áĽááłáá áľ áá˘ááŽá ááŽáᲠáááá¨ááá˘
á¨á˘ááŽá ááŽáᲠááááá ᨠYAML ááááľá áá áááᢠááá
ááľáłááť ááá˘áŤáŁ áĽáá
áááá¨áą
Copy to Editorstatic_resources:
listeners:
- name: listener_0
address:
socket_address: { address: 0.0.0.0, port_value: 8080 }
áááá á áŤáľáááá á¨á áááá_áľá, á¨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ᣠááŁáŞáŤáá˝ áá á áŤá°áááá˘
á¨áááĽááľ ááŁáŞáŤáá˝
ááľáłá˛áľá˛á áá á¨áľ ááŁáŞáŤáá˝ áᢠáĽáŤááá˝á áĽáá´áľ áĽáá°ááŤáľá°áááą áááľááᢠá áá á ááŁá á¨ááááą ááŁáŞáŤáá˝á áĽáááááá á¨á áááá_áľáá˝ á áá°áá á°á¨á. á¨á°áá°á ááŤáá˝ áĽá ááľááŽá˝ áá á¨ááááą áᢠáĽáŤááá˝ á˛á°ááąáŁ áľáŤáá áá° áááľá°á áááŤáᢠáá ᨠ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;
}
á áááĽáá°áᣠáá á áááľá°á áá á¨áá°áłá°á¨áá˘
á¨áááĽááľ áľáĽáľáŚá˝
áá° áá áŤáá á áť áĽáá° ááá ááááťáᢠá áá á ááŁá ááľáŤáá á áááááľ á¨áá°áĄ á áľá°áááá˝ á°ááá°áá. áĽáá° áá ááĽááŤáá˝ áŤá á áľá°áááá˝ á¨áá°ááąá áľ ááááľ áĽáá° áááľá°á áá á¨áľ ááááťáᢠáá áĽáá° áááá¨áľ áĽá áááľ áááŁá á áŁá áá˝áłáá˝ áá á¨á áá á¨áĽáŤáĽáŹ ááĽáĽá áĽáá˛áá áŤáľá˝ááá˘
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 ááááá°áá á¨á°ááášáľá á¨á˛ á¤á á¤áľ á˘áááá˝ áŤáááá¨áĽ áĽá á ááááłá°á ááአáááłáᢠáĽáŤááłááą á¨á°ááá° á¨á á á á áľáŤáť á¨á˛á¤áá¤áľ áá¤áľ á áááá á°áá°áľ ááľáĽ áĽáá° ááá˝ á áľá°ááá ááá áŤáᢠáá áááľ á ááľ áĽáŤá áááľ á áá á áľáŤáťáá˝á á¨ááá°áŁ ááááá°áá á áááľá°á ááľáĽ áááľ á áľá°áááá˝ áĽááłá áŤáľáŁá áĽá áááąá áááá ááá á ááŁá¸áᢠá ááľ á áľá°ááá á¨áá¤áą á¨á°ááá°áŁ ááááá°áá á áá áĽáá°áá áŤáľáŁá áĽá áľáŤááá á¨ááááá á¨áááááľ áááłáá˝ áááľáłáá˘
áá áá áá¨á áááá¨áą
á°á¨á 6 - á¨ááá˘áŤ ááłá¨áť áĽá áľá á°áśá˝
á¨áá¨á¨áťá áá á¨áľ áááᣠáá. á¨áľá á°áľ áááἠááľáłááťáá˝á áá° á˛áľá á¨ááááľ ááá á¨á˘ááŽá ááŽáᲠá°ááá áá°á¨áľ áŤá°á¨á á áŤááľ áááľáłáᢠááá á¨áá°áá áŞáŤ áááἠááľáłááťáá˝ áááŁá áľáśáľ и áĽáľá´á°á.
á°á áááá˝ áĽáŤá á˛áŤááᥠá¨ááłá¨áť áááἠááľáłááťáá˝ á ááŤá áá¸á áĽá á ááŁáŞááľ á°á°áááááᢠáá¤á˝á˛á˛á áĽáŤááá˝ á¨ááłá¨áť áááἠááľáłááťáá˝á áááááľ á ááááŠá á áá ááłá¨áť_áá áá¤á˝á˛á˛á áááááľ á áľá°áłáłáŞá˘ ááááą áĽáá° ááłáŞáŤ ááá áá˝áá áľáśáľ, ááá á á˛áľá áá áŤá ááá, áĽáá° ááááśá˝á ááá°áá.
á¨áá¨á°áá áá á áááá á¨ááłá¨áť áááἠááľáłááťáá˝ áá° áĽáą áŤááŤáᢠáľáśáľ (á¨á áľá°ááá ááľáłááť - stdout á ááľáĽ áśá¨á ááľáĽ áááĽáá°áá ááá áá áŤáľááááᢠáŤá áśá¨á áĽá á áá á¨áá /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:
á ááŁáŞáŁ á¤ááŹá á¨á¤á˝á˛á˛á áĽáŤá ááááŽá˝á áŤáŤá°á° á¨á áá¸áľ ááĽá¨ááá á áááĄ
[%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_á áá¸áľá˘. áááłá:
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 ááłáá ááľááá ááá˘
áĽáá° á°á áá áŤááą
á NGINX áá á¨áľ ááľáá á ááľ áá á°á áá www; á°á áááľá áááťáťá NGINX áĽáá° áá á°á ááĽáľ áŤáá á°á áá áĽáá°ááŤááľ ááááťáá˘
á¨áááĽááľ á°áŞ áá°áľ á¨áá áĽáá°áá áááľá°áłá°á á°ááá áá°á¨áľ áŤá°á¨á á áŤááľ áááľáłáᢠá¨á˘ááŽá ááŽáá˛á á áŽáá´ááá ááľáĽ áľááŤááľ áá á°á ááĽáľ áŤáá á°á ááá áááá áĽáá˝áááá˘
á¨á°áá᪠ááŽáá˛á á ááľááá áá
á¨áá á áłá˝ áŤáá áľááá á¨á˘ááŽá ááŽáá˛á á á áľá°ááá áá áŁáá Docker áŽáá´ááá á áŠá áŤáľáŹáłáᢠáá áľáĽáá ááááĽáá°á áá°áĽ 80 á¨áᢠáĽáŤááá˝á á¨ááłáἠá˝ááł áá°á áá ᢠááá áá á á áľáá áá á áá áĽáá°á°áááá á¤ááŽá ááŽáᲠáá°áĽ 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
á¨á¤á˝á˛á˛á áĽáŤá áľá á°áľá áŤáľá¨áľáá 503. áá á¨ááá áľ ááááŤáľ á¨ááááš áááááśá˝ á¨ááá°áŠ áĽá á¨áááá áľááá ááᢠáľááá á¨áááĽááľ á°áŞ ááĽáŤáá ááá ááľá¨áťáá˝ á¨ááľáᢠá¨áá¨á°áá áľááá ááááĽáá°á á¨á°ááá¸á áá á áá á¨ááááą á°á¨áłáłá á¨á¤á˝á˛á˛á á áááááśá˝á ááááŤáá˘
docker run -d katacoda/docker-http-server; docker run -d katacoda/docker-http-server;
áŤááľ á áááááśá˝ ááᣠáááĽáá°á á á°áłáŤ áááł áá° ááľá¨áťá áľáŤááá á°áŞ ááľá¨á áá˝ááá˘
curl -H "Host: one.example.com" localhost -i
á¨áľáá áśá¨á áŽáá´áá áĽáŤááá áĽááłáľá°ááá° á¨ááŤááááľ ááá˝ áá¨áľ á ááŚáľá˘ á Envoy Proxy áááἠááľáłááťáá˝ ááľáĽ á¨ááłá¨áť ááĽá¨ááá áá ááľáá áá¨áľ á ááĽááľá˘
á°á¨á᪠á¨á¤á˝á˛á˛á ááá˝ áŤáľááá˝
á áĽááá°áá áĽáŤá ááá˝ áŤáľááá˝ ááľáĽ á°á¨á᪠á¨á¤á˝á˛á˛á á áááľáśá˝á áłáŤáá ᢠáŤáľáá áá° áá áŤáá á áľá°ááá áĽáŤááá á ááľáŹáľ áŤáłáááá áá áŤáłáŤáᢠá ááá°á¨ááśá˝ ááááťáᢠá°áá áá á¨á ááłá¨ áá¨áĽ áááá¨áľ áá á˛ááťá¸á á¨á áááááľ ááá áááá°á á¨ááá áá á áá áá.
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 áá á¨áľá áĽá፠áá ááľááἠáŤáľáááááłáá˘
á¨áááĽáá°á ááŽáá˛á á áá áá á¨á´áááŤá ááááľ á ááĄ-
á¨áááĽááľ á°áŞ á¨áááááłááľ áááľ áá
á¨áĽá á áá°áááᢠáľááá
ááŁá
áŞá áá ááá¨áĽ áá˝áááĄ-
á áłá°áł áĽááą ááľáĽ á¨á°áááᥠá°á áááá˝ áĽáť ááłá°á áá˝ááá˘
áá ááĽá á¨á°áá᪠ááŽáá˛á áĽááľáľáá áĽá áĽááľáľááá á á á¨áłáśáá?
-
á á
-
á¨áá
75 á°á áááá˝ áľáá˝ á°áĽá°ááᢠ18 á°á áááá˝ áľáá á°á á
ጠá áľááááá˘
ááá: hab.com