HAProxy Balance 调度算法详解
1、实验环境及基础配置请参考如下博客
HAProxy 简单示例及 HAProxy_Log 的简单配置
1.1 拓扑如下
2、HAProxy 调度算法介绍
2.1 官方文档相关说明
点此链接,查看 HAProxy 官方文档关于 Balance 的介绍
### yum base repo 安装的版本为 1.5 ###
[root@Tang ~]# rpm -q haproxy
haproxy-1.5.18-9.el7.x86_64
2.2 算法 1 — roundrobin
2.2.1 roundrobin 介绍
动态算法:支持权重的运行时调整,支持慢启动;每个后端中最多支持4095个server。
2.2.2 roundrobin 示例
2.2.2.1 HAProxy 配置
[root@Tang ~]# ipinfo
enp1s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.16.141.252 netmask 255.255.255.0 broadcast 172.16.141.255
[root@Tang ~]# vim /etc/haproxy/haproxy.cfg
frontend web
bind *:80
default_backend websrvs
backend websrvs
balance roundrobin
server srv1 172.16.141.209:80 weight 1 check
server srv2 172.16.141.209:8080 weight 1 check
[root@Tang ~]# systemctl restart haproxy
2.2.2.2 用户进行访问(按照权重进行轮询访问)
[root@Tang-2 ~]# ipinfo
enp1s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.16.141.253 netmask 255.255.255.0 broadcast 172.16.141.255
[root@Tang-2 ~]# for i in {
1..12}; do curl http://172.16.141.252; done
<h1>This is tang's website!</h1>
<h1>This is neo's website!</h1>
<h1>This is tang's website!</h1>
<h1>This is neo's website!</h1>
<h1>This is tang's website!</h1>
<h1>This is neo's website!</h1>
<h1>This is tang's website!</h1>
<h1>This is neo's website!</h1>
<h1>This is tang's website!</h1>
<h1>This is neo's website!</h1>
<h1>This is tang's website!</h1>
<h1>This is neo's website!</h1>
2.3 算法 2 — static-rr
2.3.1 static-rr 介绍
-
静态算法:不支持权重的运行时调整及慢启动;后端主机数量无上限。
-
每台服务器根据各自的权重依次使用。这个算法与roundrobin类似,只是它是静态的,这意味着动态地更改服务器的权重不会有任何影响。另一方面,它对服务器的数量没有设计限制,当一个服务器启动时,它总是在重新计算完整的映射后立即被重新引入集群。它运行时使用的CPU也稍微少一些(大约-1%)。
2.3.2 static-rr 示例
2.3.2.1 HAProxy 配置
[root@Tang ~