24小时新闻关注

祝酒歌,泰兴天气,国海证券-头脑风暴新闻在线

一、四层和七层负载均衡的差异

所谓的四层便是ISO参阅模型中的第四层。四层负载均衡也称为四层交换机,它首要是经过剖析IP层及TCP/UDP层的流量完结的依据IP加端口的负载均衡。常见的依据四层的负载均衡器有LVS、F5等。

以常见的TCP运用为例,负载均衡器在接纳到第一个来自客户端的SYN恳求时,会经过设定的负载均衡算法挑选一个最佳的后端服务器,一同将报文中方针IP地址修正为后端服务器IP,然后直接转发给该后端服务器,这样一个负载均衡恳求就完结了。从这个进程来看,一个TCP衔接是客户端和服务器直接树立的,而负载均衡器只不过完结了一个相似路由器的转发动作。在某些负载均衡战略中,为确保后端服务器回来的报文能够正确传递给负载均衡器,在转发报文的一同或许还会对报文本来的源地址进行修正。整个进程下图所示。



同理,七层负载均衡器也称为七层交换机,坐落OSI的最高层,即运用层,此刻负载均衡器支撑多种运用协议,常见的有HTTP、FTP、SMTP等。七层负载均衡器能够依据报文内容,再合作负载均衡算法来挑选后端服务器,因而也称为“内容交换器”。比方,关于Web服务器的负载均衡,七层负载均衡器不光能够依据“IP+端口”的办法进行负载分流,还能够依据网站的URL、拜访域名、浏览器类别、言语等决议负载均衡的战略。例如,有两台Web服务器别离对应中英文两个网站,两个域名别离是A、B,要完结拜访A域名时进入中文网站,拜访B域名时进入英文网站,这在四层负载均衡器中几乎是无法完结的,而七层负载均衡能够依据客户端拜访域名的不同挑选对应的网页进行负载均衡处理。常见的七层负载均衡器有HAproxy、Nginx等。

这儿仍以常见的TCP运用为例,因为负载均衡器要获取到报文的内容,因而只能先替代后端服务器和客户端树立衔接,接着,才干收到客户端发送过来的报文内容,然后再依据该报文中特定字段加上负载均衡器中设置的负载均衡算法来决议终究挑选的内部服务器。纵观整个进程,七层负载均衡器在这种情况下相似于一个代理服务器。整个进程如下图所示。



比照四层负载均衡和七层负载均衡运转的整个进程,能够看出,在七层负载均衡形式下,负载均衡器与客户端及后端的服务器会别离树立一次TCP衔接,而在四层负载均衡形式下,仅树立一次TCP衔接。由此可知,七层负载均衡对负载均衡设备的要求更高,而七层负载均衡的处理才能也必定低于四层形式的负载均衡。

二、HAProxy与LVS的异同

经过之前文章的介绍,我们应该根本清楚了HAProxy负载均衡与LVS负载均衡的优缺点和异同了。下面就这两种负载均衡软件的异同做一个简略总结:

1)两者都是软件负载均衡产品,可是LVS是依据Linux操作体系完结的一种软负载均衡,而HAProxy是依据第三运用完结的软负载均衡。

2)LVS是依据四层的IP负载均衡技能,而HAProxy是依据四层和七层技能、可提供TCP和HTTP运用的负载均衡归纳处理方案。

3)LVS作业在ISO模型的第四层,因而其状况监测功用单一,而HAProxy在状况监测方面功用强壮,可支撑端口、URL、脚本等多种状况检测办法。

4)HAProxy尽管功用强壮,可是全体处理功用低于四层形式的LVS负载均衡,而LVS具有挨近硬件设备的网络吞吐和衔接负载才能。

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

三、快速装置HAProxy集群软件

能够在HAProxy的官网http:// www.haproxy.org/下载HAProxy的源码包,这儿以操作体系Centos6.5版别为例,下载的HAProxy是现在的安稳版别haproxy-1.6.4.tar.gz,装置进程如下:

[root@haproxy-server app]# tar zcvf haproxy-1.6.4.tar.gz
[root@haproxy-server app]#cd haproxy-1.6.4
[root@haproxy-server haproxy-1.6.4]#make TARGET=linux26 PREFIX=/usr/local/haproxy
[root@haproxy-server haproxy-1.6.4]#make install PREFIX=/usr/local/haproxy
#将haproxy装置到/usr/local/haproxy下
[root@haproxy-server haproxy-1.6.4]#mkdir /usr/local/haproxy/conf
#haproxy默许不创立装备文件目录,这儿是创立haproxy装备文件目录
[root@haproxy-server haproxy-1.6.4]# cp examples/ option-http_proxy.cfg \
/usr/local/haproxy/conf/haproxy.cfg#haproxy

装置完结后,默许装置目录中没有装备文件,这儿是将源码包里边的示例装备文件拷贝到装备文件目录

这样,HAProxy就装置完结了。

四、HAProxy根底装备文件详解

HAProxy装备文件依据功用和用处,首要有5个部分组成,但有些部分并不是有必要的,能够依据需求挑选相应的部分进行装备。

(1)global部分

用来设定大局装备参数,归于进程级的装备,一般和操作体系装备有关。

(2)defaults部分

默许参数的装备部分。在此部分设置的参数值,默许会主动被引用到下面的frontend、backend和listen部分中,因而,假如某些参数归于共用的装备,只需在defaults部分增加一次即可。而假如在frontend、backend和listen部分中也装备了与defaults部分相同的参数,那么defaults部分参数对应的值主动被掩盖。

(3)frontend部分

此部分用于设置接纳用户恳求的前端虚拟节点。frontend是在HAProxy1.3版别之后才引进的一个组件,一同引进的还有backend组件。经过引进这些组件,在很大程度上简化了HAProxy装备文件的复杂性。frontend能够依据ACL规矩直接指定要运用的后端backend。

(4)backend部分

此部分用于设置集群后端服务集群的装备,也便是用来增加一组实在服务器,以处理前端用户的恳求。增加的实在服务器相似于LVS中的real server节点。

(5)listen部分

此部分是frontend部分和backend部分的结合体。在HAProxy1.3版别之前,HAProxy的一切装备选项都在这个部分中设置。为了坚持兼容性,HAProxy新的版别依然保留了listen组件的装备办法。现在在HAProxy中,两种装备办法任选其一即可。

下面是一个完好的HAProxy装备文件

global
log 127.0.0.1 local0 info
maxconn 4096
user nobody
group nobody
daemon
nbproc 1
pidfile /usr/local/haproxy/logs/haproxy.pid
defaults
mode http
retries 3
timeout connect 10s
timeout client 20s
timeout server 30s
timeout check 5s
frontend www
bind *:80
mode http
option httplog
option forwardfor
option httpclose
log global
#acl host_www hdr_dom(host) -i www.zb.com
#acl host_img hdr_dom(host) -i img.zb.com
#use_backend htmpool if host_www
#use_backend imgpool if host_img
default_backend htmpool
backend htmpool
mode http
option redispatch
option abortonclose
balance static-rr
cookie SERVERID
option httpchk GET /index.jsp
server 237server 192.168.81.237:8080 cookie server1 weight 6 check inter 2000 rise 2 fall 3
server iivey234 192.168.81.234:8080 cookie server2 weight 3 check inter 2000 rise 2 fall 3
backend imgpool
mode http
option redispatch
option abortonclose
balance static-rr
cookie SERVERID
option httpchk GET /index.jsp
server host236 192.168.81.236:8080 cookie server1 weight 6 check inter 2000 rise 2 fall 3
listen admin_stats
bind 0.0.0.0:9188
mode http
log 127.0.0.1 local0 err
stats refresh 30s
stats uri /haproxy-status
stats realm welcome login\ Haproxy
stats auth admin:admin~!@
stats hide-version
stats admin if TRUE

五、发动与测验haproxy的负载均衡功用

1、发动与办理haproxy
发动服务:
# /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负载均衡器算法与运用技巧

1、HAProxy支撑的负载均衡算法

(1)、roundrobin,表明简略的轮询,负载均衡根底算法

(2)、static-rr,表明依据权重

(3)、leastconn,表明最少衔接者先处理

(4)、source,表明依据恳求源IP

(5)、uri,表明依据恳求的URI;

(6)、url_param,表明依据恳求的URl参数来进行调度

(7)、hdr(name),表明依据HTTP恳求头来确定每一次HTTP恳求;

(8)、rdp-cookie(name),表明依据据cookie(name)来确定并哈希每一次TCP恳求。

2、常用的负载均衡算法

(1)轮询算法:roundrobin

(2)依据恳求源IP算法:source

(3)最少衔接者先处理算法:lestconn

七、经过HAProxy的ACL规矩完结智能负载均衡

因为HAProxy能够作业在七层模型下, 因而,要完结HAProxy的强壮功用,一定要运用强壮灵敏的ACL规矩,经过ACL规矩能够完结依据HAProxy的智能负载均衡体系。HAProxy经过ACL规矩完结两种首要的功用,别离是:

1)经过设置的ACL规矩检查客户端恳求是否合法。假如契合ACL规矩要求,那么就将放行,横竖,假如不契合规矩,则直接中断恳求。

2)契合ACL规矩要求的恳求将被提交到后端的backend服务器集群,从而完结依据ACL规矩的负载均衡。

HAProxy中的ACL规矩常常运用在frontend段中,运用办法如下:

acl 自界说的acl称号 acl办法 -i [匹配的途径或文件]

其间:

acl:是一个关键字,表明界说ACL规矩的开端。后边需求跟上自界说的ACL称号 。

acl办法:这个字段用来界说完结ACL的办法,HAProxy界说了许多ACL办法,常常运用的办法有hdr_reg(host)、hdr_dom(host)、hdr_beg(host)、url_sub、url_dir、path_beg、path_end等。

-i:表明疏忽大小写,后边需求跟上匹配的途径或文件或正则表达式。

与ACL规矩一同运用的HAProxy参数还有use_backend,use_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的监控渠道,经过这个渠道能够检查此集群体系一切后端服务器的运转状况,在后端服务或服务器呈现毛病时,监控页面会经过不同的色彩来展现毛病信息,这在很大程度上处理了后端服务器毛病报警的问题,运维人员可经过监控这个页面来第一时间发现节点毛病,从而修正毛病。


推荐新闻