企业集群平台架构实现与应用实战

  • 四层与七层负载均衡的区别

所谓的四层就是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的异同

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,安装过程如下:

       1)#tar zxvf haproxy-1.6.4.tar.gz

       2)#cd haproxy-1.6.4

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

       4)#make install PREFIX=/usr/local/haproxy     #将haproxy安装到/usr/local/haproxy

       5)#mkdir /usr/local/haproxy/conf      #haproxy默认不创建配置文件目录,这里是创建haproxy配置文件目录

       6)#cp examples/option-http_proxy.cfg /usr/local/haproxy/conf/haproxy.cfg  #haproxy安装按成后,默认安装目录中没有配置文件,这里是将源码包里面的示例配置文件拷贝到配置文件目录。

       这样,HAproxy就安装完成了。

 

  • HAproxy基础配置文件讲解

HAproxy配置文件根据功能和用途,主要有5个部分组成,但有些部分并不是必须的,可以根据需要选择相应的部分进行配置

  1. global部分

用来设定全局配置参数,属于进程级的配置,通常和操作系统配置有关。

  1. default部分

默认参数的配置部分。在此部分设置的参数值,默认会自动被引用到下面的frontend、backend和listen部分中。因此,如果某些参数属于公用的配置,只需在default部分添加一次即可。而如果在frontend、backend和listen部分中也配置了与default部分一样的参数,那么default部分参数对应的值自动被覆盖。

  1. frontend部分

  1. backend部分

  1. listen部分

 

 

五、启动和测试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)、lestconn:表示最小连接者优先处理

       4)、source:表示根据请求源IP

       5)、uri:表示根据请求的URI

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 www_policy hdr_reg(host) –i ^(www.z.cn|z.cn)

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

 

 

八、使用HAproxy的Web监控平台

       HAproxy虽然实现了服务的故障转移,但是在主机或者服务出现故障的时候,并不能发出通知告知运维人员,这对于及时性要求很高的业务系统来说,是非常不便的,不过,HAproxy似乎也考虑到了这一点,在新的版本中HAproxy推出了一个基于web的监控平台,通过这个平台可以查看此集群系统所有后端服务器的运行状态,在后端服务或服务器出现故障时,监控页面会通过不同的颜色来展示故障信息,这在很大程度上解决了后端服务器故障报警的问题,运维人员可以通过监控这个野蛮来第一时间发现节点故障,进而修复故障。

 

 

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

1、高可用HAproxy集群系统的拓扑结构

在备机重装HAproxy,然后配置HAproxy,最后,将keepalived.conf文件复制到backup-haproxy服务器上对应的位置,然后将keepalived.conf文件中priority值修改为90,由于配置的是不抢占模式。因此,还需要在backup-haproxy服务器上去掉nopreempt选项。

       完成所有配置后,分别在haproxy-server和backup-haproxy主机上依次启动haproxy服务和keepalived服务。注意,这里一定要先启动haproxy服务,因为keepalived服务在启动的时候回自动检测haproxy服务是否正常,如果发现haproxy服务没有启动,那么主备keepalived将自动进入fault状态。在依次启动服务后,在正常情况下VIP地址应该运行在haproxy-server服务器上,通过命令“ip a”可以查看VIP是否已经正常加载。

 

--------------------------------------------------------------------------------------------------------------------------------------------------------------------

      用人品去感动别人,用改变去影响别人,用状态去燃烧别人,用行动去带动别人,用阳光去照耀别人,用坚持去赢得别人,要求自己每天都去做与目标有关的事情,哪怕每天只进步一点点,坚持下来你就是最优秀卓越的!欢迎大家加入大数据交流群:725967421     一起交流,一起进步!!

---------------------------------------------------------------------------------------------------------------------------------------------------------------------
--------------------- 
 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值