马哥门徒N57-SRE第八周

1、haproxy + nginx 实现四、七层IP透传

HAProxy在四层的工作原理
在四层负载设备中,把client发送的报文目标地址(原来是负载均衡设备的IP地址),根据均衡设备设置的选择web服务器的规则选择对应的web服务器IP地址,这样client就可以直接跟此服务器建立TCP连接并发送数据。  
haproxy在四层的工作流程分为两个阶段:    
第一阶段:client发送http请求报文到haproxy,haproxy由于工作在第四层,因此通过拆包可以查看到TCP/IP包头信息,haproxy根据定义的规则将client请求的目标地址修改为后端的web服务器的IP地址,与此同时还将源地址修改为haproxy的IP地址并转发给后端的web服务器。    
第二阶段:后端的web服务器将响应的结果封装成响应报文发送给haproxy服务器后,haproxy再将报文的源地址修改为haproxy的IP地址,目标地址修改为client的IP地址并转发给client。
HAProxy在七层的工作原理
七层负载均衡服务器起了一个代理服务器的作用,服务器建立一次TCP连接要三次握手,而client要访问webserver要先与七层负载设备进行三次握手后建立TCP连接,把要访问的报文信息发送给七层负载均衡;然后七层负载均衡再根据设置的均衡规则选择特定的webserver,然后通过三次握手与此台webserver建立TCP连接,然后webserver把需要的数据发送给七层负载均衡设备,负载均衡设备再把数据发送给client;所以,七层负载均衡设备起到了代理服务器的作用。
haproxy在七层的工作流程分为四个阶段:
第一阶段:client发送http请求报文到haproxy,haproxy接收到client的http请求报文后,会查看client的请求报文,根据http请求报文的信息在结合haproxy自身定义的规则判断出client要访问后端的web服务器;
第二阶段:haproxy根据client的请求报文判断要访问的后端的web服务器后,会代替客户端的重新发起http请求报文到后端的web服务器;
第三阶段:后端的web服务器接收到haproxy的http请求报文后,如果访问的资源存在且权限允许的话会将haproxy请求的资源封装成响应报文并发送给haproxy服务器;
第四阶段:haproxy接收到web服务器的响应报文后,haproxy将后端web服务器返回的结果封装成响应报文并发送给client。
HAProxy的四层与七层的区别
在这里插入图片描述  
如上图所示,HAProxy的四层与七层的主要区别就在于是否重新发起了http请求,如果重新发来http请求则说明工作在第七层,若没有重新发起http请求则说明haproxy工作在第四次。

这也就是为什么HAProxy在反向代理MySQL,Redis,RDP等服务时需要特别指定mode为TCP模式的主要原因,因为工作在七层会重新发起http请求,而重新发起的http请求MySQL,Redis,RDP等服务压根就不认识,因为这些服务都有着自己默认的协议。

**四层:HAproxy:

  1. listen web_host
  2. bind 192.168.10.10:80
  3. mode tcp
  4. balance roundrobin
  5. server 192.168.10.13:80 send-proxy check inter 3000 fall 3 rise 5

七层:HAproxy:
option forwardfor #或者option forwardfor x-Forwarded-web_api

  1. listen web_host
  2. bind 80
  3. mode http
  4. <
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值