Haproxy 实现Apache的负载均衡

Haproxy: 172.16.100.128 Node1:    172.16.100.101    web1 Node2:    172.16.100.102    web2 安装haproxy # yum install haproxy -y # rpm -ql haproxy /etc/haproxy /etc/haproxy/haproxy.cfg #主配置文件 /etc/logrotate.d/haproxy /etc/rc.d/init.d/haproxy # 启动脚本 /usr/bin/halog /usr/bin/iprange /usr/sbin/haproxy # cat /ect/haproxy/haproxy.cfg #--------------------------------------------------------------------- # Example configuration for a possible web application.  See the # full configuration options online. # #   http://haproxy.1wt.eu/download/1.4/doc/configuration.txt # #--------------------------------------------------------------------- #--------------------------------------------------------------------- # Global settings #--------------------------------------------------------------------- global     # to have these messages end up in /var/log/haproxy.log you will     # need to:     #     # 1) configure syslog to accept network log events.  This is done     #    by adding the '-r' option to the SYSLOGD_OPTIONS in     #    /etc/sysconfig/syslog     #     # 2) configure local2 events to go to the /var/log/haproxy.log     #   file. A line like the following can be added to     #   /etc/sysconfig/syslog     #     #    local2.*                       /var/log/haproxy.log     #     log         127.0.0.1 local2     chroot      /var/lib/haproxy     pidfile     /var/run/haproxy.pid     maxconn     4000     user        haproxy     group       haproxy     daemon     # turn on stats unix socket     stats socket /var/lib/haproxy/stats #--------------------------------------------------------------------- # common defaults that all the 'listen' and 'backend' sections will # use if not designated in their block #--------------------------------------------------------------------- defaults     mode                    http     log                     global     option                  httplog     option                  dontlognull     option http-server-close     option forwardfor       except 127.0.0.0/8     option                  redispatch     retries                 3     timeout http-request    10s    timeout queue           1m     timeout connect         10s    timeout client          1m    timeout server          1m     timeout http-keep-alive 10s     timeout check           10s     maxconn                 3000 listen stats mode http bind *:1080 stats enable stats hide-version stats uri/haproxyadmin?stats stats realmHaproxy\ Statistics stats authadmin:admin stats admin if TRUE frontend web bind *:80 log global option httpclose option logasap option dontlognull capture request header Host len 20 capture request header Referer len 60 default_backend servers backend servers balance roundrobin server web1 172.16.100.101:80 check maxconn 3000 server web2 172.16.100.102:80 check maxconn 3000 # haproxy  -c -f /etc/haproxy/haproxy.cfg # 检查配置文件 # service haproxy start 访问:http://172.16.100.128两台web可以轮询切换 访问监控状态页面:http://172.16.100.128:1080/haproxyadmin?stats  以下关于haproxy的调度算法: 定义负载均衡算法,可用于“defaults”、“listen”和“backend”。用于在负载均衡场景中挑选一个server,其仅应用于持久信息不可用的条件下或需要将一个连接重新派发至另一个服务器时。支持的算法有:            roundrobin:基于权重进行轮叫,在服务器的处理时间保持均匀分布时,这是最平衡、最公平的算法。此算法是动态的,这表示其权重可以在运行时进行调整,不过,在设计上,每个后端服务器仅能最多接受4128个连接;          static-rr:基于权重进行轮叫,与roundrobin类似,但是为静态方法,在运行时调整其服务器权重不会生效;不过,其在后端服务器连接数上没有限制;          leastconn:新的连接请求被派发至具有最少连接数目的后端服务器;在有着较长时间会话的场景中推荐使用此算法,如LDAP、SQL等,其并不太适用于较短会话的应用层协议,如HTTP;此算法是动态的,可以在运行时调整其权重;          source:将请求的源地址进行hash运算,并由后端服务器的权重总数相除后派发至某匹配的服务器;这可以使得同一个客户端IP的请求始终被派发至某特定的服务器;不过,当服务器权重总数发生变化时,如某服务器宕机或添加了新的服务器,许多客户端的请求可能会被派发至与此前请求不同的服务器;常用于负载均衡无cookie功能的基于TCP的协议;其默认为静态,不过也可以使用hash-type修改此特性;          uri:对URI的左半部分(“问题”标记之前的部分)或整个URI进行hash运算,并由服务器的总权重相除后派发至某匹配的服务器;这可以使得对同一个URI的请求总是被派发至某特定的服务器,除非服务器的权重总数发生了变化;此算法常用于代理缓存或反病毒代理以提高缓存的命中率;需要注意的是,此算法仅应用于HTTP后端服务器场景;其默认为静态算法,不过也可以使用hash-type修改此特性;          url_param:通过为URL指定的参数在每个HTTPGET请求中将会被检索;如果找到了指定的参数且其通过等于号“=”被赋予了一个值,那么此值将被执行hash运算并被服务器的总权重相除后派发至某匹配的服务器;此算法可以通过追踪请求中的用户标识进而确保同一个用户ID的请求将被送往同一个特定的服务器,除非服务器的总权重发生了变化;如果某请求中没有出现指定的参数或其没有有效值,则使用轮叫算法对相应请求进行调度;此算法默认为静态的,不过其也可以使用hash-type修改此特性;          hdr():对于每个HTTP请求,通过指定的HTTP首部将会被检索;如果相应的首部没有出现或其没有有效值,则使用轮叫算法对相应请求进行调度;其有一个可选选项“use_domain_only”,可在指定检索类似Host类的首部时仅计算域名部分(比如通过www.magedu.com来说,仅计算magedu字符串的hash值)以降低hash算法的运算量;此算法默认为静态的,不过其也可以使用hash-type修改此特性;          rdp-cookie
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章