为什么是 Websocket?

HTTP 协议是无连接的,只有客户端可以从服务器请求信息。在任何情况下,服务器都可以联系客户端。HTTP 是纯半双工的。此外,服务器只能响应客户端请求一次。
某些网站或 Web 应用程序需要服务器不时更新客户端。有几种方法可以做到这一点:

  • 客户端定期请求服务器检查是否有新信息可用
  • 客户端向服务器发送请求,服务器在有信息提供给客户端时立即响应(也称为长时间轮询)

但是由于 HTTP 的限制,这些方法有很多缺点。
因此设计了一个新协议:websockets,它允许通过单个 TCP 连接在客户端和服务器之间进行 2 种方式的通信(全双工)。此外,websockets重新使用它初始化的 HTTP 连接,这意味着它使用标准的 TCP 端口。

HAProxy 和 Websocket

1、HTTP:用于websocket设置
2、TCP:websocket数据交换

HAProxy必须能够在这两种协议上支持websockets,而不会随时中断 TCP 连接。
有2件事需要注意:

1、能够在不中断连接的情况下将连接从 HTTP 切换到 TCP
2、同时巧妙地管理两种协议的超时

幸运的是,HAProxy嵌入了正确负载均衡websocket所需的一切,并且可以满足上述 2 个要求。
它甚至可以将常规 HTTP 流量从websocket流量路由到不同的后端,并执行websocket感知健康检查(仅限设置阶段)。

下图显示了事情是如何发生的以及每个阶段涉及的HAProxy超时:

在设置阶段,HAProxy可以工作在 HTTP 模式,处理第 7 层信息。如果升级协商成功,它会自动检测连接:升级交换并准备切换到隧道模式。在此阶段,涉及 3 个超时:

1、timeout client:客户端不活动
2、timeout connect : 允许的 TCP 连接建立时间
3、timeout server : 允许服务器处理请求的时间

如果一切顺利,websocket就建立了,然后HAProxy故障转移到隧道模式,不再分析数据(无论如何,websocket不使用 HTTP)。涉及一个超时:

1、timeout tunnel: 优先于客户端和服务器超时

由于 TCP 连接已经建立,因此不使用timeout connect

HAProxy的Websocket负载平衡相关推荐

  1. 使用 HAProxy 作为 Websockets 负载平衡

    为什么需要 Websocket? HTTP协议是无连接的,只有客户端可以从服务器请求信息.在任何情况下,服务器都可以联系客户端.HTTP是纯粹的半双工.此外,服务器只能回答一次客户端请求. 一些网站或 ...

  2. nginx配置 负载均衡_如何配置NGINX负载平衡

    nginx配置 负载均衡 The load balancing is the process of distributing traffic to multiple instances of an a ...

  3. haproxy1.7 mysql_Haproxy mysql故障转移负载平衡

    我已经设置了 mysql master-master复制,现在我正在尝试使用Haproxy来平衡mysql服务器. >负载均衡器:192.168.1.5 > mysql1:192.168. ...

  4. HAproxy+Nginx7层负载均衡

    一.关于4/7层负载平衡 1.1 4层负载均衡 将网络流量负载,平衡到多个服务器的最简单方法,是使用第4层(传输层)负载平衡.以这种方式进行负载均衡将根据IP范围和端口转发用户流量(即,如果请求进入h ...

  5. HAProxy高可用负载均衡代理服务

    官网地址:https://www.haproxy.org/ 目录 最新版本 描述 主要特点 支持平台 性能 可靠性- 自2002年以来就使高流量网站保持在线 安全- 在13年内甚至没有一次入侵 下载 ...

  6. windows网络负载平衡

    网络负载平衡的优点 1.网络负载平衡允许你将传入的请求传播到多台服务器上,即可以使用多台服务器共同分担对外的网络请求服务.网络负载平衡技术保证即使是在负载很重的情况下它们也能作出快速响应. 2.网络负 ...

  7. [译]NGINX 和 ZooKeeper,动态负载平衡和部署(上)

    [译]NGINX 和 ZooKeeper,动态负载平衡和部署(上) Aidan Carson · 2016-07-22 11:38 原文:NGINX and ZooKeeper, Dynamic Lo ...

  8. 洛谷P4016 负载平衡问题

    洛谷P4016 负载平衡问题 题目大意: G 公司有 n 个沿铁路运输线环形排列的仓库,每个仓库存储的货物数量不等.如何用最少搬运量可以使 n 个仓库的库存数量相同.搬运货物时,只 能在相邻的仓库之间 ...

  9. (译)如何用命令行在windows Azure上安装负载平衡的web Farm虚拟机(linux或其他)...

    我一哥们考虑把他的一些基于linux的网站移到Azure上.如果你现在的网站是node.js, ASP,ASP.NET,或PHP做的,使用Azure web站点是最容易的.我会在这篇文章里向你展示如何 ...

最新文章

  1. SESSION跟COOKIE
  2. html输入框颜色属性,css 修改input输入框属性
  3. C/C++在Android开发中的应用
  4. 2022年改变数据中心行业的八大趋势
  5. ios 动态监听键盘输入法和高度
  6. Eval绑定日期时,修改日期显示的格式
  7. Linux 7.x 防火墙端口
  8. 【总结】防病毒网关---防毒墙
  9. 轻松办公信息化,六大OA产品优劣点评
  10. 读《最重要的事只有一件》有感
  11. 《编码的奥秘》之手电筒剖析
  12. 《数据结构与算法 Python语言实现》书评与学习心得
  13. html做坦克大战的效果,HTML5实现坦克大战(一)
  14. 机器学习----Softmax回归
  15. make命令和makefile文件
  16. jq实现多开关效果互不影响
  17. 小米max2装鸿蒙,小米max2全新玩法,连接电视大屏玩游戏看电影!
  18. 心情日记——20071109(发泄一下)
  19. MySQL 外键约束 以及 级联操作
  20. 1076 Forwards on Weibo (30 分)

热门文章

  1. 盲盒商城源码开源完整版附搭建教程H5UNIAPP
  2. 项目案例:基于 YOLO 的铝型材表面缺陷识别
  3. CCF CSP 序列查询新解
  4. c语言中 判断素数的编程,c语言如何判断素数?
  5. 萤石摄像头android开发,Android 伤敌一千自损八百之萤石摄像头集成(三)
  6. 弘辽科技:如何用直通车扶正人群。
  7. 动态库与静态库的区别是什么
  8. 【Windows】电脑不显示WiFi列表
  9. 多层矩形线圈电感计算公式
  10. FL Studio20.9水果个人工作室必备DAW编曲制作