- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我提供了一个 gRPC 服务,不幸的是必须在 BeginTransaction
之间具有节点亲和性。和 Commit
API 调用。
Consumer API 调用顺序通常是:
BeginTransaction()
返回 txnID
DoStuff(txnID, moreParams...)
DoStuff(txnID, moreParams...)
...
Commit(txnID)
消费者可以是同时调用我的 API 的多线程进程,因此他们可能在任何时间点使用数百个事务。
如果我使用 Envoy 代理作为我的服务入口点,BeginTransaction
应该路由到集群中任何健康的节点,但它必须确保使用返回的 txnID
的后续调用被路由到同一个节点。
在我的情况下,在 http header 或消息的任何部分中传递任何上下文信息都是可以接受的。
最佳答案
我在使用 Ring Hash 平衡器方面取得了一些进展
在 envoy 代理服务器中(查找“hash”):
static_resources:
listeners:
- address:
socket_address:
address: 0.0.0.0
port_value: 80
filter_chains:
- filters:
- name: envoy.http_connection_manager
config:
codec_type: http2
stat_prefix: ingress_http #just for statistics
route_config:
name: local_route
virtual_hosts:
- name: samplefront_virtualhost
domains:
- "*"
routes:
- match:
prefix: "/mycompany.sample.v1"
grpc: {}
route:
cluster: sampleserver
hash_policy:
header:
header_name: "x-session-hash"
- match:
prefix: "/bbva.sample.admin"
grpc: {}
route:
cluster: sampleadmin
http_filters:
- name: envoy.router
config: {}
clusters:
- name: sampleserver
connect_timeout: 0.25s
type: strict_dns
lb_policy: ring_hash
http2_protocol_options: {}
hosts:
- socket_address:
address: sampleserver
port_value: 80 #Connect to the Sidecard Envoy
- name: sampleadmin
connect_timeout: 0.25s
type: strict_dns
lb_policy: round_robin
http2_protocol_options: {}
hosts:
- socket_address:
address: sampleadmin
port_value: 80 #Connect to the Sidecard Envoy
admin:
access_log_path: "/dev/null"
address:
socket_address:
address: 0.0.0.0
port_value: 8001
在我的消费者中,我在 BeginTransaction()
之前创建了一个随机散列,我确保它每次都在 x-session-hash
header 中发送,直到提交(txnId)
它可以工作,但有一些限制:
当我扩展服务、添加更多节点时,一些操作失败并出现错误 upstream connect error or disconnect/reset before headers
。当一个节点丢失时,失败是绝对可以的,但是当添加一个节点时,它们几乎是 Not Acceptable !好消息是负载在这两种情况下都得到了重新平衡。
客户端必须在第一次调用 (BeginTransaction
) 之前生成哈希,无意中指示哪个节点将参与此交易请求的客户端也是如此。
我会继续调查。
关于load-balancing - 如何解决这个节点与 Envoy 的亲和性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52590630/
我一直在 Istio 的上下文中使用 Envoy,并且一直在配置 external authorization过滤器将服务授权卸载到 Istio 网格。 我的理解是在配置Envoy时envoy.fil
我有一个 Laravel(Lumen) 登录 API,它使用 HS256 生成一个 JWT。然后我将我的不记名 token 发送到 Envoy Gateway 并从 Envoy 获取 JWT veri
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 要求我们推荐或查找工具、库或最喜欢的场外资源的问题对于 Stack Overflow 来说是偏离主题的,
我正在尝试使用 GitLab 和 Docker 设置部署,但无法通过官方 Laravel 文档中有关 Envoy 设置的初始设置。由于某些奇怪的原因,我无法通过主机连接 Envoy。 我正在关注 th
对于混合云用例,我们正在研究 EnvoyProxy 是否适合作为跨本地防火墙移动数据的解决方案。预期设置如下: 应用 A 位于内部部署网络中,没有直接出站或入站互联网连接 应用 B 位于云端 Envo
我的服务器是部署到由 Envoy 和 Istio sidecars 实现的服务网格的服务。我只能访问 Envoy 指标。 HTTP 服务器接收来自网格外部客户端的请求,如下图所示: 我想测量服务器响应
它如何与 Envoy 一起工作? 假设我已经像这样配置了一个上游集群: clusters: - name: "service_a_cluster" connect_
我有一个有趣的问题。我想我发现了一个无限请求循环,它导致我的 istio-proxy 在特定情况下因 OOM 错误而崩溃。 当我直接从应用程序容器内部将请求本地提交到应用程序时,它似乎工作正常,并且在
我正在尝试使用 http2/grpc 流媒体,但我的连接在 15 秒内中断。 documentation在 timeout设置表示将超时设置为 0。但是,当我这样做时,Envoy 在启动时抛出错误,提
我正在尝试为Envoy构建一个tcp级的WASM筛选器。我正在测试以下过滤器链: filter_chains: - filters: - name: envoy.filte
我是所有这些技术和环境的新手。我尝试运行位于 github repository 中的 lyft/envoy 示例. 我关注了他们的guide ,一步一步,它不起作用。我使用 Docker 作为容器平
我正在尝试通过 KennethReitz 的 Envoy 包运行此命令: $ sqlite3 foo.db 'select * from sqlite_master' 我已经试过了: r = envo
我编写了一个 Laravel 应用程序,我可以在其中上传图像和 pdf 文件。 目前正在将它们上传到公共(public)目录中的文件夹中。 现在我一直在尝试 Envoyer.io,在这里我可以轻松地将
我对 Laravel Envoy 有疑问。我编写了用于在服务器上部署的脚本,我正在使用 envoy run deploy --environment=staging 调用该脚本,但是当发生错误时,我看
当使用 Laravel Envoy 部署到多个服务器时,如何指定每个服务器的项目根?。文档中提供的示例假定项目根目录是两个服务器的相同路径。 假设 web-1 的项目根目录为 /var/html/ww
我提供了一个 gRPC 服务,不幸的是必须在 BeginTransaction 之间具有节点亲和性。和 Commit API 调用。 Consumer API 调用顺序通常是: BeginTransa
在其用于逻辑 DNS 服务发现的文档 ( https://www.envoyproxy.io/docs/envoy/latest/intro/arch_overview/service_discove
在使用 envoy 的 Laravel 5.8 中,我想在控制台命令中设置用户的密码,例如 envoy run Deploy --serveruser_password=mypass1112233
我正在尝试使用 prometheus 在 15090 端口从 Istio envoy 抓取数据。 我当前的设置是使用带有独立 prometheus 的 istio 1.1.5(不是 istio 附带的
你好,如果 Envoy ( https://lyft.github.io/envoy/ ) 支持 TCP 代理,你能告诉我吗?我看到外部客户端可以使用 HTTP、TLS 连接到“前端”Envoy 边缘
我是一名优秀的程序员,十分优秀!