当前位置 : 主页 > 操作系统 > centos >

haproxy 常用轮询算法及日常配置

来源:互联网 收集:自由互联 发布时间:2022-06-20
1.1 常见轮询算法介绍 roundrobin基于权重进行轮询,在服务器的处理时间保持均匀分布时,这是最平衡,最公平的算法.此算法是动态的,这表示其权重可以在运行时进行调整.不过在设计上,每个

1.1 常见轮询算法介绍

roundrobin 基于权重进行轮询,在服务器的处理时间保持均匀分布时,这是最平衡,最公平的算法.此算法是动态的,这表示其权重可以在运行时进行调整.不过在设计上,每个后端服务器仅能最多接受4128个连接 static-rr 基于权重进行轮叫,与roundrobin类似,但是为静态方法,在运行时调整其服务器权重不会生效.不过,其在后端服务器连接数上没有限制 leastconn 新的连接请求被派发至具有最少连接数目的后端服务器.在有着较长时间会话的场景中推荐使用此算法,如LDAP、SQL等;其并不太适用于较短会话的应用层协议,如HTTP.此算法是动态的,可以在运行时调整其权重 first 第一个具有可用连接槽的服务器得到连接.这些服务器将从最小到最大的id选择.一旦一个服务器到达它的最大连接数,下一个服务器将被使用.如果不定义每个服务器的maxconn参数,这个算法是无意义的.使用这个算法的目的是尽量使用最小数量的服务器以便于其他服务器可以在非密集时段待机.这个算法将忽略服务器权重 source 将请求的源地址进行hash运算,并由后端服务器的权重总数相除后派发至某匹配的服务器.这可以使得同一个客户端IP的请求始终被派发至某特定的服务器.不过,当服务器权重总数发生变化时,如某服务器宕机或添加了新的服务器,许多客户端的请求可能会被派发至与此前请求不同的服务器.常用于负载均衡无cookie功能的基于TCP的协议.其默认为静态,不过也可以使用hash-type修改此特性 uri 对URI的左半部分(“?”标记之前的部分)或整个URI进行hash运算,并由服务器的总权重相除后派发至某匹配的服务器.这可以使得对同一个URI的请求总是被派发至某特定的服务器,除非服务器的权重总数发生了变化.此算法常用于代理缓存或反病毒代理以提高缓存的命中率.需要注意的是,此算法仅应用于HTTP后端服务器场景.其默认为静态算法,不过也可以使用hash-type修改此特性 url_param 通过< argument>为URL指定的参数在每个HTTP GET请求中将会被检索.如果找到了指定的参数且其通过等于号”=”被赋予了一个值,那么此值将被执行hash运算并被服务器的总权重相除后派发至某匹配的服务器.此算法可以通过追踪请求中的用户标识进而确保同一个用户ID的请求将被送往同一个特定的服务器,除非服务器的总权重发生了变化.如果某请求中没有出现指定的参数或其没有有效值,则使用轮叫算法对相应请求进行调度.此算法默认为静态的,不过其也可以使用hash-type修改此特性 hdr(< name>) 对于每个HTTP请求,通过< name>指定的HTTP首部将会被检索.如果相应的首部没有出现或其没有有效值,则使用轮询算法对相应请求进行调度.其有一个可选选项”use_domain_only”,可在指定检索类似Host类的首部时仅计算域名部分(比如通过www.baidu.com来说,仅计算”baidu”字符串的hash值)以降低hash算法的运算量.此算法默认为静态的,不过其也可以使用hash-type修改此特性


1.2 线上配置算法使用(仅供参考)


cat /etc/haproxy/haproxy.cfg     global #全局定义   chroot  /var/lib/haproxy   daemon   group  haproxy   log  127.0.0.1 local2 info   maxconn  40960   pidfile  /var/run/haproxy.pid   spread-checks  3   stats  socket /var/lib/haproxy/stats   user  haproxy   nbthread 16 defaults     log  global   option tcplog   maxconn  40960   mode  http   option  redispatch   option  http-server-close   option  dontlognull   balance source  ## 设置haproxy的调度算法为源地址hash   retries  3 # 定义连接后端服务器的失败重连次数,连接失败次数超过此值后将会将对应后端服务器标记为不可用   timeout  http-request 40s   timeout  queue 1m   timeout  connect 10s   timeout  client 1m   timeout  server 1m   timeout  check 10s listen haproxy_stats     #haproxy自己定义   mode http   bind 10.0.0.191:8888   option httplog   stats refresh 30s   stats uri /status   stats realm Haproxy Manager   stats auth xxxx:xxxx #### #BEGIN listen for OpenStack mariadb-server BEGIN# listen mariadb   bind mariadb.cty.os:10024   mode  tcp   balance  source #设置haproxy的调度算法为源地址hash   option  httpchk   option  tcplog   timeout  client 1800s   timeout  server 1800s #监测的间隔时长毫秒 inter 2000 #监测正常多少次后被认为后端服务器是可用的 rise 2 #监测失败多少次后被认为后端服务器是不可用 fall 5   server node-1 10.0.0.180:18913 check port 39000 inter 2000 rise 2 fall 5   server node-2 10.0.0.181:18913 backup check port 39000 inter 2000 rise 2 fall 5   server node-3 10.0.0.182:18913 backup check port 39000 inter 2000 rise 2 fall 5   #END listen for OpenStack mariadb-server END# # BEGIN listen for OpenStack keystone BEGIN listen keystone-admin   bind keystone-admin.cty.os:10006   balance roundrobin #基于权重进行轮询   option  tcpka   option  httpchk   option  httplog   server node-1 10.0.0.180:18896 check inter 2000 rise 2 fall 5   server node-2 10.0.0.181:18896 check inter 2000 rise 2 fall 5   server node-3 10.0.0.182:18896 check inter 2000 rise 2 fall 5   listen keystone-public   bind keystone-public.cty.os:10008   balance roundrobin   option  tcpka   option  httpchk   option  httplog   server node-1 10.0.0.180:18897 check inter 2000 rise 2 fall 5   server node-2 10.0.0.181:18897 check inter 2000 rise 2 fall 5   server node-3 10.0.0.182:18897 check inter 2000 rise 2 fall 5   # END listen for OpenStack keystone END #BEGIN listen for OpenStack Glance BEGIN# listen glance-api   bind glance-api.cty.os:10002   balance roundrobin   option  tcpka   option  httpchk   option  httplog   server node-1 10.0.0.180:18894 check inter 2000 rise 2 fall 5   server node-2 10.0.0.181:18894 check inter 2000 rise 2 fall 5   server node-3 10.0.0.182:18894 check inter 2000 rise 2 fall 5   #END listen for OpenStack Glance END# #BEGIN listen for OpenStack cinder BEGIN# listen cinder-api   bind cinder-api.cty.os:10014   balance roundrobin   option  tcpka   option  httpchk   option  httplog   server node-1 10.0.0.180:18900 check inter 2000 rise 2 fall 5   server node-2 10.0.0.181:18900 check inter 2000 rise 2 fall 5   server node-3 10.0.0.182:18900 check inter 2000 rise 2 fall 5   #END listen for OpenStack cinder END# #BEGIN listen for OpenStack neutron-server BEGIN# listen neutron   bind neutron-server.cty.os:10018   balance roundrobin   option  tcpka   option  httpchk   option  httplog   server node-1 10.0.0.180:18912 check inter 2000 rise 2 fall 5   server node-2 10.0.0.181:18912 check inter 2000 rise 2 fall 5   server node-3 10.0.0.182:18912 check inter 2000 rise 2 fall 5   #END listen for OpenStack neutron-server END# #BEGIN listen for OpenStack nova-api BEGIN# listen nova-api   bind nova-api.cty.os:10010   balance roundrobin   option  tcpka   option  httpchk   option  httplog   server node-1 10.0.0.180:18898 check inter 2000 rise 2 fall 5   server node-2 10.0.0.181:18898 check inter 2000 rise 2 fall 5   server node-3 10.0.0.182:18898 check inter 2000 rise 2 fall 5   #END listen for OpenStack nova-api END# #BEGIN listen for OpenStack nova-placement BEGIN# listen nova-placement   bind nova-placement-api.cty.os:10013   balance roundrobin   option  tcpka   option  httplog   server node-1 10.0.0.180:18887 check inter 2000 rise 2 fall 5   server node-2 10.0.0.181:18887 check inter 2000 rise 2 fall 5   server node-3 10.0.0.182:18887 check inter 2000 rise 2 fall 5   #END listen for OpenStack nova-placement END# #BEGIN listen for OpenStack nova-metadata-api BEGIN# listen nova-metadata-api   bind nova-api-metadata.cty.os:10012   balance roundrobin   option  tcpka   option  httplog   server node-1 10.0.0.180:18899 check inter 2000 rise 2 fall 5   server node-2 10.0.0.181:18899 check inter 2000 rise 2 fall 5   server node-3 10.0.0.182:18899 check inter 2000 rise 2 fall 5   #END listen for OpenStack nova-metadata-api END#





上一篇:k8s部署+dashboard+prometheus+Grafana
下一篇:没有了
网友评论