work hard
分类: 架构设计与优化
2016-03-18 00:44:39
godbach2016-03-21 11:18:58
coldgin:想问下haproxy反向代理的原理
比如说,IP 1.1.1.1 访问 haproxy的前端监听的IP 2.2.2.2 的8080 端口,转后请求给到后端服务器 3.3.3.3 的8080
站在haproxy的角度上来看,会有非常多的客户端来访问haproxy,由haproxy来做为中间人将客户端请求转发到后端后。 haproxy是通过什么机制来保证 1.1.1.1的客户端请求依然是返回给他而不是别的机器呢。
确实不了解,才想问下您。
我想把我的问题,再说的详细一点,比如说DNAT,靠的是在系统里面维护一张NAT转换关系表项,来保证一一对应。那haproxy是不是也维护着同样的一个转换关系表,如果确实存在,能通过什么方式查看到吗。
我自己做过的尝试是用tcpdump抓包,网络层是看清楚了,能看到客户端请求先是到haproxy,haproxy再做为源IP发送请求到后端。
但还是不知道haproxy在软件层面具体的反向代理原理。
另外haproxy 的4层tcp和7层 http 代理的原理有区别吗。
一直以来,听说的是nginx只做
HAProxy 是一个应用层的程序,所以不管是做七层负载还是四层负载,都是要真正建连起来 TCP 连接的。正如我 PPT 前面提到的,client -> HAProxy 和 HAProxy -> real server 各是一条独立的 TCP 连接。
所以,回复给 client 的 数据,都是从 HAProxy 发出的。real server 接收到的请求,都来来自于 HAProxy。这个过程中,对于 Client 来说,HAProxy 是 server。对于 real server 来说,HAProxy 是 client。
HAProxy 自己内部有 session 表,记录了 client -> HAProxy -> real server 的全部信息,它就可以正确的将数据来回的转发。注意,这里的转
coldgin2016-03-19 18:14:50
想问下haproxy反向代理的原理
比如说,IP 1.1.1.1 访问 haproxy的前端监听的IP 2.2.2.2 的8080 端口,转后请求给到后端服务器 3.3.3.3 的8080
站在haproxy的角度上来看,会有非常多的客户端来访问haproxy,由haproxy来做为中间人将客户端请求转发到后端后。 haproxy是通过什么机制来保证 1.1.1.1的客户端请求依然是返回给他而不是别的机器呢。
确实不了解,才想问下您。
我想把我的问题,再说的详细一点,比如说DNAT,靠的是在系统里面维护一张NAT转换关系表项,来保证一一对应。那haproxy是不是也维护着同样的一个转换关系表,如果确实存在,能通过什么方式查看到吗。
我自己做过的尝试是用tcpdump抓包,网络层是看清楚了,能看到客户端请求先是到haproxy,haproxy再做为源IP发送请求到后端。
但还是不知道haproxy在软件层面具体的反向代理原理。
另外haproxy 的4层tcp和7层 http 代理的原理有区别吗。
一直以来,听说的是nginx只做