1、Haproxy配置介绍:前端
一、global:参数是进程级的,一般和操做系统(OS)相关。这些参数通常只设置一次,若是配置无误,就不须要再次配置进行修改。
二、defaults:配置默认参数的,这些参数能够被利用配置到frontend,backend,listen组件。
三、frontend:接收请求的前端虚拟节点,Frontend能够根据规则直接指定具体使用后端的 backend(可动态选择)。
四、backend:后端服务集群的配置,是真实的服务器,一个Backend对应一个或者多个实体服务器。
五、listen:Frontend和Backend的组合体。
2、Haproxy负载均衡算法介绍:算法
balance roundrobin # 轮询,软负载均衡基本都具有这种算法
balance static-rr # 根据权重,建议使用
balance leastconn # 最少链接者先处理,建议使用
balance source # 根据请求源IP,建议使用
balance uri # 根据请求的URI
balance url_param # 根据请求的URl参数'balance url_param' requires an URL parameter name
balance hdr(name) # 根据HTTP请求头来锁定每一次HTTP请求
balance rdp-cookie(name) # 根据据cookie(name)来锁定并哈希每一次TCP请求
3、用户Session保持、共享:
后端
因为用户请求通过Haproxy处理转发到不一样服务器以后,可能致使Session会话不一样步的问题,若想实现会话共享或保持,可采用以下3种方式:服务器
一、基于IP地址:cookie
配置:balance source
session
实现原理:相似Nginx的IP_Hash,将用户IP通过Hash对比判断以后,将请求转发到后端服务器。
app
二、基于Cookie识别:负载均衡
配置:cookie SESSION_COOKIE insert indirect nocache
frontend
实现原理:向Web服务器端发送给客户端的Cookie中插入(或添加加前缀)haproxy定义的后端的服务器COOKIE ID。
ide
三、基于Session识别:
配置:appsession JSESSIONID len 64 timeout 5h request-learn
实现原理:Haproxy将后端服务器产生的session和后端服务器标识存在haproxy中的一张表里。客户端请求时先查询这张表。
参考文章:
https://www.douban.com/note/275230796/