首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于TCP有效负载的对动态服务器集的一致散列

基于TCP有效负载的对动态服务器集的一致散列
EN

Stack Overflow用户
提问于 2020-05-16 15:01:50
回答 1查看 621关注 0票数 3

我有一个场景,需要通过HAProxy或nginx这样的代理将TCP流量路由到一组动态后端服务器(确切地说,这是Kubernetes吊舱,但我们可以忽略它)。流量需要基于客户端在TCP有效负载中提供的密钥(称为routing_key)进行路由。

我看到nginx和HAProxy都支持一致的散列。但是,根据HAProxy的手册 (参见"balance“部分),无法根据TCP有效负载执行一致的散列。基于有效负载的负载平衡似乎仅限于L7的HTTP参数,如标头和URI参数。这个职位概述了一种基于字符串匹配TCP有效负载的静态平衡方法,但我的例子更加动态,因此更倾向于采用真正一致的散列方法。

Nginx似乎提供了更多的灵活性,因为您可以将散列值设置为任意变量如图所示。这似乎既适用于L7 (“后端”节),也适用于L4 (“流”节)。但是,我对你是什么有点模糊,不允许对变量做任何事情。是否有人有将变量设置为从TCP有效负载中提取的值并将其用于一致散列的示例?

最后一个额外的问题:routing_key值实际上是一个AES-GCM加密值。代理服务器将有权访问用于解密此值的密钥。是否有可能让nginx从TCP有效负载中获取路由密钥值,使用已知密钥对其进行解密,然后将其用于一致散列?这需要创建一个nginscript模块吗?

EN

回答 1

Stack Overflow用户

发布于 2020-05-18 23:35:47

aes_gcm_dec(...) 2.1中,可以将req.payload(...)req.payload(...)结合使用来满足这样的需求。

我的主意,未经检验。

代码语言:javascript
复制
listen tcp-in
  bind :443 ssl cert 
  tcp-request inspect-delay 10s
  tcp-request session set-var(sess.routingkey) req.payload(0,500)

  # for consistent hashing try this
  hash-type consistent wt6

  use_backend %[var(sess.routingkey),aes_gcm_dec(128,txn.nonce,Zm9vb2Zvb29mb29wZm9vbw==,txn.aead_tag)]

这里还有指向html文档的链接。

12月

req.payload

hash-type consistent ...散列类型中有描述

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61838813

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档