HAProxy - HTTP/1.1前端与HTTP/2后端?好主意?



我一直致力于将我们应用程序的通信协议从HTTP/1.1切换到HTTP/2。

通信流程是这样的:

  1. 客户谈判一个亚马逊应用程序负载均衡器通过HTTP/2
  2. 应用程序负载均衡器通过HTTP/1.1与反向代理(HAProxy)对话
  3. 反向代理然后通过HTTP/1.1与web服务器对话

我希望所有这些都是HTTP/2,但由于负载均衡器(https://forums.aws.amazon.com/thread.jspa?threadID=332847)的限制,它和反向代理之间的通信可以是HTTP/2或HTTP/1.1,但不能两者兼而有之。我需要两者都支持,因为有一个WebSocket连接是通过HTTP/1.1打开的。

我有一个选项,使HAProxy和Webserver之间的通信是HTTP/2,因为我们的Webserver支持它。

所以流变成:

  1. 客户→铝青铜(HTTP/2)
  2. 铝青铜→HAProxy (HTTP/1.1)
  3. HAProxy→网络服务器(HTTP/2)

我想了解两件事

  1. 如果这是可能的HAProxy?
  2. 如果这是一个好的举动?这会给我带来任何性能提升吗?

提前感谢!欢呼声

从技术上讲,Ha Proxy可以实现HTTP/2.0端到端(版本如2.0或更新https://www.haproxy.com/fr/blog/haproxy-2-0-and-beyond/#end-to-end-http-2)

在2.4你可以做HTTP/2 WebSockets (https://www.haproxy.com/fr/blog/announcing-haproxy-2-4/)

我对HTTP/2.0多路复用的第一个想法是减少延迟。延迟通常在客户端和您的第一个实例(这里是ALB)之间。我不知道HaProxy之间是否有延迟网络服务器,但如果你认为你有。这在HAProxy和后端服务器之间带来了很好的性能提升,因为它将多个连接压缩为一个连接。否则,不要指望会有大的改善。此外,这可能取决于你是否在Haproxy和web服务器之间使用TLS。

但是像报头压缩和持久TCP连接这样的选项很有趣,所以使用它是有意义的。

相关内容

  • 没有找到相关文章

最新更新