一、四层和七负载均衡的区

 

 

所谓层就ISO模型载均是 通过IPTCP/UDP层的的基IP端口见的基于负 载均衡器LVSF5等。

以常TCP负载个来户端SYN时,通 过设择一,同目标IP址修端 服IP给该个负程来看一个TCP端和立的而负了一路由 器的载均端服正确负载均衡时可源地程下

 

HAproxy+keepalived安装配置教程_第1张图片

 

同理,七层负载均衡器也称为七层交换机,位于 OSI 的最高层,即应用层,此时负载均衡器支持多种应用协议,常见的有 HTTP、FTP、SMTP 等。七层负载均衡器可以根据报文内 容,再配合负载均衡算法来选择后端服务器,因此也称为“内容交换器”。比如,对于 Web 服务器的负载均衡,七层负载均衡器不但可以根据“IP+端口”的方式进行负载分流,还可以根据网站的 URL、访问域名、浏览器类别、语言等决定负载均衡的策略。例如,有两台 Web 服务器分别对应中英文两个网站,两个域名分别是 A、B,要实现访问 A 域名时进入中 文网站,访问 B 域名时进入英文网站,这在四层负载均衡器中几乎是无法实现的,而七层负 载均衡可以根据客户端访问域名的不同选择对应的网页进行负载均衡处理。常见的七层负载均衡器有 HAproxy、Nginx 等。

 

这里常见TCP应用器要获取内容因此只能代替后端到客户端该 报文均衡算法部服务器观 整个,七层器在个代如下

 

HAproxy+keepalived安装配置教程_第2张图片 

 

对比负载可以看出模式

负载端的TCP连接层负载均下, 仅建立一TCP此可衡对负载层负均 衡的四层

 

 

二、HAProxyLVS的异同

 

种负一个结:

1)两者都是软件负载均衡产品,但是LVS是基于Linux操作系统实现的一种软负载均衡,而HAProxy是基于第三应用实现的软负载均衡。


2)LVS是基于四层的IP负载均衡技术,而HAProxy是基于四层和七层技术、可提供TCP和HTTP应用的负载均衡综合解决方案。


3)LVS工作在ISO模型的第四层,因此其状态监测功能单一,而HAProxy在状态监测 方面功能强大,可支持端口、URL、脚本等多种状态检测方式。


4)HAProxy虽然功能强大,但是整体处理性能低于四层模式的LVS负载均衡,而LVS拥有接近硬件设备的网络吞吐和连接负载能力。

 

综上所述,HAProxy和LVS各有优缺点,没有好坏之分,要选择哪个作为负载均衡器,要以实际的应用环境来决定。


 

 

三、快速安HAProxy集群软件

 

 

HAProxyhttp://www.haproxy.org/HAProxy操作系统Centos6.6 X64载的HAProxyhaproxy-1.6.7.tar.gz如 下:

 

#tar -zxvf haproxy-1.6.7.tar.gz


#cd haproxy-1.6.7


#make TARGET=linux26 PREFIX=/usr/local/haproxy

注:此处TARGET=linux26是填写系统内核版本 ,内核版本怎么看. uname -r 。如我的版本是2.6.32-504.el6.x86_64, 直接填写26即可。


#make install PREFIX=/usr/local/haproxy

  haproxy/usr/local/haproxy


 

#mkdir  /usr/local/haproxy/conf

 haproxy文件haproxy目录


 

# cp examples/option-http_proxy.cfg  /usr/local/haproxy/conf/haproxy.cf

 

#haproxy,默认安件,这里例配件目录

这样HAProxy完成了。

 

 

四、HAProxy基础配置文件详

 

 

HAProxy据功能和5分组是必的, 可以部分置。

1)   global部分 用来属于和操


2)   defaults部分 默认此部认会下面frontend

backendlisten因此公用只需defaults部分添加 一次果在frontendbackendlisten部分中也defaults一样,那么defaults应的盖。

3)   frontend部分

 

此部请求frontendHAProxy1.3版本之后引 入的一个组件,同时引的还有backend组件过引入这些组件,在很程度上简化了 HAProxy杂性frontendACL规则使backend

4)   backend部分 此部服务用来理前

端用实服类似LVSreal server点。

 

5)   listen部分

 

此部frontendbackend合体HAProxy1.3HAProxy的 所有分中性,HAProxy本仍然保listen 组件目前HAProxy方式任选可。

下面HAProxy置文件

 

Global

log127.0.0.1 local0 info

maxconn4096

usernobody

groupnobody

daemon

nbproc 1

pidfile/usr/local/haproxy/logs/haproxy.pid

 

defaults

 

mode http

retries 3

timeoutconnect 10s

timeoutclient 20s

timeoutserver 30s

timeoutcheck 5s

 

frontend www

 

bind *:80

mode    http

 

 

option httplog

option forwardfor

option httpclose

log    global

 

#acl host_wwwhdr_dom(host)   -i  www.zb.com

#acl host_imghdr_dom(host)   -i  img.zb.com

 

#use_backendhtmpool   if  host_www

#use_backendimgpool   if  host_img

default_backend     htmpool

 

backend htmpool

 

mode http

optionredispatch

optionabortonclose

balance    static-rr

cookieSERVERID

optionhttpchk GET /index.jsp

server237server 192.168.81.237:8080 cookie server1weight 6 check inter 2000 rise2 fall 3

serveriivey234 192.168.81.234:8080 cookie server2weight 3 check inter 2000 rise 2 fall 3

 

 

 

 

backend imgpool

mode   http

optionredispatch

optionabortonclose

balance    static-rr

cookieSERVERID

optionhttpchk GET /index.jsp

serverhost236 192.168.81.236:8080 cookie server1 weight 6 check inter 2000rise 2fall 3

 

 

listen admin_stats

bind0.0.0.0:9188

mode http

log127.0.0.1 local0 err

statsrefresh 30s

stats uri/haproxy-status

statsrealm welcome login\ Haproxy

stats authadmin:admin~!@

statshide-version

     statsadmin if TRUE



五、启动与测haproxy的负载均衡功能


 

1haproxy

 

启动务:

# /usr/local/haproxy/sbin/haproxy -f      /usr/local/haproxy/conf/haproxy.cfg

 

重启务:

# /usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/conf/haproxy.cfg \

-st `cat/usr/local/haproxy/logs/haproxy.pid`

 

停止务:

# killall haproxy

 

 

 

六、HAProxy    负载均衡器算法使用技

 

 

1HAProxy载均衡算法

1roundrobin单的算法

2static-rr根据权重

3leastconn少连处理

4sourceIP

5uri请求URI

6url_param据请URl进行调度

7hdr(name)HTTP来锁HTTP求;

8rdp-cookie(name)表示根据cookie(name)来锁每一TCP请求。

 

2

 

1roundrobin

2求源IPsource

3法:lestconn

 

七、通HAProxyACL规则实现智能负载均衡

 

 

由于HAProxy七层,因要实HAProxy一定使用强ACLACL基于HAProxy衡系HAProxy 通过ACL要的是:

1)通过设置ACL客户ACL么就将

放行规则求.

 

 

2)符合ACL请求将被backend基于

ACL


 

HAProxyACL常使frontend中,使用下:

 

acl     自定义的acl名称  acl方法  -i     [匹配的路或文件]

 

其中:

acl:是一个关键字,表示定义ACL规则的开始。后面需要跟上自定义的ACL名称。

 

acl方法:这个字段用来定义实现ACL的方法,HAProxy定义了很多ACL方法,经常使用的方法有hdr_reg(host)hdr_dom(host)hdr_beg(host)url_suburl_dir path_begpath_end等。

 

-i:表示忽略大小写,后面需要跟上匹配的路径或文件或正则表达式。

 

ACL规则一起使用的HAProxy参数还有use_backenduse_backend后面需要跟上一个backend实例名,表示在满足ACL规则后去请求哪个backend实例,与 use_backend对应的还有default_backend参数,它表示在没有满足ACL条件的时候默认使用哪个后端backend





下面常见ACL规则子:

 

acl www_policy        hdr_reg(host)           -i       ^(www.z.cn|z.cn)

 

acl bbs_policy           hdr_dom(host)         -i       bbs.z.cn

 

acl url_policy             url_sub    -i     buy_sid=

 

       use_backend    server_www    if  www_policy

       use_backend    server_app    if  url_policy    

       use_backend    server_bbs    if  bbs_policy    

       default_backend  server_cache   

   




 

 


 

八、使用HAProxy的Web监控平台

 

 

      HAProxy虽然实现了服务的故障转移,但是在主机或者服务出现故障的时候,并不能发出通知告知运维人员,这对于及时性要求很高的业务系统来说,是非常不便的,不过,HAProxy 似乎也考虑到了这一点,在新的版本中HAProxy推出了一个基于Web的监控平台,通过这 个平台可以查看此集群系统所有后端服务器的运行状态,在后端服务或服务器出现故障时,


       监控页面会通过不同的颜色来展示故障信息,这在很大程度上解决了后端服务器故障报警的 问题,运维人员可通过监控这个页面来第一时间发现节点故障,进而修复故障。

登录地址是:http://IP:9188/haproxy-status

用户名和密码:就是在配置文件里设置的 admin、admin~!@

 

 

HAproxy+keepalived安装配置教程_第3张图片

 

 

九、HAproxy+KeepAlived 高可用负载均衡系统

 

 

1HAproxy统的

 

HAproxy+keepalived安装配置教程_第4张图片 

在备机重新安haproxy,然后配haproxy,这个不再介绍,下面直接给出配置好keepalived.conf容。haproxy-serverkeepalived.conf如下

 

global_defs

 {notification_email

{

[email protected]

[email protected]

[email protected]

}

 

notification_email_from [email protected]

smtp_server 192.168.200.1

smtp_connect_timeout 30

router_id HAProxy_DEVEL

}

 

vrrp_script check_haproxy {

script "killall -0 haproxy"       

#设置探测 haproxy 服务运行状态的方式,这里的killall -0 haproxy”仅仅是检测 haproxy 服务状态

 

interval 2

}

 

 

vrrp_instance HAProxy_HA {

 

state BACKUP 

# haproxy-server backup-haproxy 上均配置为 BACKUP interface eth0

virtual_router_id 80

priority 100

advert_int 2

nopreempt     #不抢占模式,只在优先级高的机器上设置即可,优先级低的机器不设置 authentication {

auth_type PASS

auth_pass 1111

}

 

 

track_script

 

 {check_haproxy

}

 

virtual_ipaddress {

 

192.168.66.10/24 dev eth0   #HAProxy 的对外服务 IP,即 VIP

}

}


 

最后,keepalived.conf文件复制backup-haproxy服务器上对应的位置,然后keepalived.confpriority值修90,由于配置的是不抢占模式,因此,还需backup-haproxy器上去掉nopreempt项。


完成别在haproxy-serverbackup-haproxy主机启动haproxy服 务和keepalived。注意,haproxy因为keepalived服务启动 的时会自检测 haproxy是否如果haproxy务没,那主、备keepalivedfault状态。后,VIP址应haproxy-server通过令“ipa以查VIP加载