Comments (3)
i think the answer is no, but probably it would be useful if we did
from envoy.
from envoy.
I tried the following steps to test the behavior:
- Configure envoy using two virtual_hosts(s1.example.com/s2.example.com) and two clusters(cluster_1/cluster_2), each cluster contains 6 endpoints(cluster_1->e1/e2/e3/e4/e5/e6, cluster_2->e1/e2/e3/e4/e5/e6), the endpoints have different zone settings, s1.example.com maps to cluster_1 and s2.example.com maps to cluster_2
- Run the programs. The program behind cluster_1/cluster_2 is very simple, program1(cluster_1) presents a /query API which will call program2(cluster_2)'s / API, and get the zone setting of the node it's running on and the node program2(cluster_2) is running on, so we can see the request will go cross zone or not.
- call https://s1.example.com/query, unfortunately I see the request goes cross the zone
the output will be gic-seli->gic-seli or gic-sero->gic-seli, but never gic-sero->gic-sero or gic-seli->gic-sero
Anything I missed?
The config files I used(Only essential parts are listed)
#########envoy.yaml#########
cluster_manager:
local_cluster_name: "cluster_1"
static_resources:
listeners:
- name: listener_tcp_443
address:
socket_address:
address: "::"
ipv4_compat: true
port_value: 443
filter_chains:
- filter_chain_match:
server_names:
- "*.example.com"
filters:
- name: envoy.filters.network.http_connection_manager
typed_config:
"@type": type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager
route_config:
name: local_route
virtual_hosts:
- name: vhost_1
require_tls: ALL
domains:
- "s1.example.com"
- "s1.example.com:443"
routes:
- match:
prefix: "/"
route:
auto_host_rewrite: true
cluster: cluster_1
- name: vhost_2
require_tls: ALL
domains:
- "s2.example.com"
- "s2.example.com:443"
routes:
- match:
prefix: "/"
route:
auto_host_rewrite: true
cluster: cluster_2
stat_prefix: ingress_https
clusters:
- name: cluster_1
lb_policy: round_robin
common_lb_config:
zone_aware_lb_config:
min_cluster_size: 6
eds_cluster_config:
eds_config:
path_config_source:
path: '/local/envoy/conf/eds_c1.yaml'
type: EDS
- name: cluster_2
lb_policy: round_robin
common_lb_config:
zone_aware_lb_config:
min_cluster_size: 6
eds_cluster_config:
eds_config:
path_config_source:
path: '/local/envoy/conf/eds_c2.yaml'
type: EDS
#########eds_c1.yaml#########
version_info: "0"
resources:
- "@type": type.googleapis.com/envoy.config.endpoint.v3.ClusterLoadAssignment
cluster_name: cluster_1
endpoints:
- lb_endpoints:
- endpoint:
address:
socket_address:
address: 100.76.120.1
port_value: 30001
health_check_config:
port_value: 30001
locality:
region: gic-seli
zone: "11"
- lb_endpoints:
- endpoint:
address:
socket_address:
address: 100.76.120.2
port_value: 30001
health_check_config:
port_value: 30001
locality:
region: gic-seli
zone: "12"
- lb_endpoints:
- endpoint:
address:
socket_address:
address: 100.76.120.3
port_value: 30001
health_check_config:
port_value: 30001
locality:
region: gic-seli
zone: "13"
- lb_endpoints:
- endpoint:
address:
socket_address:
address: 100.76.120.4
port_value: 30001
health_check_config:
port_value: 30001
locality:
region: gic-sero
zone: "21"
- lb_endpoints:
- endpoint:
address:
socket_address:
address: 100.76.120.5
port_value: 30001
health_check_config:
port_value: 30001
locality:
region: gic-sero
zone: "22"
- lb_endpoints:
- endpoint:
address:
socket_address:
address: 100.76.120.6
port_value: 30001
health_check_config:
port_value: 30001
locality:
region: gic-sero
zone: "23"
#########eds_c2.yaml#########
version_info: "0"
resources:
- "@type": type.googleapis.com/envoy.config.endpoint.v3.ClusterLoadAssignment
cluster_name: cluster_2
endpoints:
- lb_endpoints:
- endpoint:
address:
socket_address:
address: 100.76.120.1
port_value: 30000
health_check_config:
port_value: 30000
locality:
region: gic-seli
zone: "11"
- lb_endpoints:
- endpoint:
address:
socket_address:
address: 100.76.120.2
port_value: 30000
health_check_config:
port_value: 30000
locality:
region: gic-seli
zone: "12"
- lb_endpoints:
- endpoint:
address:
socket_address:
address: 100.76.120.3
port_value: 30000
health_check_config:
port_value: 30000
locality:
region: gic-seli
zone: "13"
- lb_endpoints:
- endpoint:
address:
socket_address:
address: 100.76.120.4
port_value: 30000
health_check_config:
port_value: 30000
locality:
region: gic-sero
zone: "21"
- lb_endpoints:
- endpoint:
address:
socket_address:
address: 100.76.120.5
port_value: 30000
health_check_config:
port_value: 30000
locality:
region: gic-sero
zone: "22"
- lb_endpoints:
- endpoint:
address:
socket_address:
address: 100.76.120.6
port_value: 30000
health_check_config:
port_value: 30000
locality:
region: gic-sero
zone: "23"
from envoy.
Related Issues (20)
- Newer release available `rules_rust`: 0.44.0 (current: 0.35.0) HOT 1
- Per route request timeout HOT 1
- Unable to see Trace Id in Access Logs when request is rate limited (429) HOT 2
- Newer release available `rules_python`: 0.32.1 (current: 0.31.0) HOT 1
- Can't show variable value by p in gdb (DW_FORM_strp) HOT 8
- Extending Echo filter to match specific metadata HOT 4
- PerRouteConfig of JWT with requirement_map can't clear cache HOT 1
- figure out why E-M CI didn't fail on exceptions bug
- golang filter returns with unexpected response code when the payload exceeds its buffer limit size HOT 3
- VHDS in Route configuration does not support ADS HOT 2
- aws: Memory overwrite protobuf issue triggered by PackFrom HOT 1
- Can we set metadata used in Load Balancer Subsets in Lua filter HOT 1
- Allow for custom HTTP response codes from RBAC denials HOT 2
- Newer release available `com_github_nghttp2_nghttp2`: v1.62.0 (current: v1.61.0)
- Newer release available `rules_fuzzing`: v0.5.2 (current: v0.4.1)
- Newer release available `rules_python`: 0.32.2 (current: 0.31.0)
- [HELP!!!] Can envoy be configured to use a second http/https proxy HOT 7
- Envoy Golang L7 Extension
- //test/integration/python:hotrestart_handoff_test flakes and misleads
- CI failing frequently "The Build Event Protocol upload failed" HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from envoy.