想问下haproxy反向代理的原理<br />比如说,IP 1.1.1.1 访问 haproxy的前端监听的IP 2.2.2.2 的8080 端口,转后请求给到后端服务器 3.3.3.3 的8080<br /><br />站在haproxy的角度上来看,会有非常多的客户端来访问haproxy,由haproxy来做为中间人将客户端请求转发到后端后。 haproxy是通过什么机制来保证 1.1.1.1的客户端请求依然是返回给他而不是别的机器呢。<br /><br />确实不了解,才想问下您。<br />我想把我的问题,再说的详细一点,比如说DNAT,靠的是在系统里面维护一张NAT转换关系表项,来保证一一对应。那haproxy是不是也维护着同样的一个转换关系表,如果确实存在,能通过什么方式查看到吗。<br /><br />我自己做过的尝试是用tcpdump抓包,网络层是看清楚了,能看到客户端请求先是到haproxy,haproxy再做为源IP发送请求到后端。<br />但还是不知道haproxy在软件层面具体的反向代理原理。<br />另外haproxy 的4层tcp和7层 http 代理的原理有区别吗。<br />一直以来,听说的是nginx只做
HAProxy 是一个应用层的程序,所以不管是做七层负载还是四层负载,都是要真正建连起来 TCP 连接的。正如我 PPT 前面提到的,client -> HAProxy 和 HAProxy -> real server 各是一条独立的 TCP 连接。<br /><br />所以,回复给 client 的 数据,都是从 HAProxy 发出的。real server 接收到的请求,都来来自于 HAProxy。这个过程中,对于 Client 来说,HAProxy 是 server。对于 real server 来说,HAProxy 是 client。<br /><br />HAProxy 自己内部有 session 表,记录了 client -> HAProxy -> real server 的全部信息,它就可以正确的将数据来回的转发。注意,这里的转
大家也可以关注和参与 CU 论坛上关于 HAProxy 的讨论:<br />http://bbs.chinaunix.net/thread-4241432-1-1.html
跟lvs的nat模式有啥区别,还有你的pdf太简单了
论坛上回复了 http://bbs.chinaunix.net/thread-4241432-2-1.html<br /><br />我这个 PDF 是属于简要介绍 HAProxy 的。
你好,是不是有字数限制,最后的一段话没有写完。<br />能不能再说说 。<br />另外,有办法能看到这个Session表吗。<br />经你这么一般我算明白了。这和NAT还是不一样,DNAT是改写目标地址,代理是建立2次TCP连接。
好的,后续的讨论就到论坛里面参与,谢谢。
HAProxy 配置上有 stats 的配置,实际上是启用了 Unix Socket,你通过这个接口,可以访问 HAproxy 实时运行中的状态,包含统计计数,也有 session table 。
看一下我的 PDF 第 13 也。这一页介绍了 HAProxy 动态配置,其实就是在 HAproxy 运行的时候,更改 HAProxy 的一些配置。这个通道,也可以去获取 HAProxy 的很多运行信息,包含你说的 session table。
最近在用使用haproxy做mysql负载均衡,使用连接过一会就需要重连接,数据库和haproxy的超时时间都设置比较长也没效果,能不能说下tcp的长连接问题。
建议你先抓包。然后看一下断开连接,到底是谁主动发起的。也欢迎直接去论坛上讨论。http://bbs.chinaunix.net/thread-4241432-6-1.html
另外,你的配置文件也贴出来看一下。