基于Haproxy+Keepalived负载均衡高可用架构实现(4)

HAProxy工作于反向代理模式,其发往服务器的请求中的客户端IP均为HAProxy主机的地址而非真正客户端的地址,这会使得服务器端的日志信息记录不了真正的请求来源,"X-Forwarded-For"首部则可用于解决此问题。HAProxy可以向每个发往服务器的请求上添加此首部,并以客户端IP为其value。

需要注意的是,HAProxy工作于隧道模式,其仅检查每一个连接的第一个请求,因此,仅第一个请求报文被附加此首部。

下面是一个例子。

frontend www

mode http

option forwardfor except 127.0.0.1

在haproxy的配置文件中默认就有此选项

基于Haproxy+Keepalived负载均衡高可用架构实现

在nginx的主配置文件中也默认有此选项

基于Haproxy+Keepalived负载均衡高可用架构实现

Haproxy实现会话保持 一、源地址hash(用户IP识别)

Haroxy 将用户IP经过hash计算后 指定到固定的真实服务器上(类似于nginx 的IP hash 指令)。

缺点:当后端一台服务器挂了以后会造成部分session丢失

示例:

backend SOURCE_srv

mode http

balance source

server app-node1 10.31.1.179:80 check port 80 inter 3000 rise 3 fall 3

server app-node2 10.31.1.191:80 check port 80 inter 3000 rise 3 fall 3

server app-node3 10.31.0.35:80 check port 80 inter 3000 rise 3 fall 3

二、cookie 识别

haproxy 将WEB服务端返回给客户端的cookie中插入haproxy中特定的字符串(或添加前缀)在后端的服

务器COOKIE ID。

backend COOKIE_srv

mode http

cookie SERVERID insert indirect nocache

server app-node1 10.31.1.179:80 check port 80 cookie a inter 3000 rise 3 fall 3

server app-node2 10.31.1.191:80 check port 80 cookie b inter 3000 rise 3 fall 3

server app-node3 10.31.0.251:80 check port 80 cookie c inter 3000 rise 3 fall 3

在LB1上配置好HAProxy后,LB1将接受用户的所有请求。如果一个用户请求不包含任何cookie,那这个请求将被HAProxy转发到一台可用的WEB服务器。可能是webA,webB,webC。然后HAProxy将把处理这个请求的WEB服务器的cookie值插入到请求响应中。如SERVERID=A。当这个客户端再次访问并在HTTP请求头中带有SERVERID=A,HAProxy将会把它的请求直接转发给webA处理。在请求到达webA之前,cookie将被移除,webA将不会看到这个cookie。如果webA不可用,对应的请求将被转发到其他可用的WEB服务器,相应的cookie值也将被重新设置。

Haproxy性能优化参数

option redispatch:当server对应的服务器挂掉后,强制定向到其他健康的服务器

option dontlognull :保证HAProxy不记录上级负载均衡发送过来的用于检测状态没有数据的心跳包。

retries 3 : //3次连接失败就认为服务器不可用,主要通过后面的check检查

maxconn 30000 : //代理时所能接受的最大并发连接数,应该要比后端主机的并发总和要小

好了,今天的内容就到这里,下期再见。

构建高可用集群Keepalived+Haproxy负载均衡 

HAproxy的基本配置(负载均衡+日志独立+动静分离+读写分离) 

CentOS 7下Keepalived + HAProxy 搭建配置详解 

HAproxy实现反向代理和负载均衡 

HAProxy+Keepalived实现高可用负载均衡

使用 HAProxy 配置 HTTP 负载均衡器

Ubuntu 16.04 下安装HAProxy 1.5.11 做tcp负载均衡

CentOS 7.2 部署Haproxy 1.7.2   

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/7ba5cc8030ad3fd865eee3f82c505b2b.html