负载均衡
KEEPALIVED安装与使用
keepalived配置说明
keepalived检测方式
keepalived LVS配置
LVS
LVS-NAT集群的搭建
LVS-DR集群的搭建
KEEPALIVED+LVS
HAproxy
HAProxy配置说明
HAproxy算法
HAProxy管理页
HAProxy保持
HAProxyACL规则
NGINX
NGINX负载均衡
NGINX负载示例二
负载转发路径问题
缓冲缓存参数详解
限制代理ip方法
负载参数详解
nginx_upstream_check_module
正向代理(HTTP)
本文档使用MrDoc发布
返回首页
-
+
HAproxy算法
2020年2月14日 16:37
admin
![](/media//201911/2019-11-28105547252321.png) ##balance roundrobin # 轮询,软负载均衡基本都具备这种算法 基于权重的轮询动态调度算法,支持权重的运行时调整,不等于 lvs 的 rr,支持慢启动即新加的服务器会主键增加转发数,每个后端 backend 中最多支持 4095 个 server,为此默认调度算法,server 权重设置 weight ##balance static-rr # 根据权重 基于权重的轮询调度,不支持权重的运行时调整及后端服务器慢启动,其后端主机数量没有限制 ##balance leastconn # 最少连接者先处理 根据服务器在列表中的位置,自上而下进行调度,但是其只会当第一台服务器的链接数达到上限,新请求才会分配给下一台服务,因此会忽略服务器的权重设置 ##balance first 根据服务器在列表中的位置,自上而下进行调度,但是其只会当第一台服务器的链接数达到上限,新请求才会分配给下一台服务,因此会忽略服务器的权重设置 ##balance source # 根据请求源IP >source:源地址 hash,基于用户源地址 hash 并将请求转发到后端服务器,默认为静态即取模方式,但是可以通过 hash-type 支持的选项更改,后续同一个源地址请求将被转发值同一个后端 web 服务器,比较使用与 session 保持等场景 >1.map-based:取模法,基于服务器权重的 hash 数组取模,该 hash 时静态的即不支持在线调整权重,不支持慢启动,其对后端服务器调度均衡,缺点是当度武器的总权重发生变化时,即有服务器上线或下线,都会因权重发生变化而导致调度结果整体改变 >2.consistent:一致性哈希,该 hash 是动态的,支持在线调整权重,支持慢启动,优点在于当服务器的总权重发生变化时,对调度结果影响是局部的,不会引起答的变动,该算法很容易导致后端服务器负载不均衡,但是比较合适 session 保持 ####示例: listen web_port_http_nodes bind 192.168.7.101:80 node http balance source hash-type consistent log global option forwardfor server 192.168.7.101 192.168.7.101:8080 check inter 3000 fall 3 rise 5 server 192.168.7.102 192.168.7.102:8080 check inter 3000 fall 3 rise 5 ##balance uri # 根据请求的URI >uri:基于对用户请求的 uri 做 hash 并将请求转发到后端指定服务器 map-based:取模法 consistent:一致性哈希 ####示例: listen web_port_http_nodes bind 192.168.7.101:80 mode http # 不支持 tcp,会切换到 tcp 的 roundrobin 负载模式 balance uri hash-type consistent log global option forwardfor server 192.168.7.101 192.168.7.101:8080 check inter 3000 fall 3000 rise 5 server 192.168.7.102 192.168.7.102:8080 check inter 3000 fall 3 rise 5 ##balance url_param, # 根据请求的URl参数'balance url_param' requires an URL parameter name >url_param:对用户请求的 url 中的 <params> 部分中的参数 name 作 hash 计算,并由服务器总权重相除以后派发至某挑选出的服务器;通常用于追踪用户,以确保来自同一个用户的请求 发往同一个 Backend Server 假设 url=http://www.rookie.com/foo/bar/index.php?k1=v1&k2=v2 则 host = "www.rookie.com" url_param = "k1=v1&k2=v2" ####示例: listen web_port_http_nodes bind 192.168.7.101:80 mode http # 不支持 tcp,会切换到 tcp 的 roundrobin 负载模式 balance url_param NAME # 基于参数 NAME 做 hash hash-type consistent log global option forwardfor server 192.168.7.101 192.168.7.101:8080 check inter 3000 fall 3 rise 5 server 192.168.7.102 192.168.7.102:8080 check inter 3000 fall 3 rise 5 ##balance hdr(name) # 根据HTTP请求头来锁定每一次HTTP请求 >hdr(<name>):针对用户每个 http 头部 (header) 请求中的指定信息做 hash,此处由 <name> 指定的 http 首部将会被去除并做 hash 计算,然后由服务器总权重相除以后派发至某挑选出的服务器,假如无有效值,则会被轮询调度 hdr (Cookie、User-Agent、host) ####示例: listen web_port_http_nodes bind 192.168.7.101:80 mode http balance hdr(User-Agent) hash-type consistent log global option forwardfor server 192.168.7.101 192.168.7.101:8080 check inter 3000 fall 3 rise 5 server 192.168.7.102 192.168.7.102:8080 check inter 3000 fall 3 rise 5 ##balance rdp-cookie(name) # 根据据cookie(name)来锁定并哈希每一次TCP请求 >rdp-cookie 对远程桌面的负载,使用 cookie 做会话保持 rdp-cookie(<name>) ####示例: listen RDP bind 192.168.7.101:3389 balance rdp-cookie mode tcp server rdp0 192.168.10.20:3389 check inter 2000 fall 3 rise 5 weight 1 server rdp1 192.168.10.30:3389 check inter 2000 fall 3 rise 5 weight 1
分享到: