企业集群平台架构实现与应用实战(HAproxy+keepalived篇)

企业集群平台架构实现与应用实战(HAproxy+keepalived篇),第1张

企业集群平台架构实现与应用实战(HAproxy+keepalived篇)

第1层、第4层和第7层之间负载平衡的差异

所谓四层,就是ISO参考模型中的第四层。四层负载均衡,也叫四层交换机,是通过分析IP层和TCP/UDP层的流量,基于IP加端口。常见的基于四层的负载均衡器有LVS、F5等。

以常见的TCP应用程序为例。当负载均衡器收到客户端的第一个SYN请求时,会通过设定的负载均衡算法选择最佳的后端服务器,同时将消息中的目标IP地址修改为后端服务器IP,然后直接转发给后端服务器,这样就完成了一个负载均衡请求。从这个过程中,客户端和服务器之间直接建立TCP连接,而负载均衡器只是完成一个类似路由器的转发动作。在一些负载均衡策略中,为了保证后端服务器返回的消息能够正确送达负载均衡器,在转发消息的同时可能会修改消息的原始源地址。整个过程如下图所示。



同样,七层负载均衡器,也称为七层交换机,位于OSI的最高层,即应用层。此时,负载均衡器支持多种应用协议,例如HTTP、FTP和SMTP。七层负载均衡器可以根据消息内容和负载均衡算法选择后端服务器,因此也称为“内容交换器”。比如对于Web服务器的负载均衡,七层负载均衡器不仅可以按照“IP+port”的模式进行负载拆分,还可以根据网站的URL、访问域名、浏览器类别、语言来决定负载均衡的策略。比如有两个Web服务器,分别对应中英文网站,两个域名分别是A和B。四层负载均衡器在访问域名A时访问中文网站,在访问域名b时访问英文网站几乎是不可能的,但是七层负载均衡器可以根据客户端访问域名的不同选择来均衡相应网页的负载。常见的七层负载均衡器有HAproxy、Nginx等。


这里还是以常见的TCP应用为例。因为负载均衡器想要获取消息的内容,只能替换后端服务器与客户端建立连接,然后才能接收客户端发送的消息内容,再根据消息中的具体字段和负载均衡器中设置的负载均衡算法决定最终的内部服务器。在整个过程中,七层负载平衡器在这种情况下类似于代理服务器。整个过程如下图所示。


对比四层负载均衡和七层负载均衡的全过程可以看出,在七层负载均衡模式下,负载均衡器会分别与客户端和后端服务器建立TCP连接,而在四层负载均衡模式下,只会建立一个TCP连接。因此,七层负载均衡对负载均衡设备的要求更高,七层负载均衡的处理能力必然低于四层负载均衡。

二。哈普洛克西和LVS的异同

通过上一篇文章的介绍,我们应该基本知道了HAProxy负载均衡和LVS负载均衡的优缺点和异同。下面是两种负载平衡软件之间的异同的简要总结:

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

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

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

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

综上所述,哈普洛克西和LVS各有优劣,没有好坏之分。选择哪一个作为负载均衡器取决于实际的应用环境。

三。快速安装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配置文件根据功能和用途主要由五部分组成,但有些部分并不是必须的,可以根据需要选择相应的部分进行配置。

(1)全球部分

用于设置全局配置参数,属于进程级配置,通常与 *** 作系统配置相关。

(2)默认部分

默认参数的配置部分。默认情况下,本节中设置的参数值会自动引用到以下前端、后端和监听部分。因此,如果某些参数属于公共配置,只需在defaults部分添加一次即可。如果在前端、后端和监听部分配置了与默认值部分相同的参数,则与默认值部分参数对应的值将被自动覆盖。

(3)前端部分

此部分用于设置接收用户请求的前端虚拟节点。前端是haproxy1.3版本之后引入的组件,后端组件也有引入。通过引入这些组件,HAProxy配置文件的复杂性大大简化了。前端可以根据ACL规则直接指定要使用的后端backend。

(4)后端部分

该部分用于设置集群后端服务集群的配置,即添加一组真实的服务器来处理前端用户的请求。添加的真实服务器类似于LVS的真实服务器节点。

(5)倾听部分

这部分是前端部分和后端部分的结合。在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,意思是简单轮询,负载均衡的基本算法。

②、static-rr,意思是称重量

(3),leastconn,意思是先处理联系最少的人。

(4)、来源,表示根据请求来源IP。

(5)、uri,根据请求指示uri

(6),url_param,表示根据请求的url参数进行调度。

(7),hdr(name),表示根据HTTP请求头锁定每一个HTTP请求;

(8)rdp-cookie(名称)表示每个TCP请求都根据cookie(名称)进行锁定和哈希处理。


2.常用的负载平衡算法


(1)轮询算法:循环法

(2)根据请求源IP算法:源

(3)最少连接器优先处理算法:lestconn


七。通过HAProxy的ACL规则实现智能负载平衡


由于HAProxy可以在七层模式下工作,要实现HAProxy的强大功能,必须使用强大灵活的ACL规则,基于HAProxy的智能负载均衡系统可以通过ACL规则来实现。HAProxy通过ACL规则执行两个主要功能,即:

1)通过设置的ACL规则检查客户端请求是否合法。如果它符合ACL规则的要求,它将被释放。反正不符合规则就直接中断请求。

2)满足ACL规则要求的请求会被提交到后端服务器集群,从而实现基于ACL规则的负载均衡。


HAProxy中的ACL规则常用于前端网段,使用方法如下:

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

其中包括:

Acl:是一个关键字,表示定义ACL规则的开始。您需要保持自定义ACL名称。

方法:该字段用于定义实现acl的方法。HAProxy定义了很多ACL方法。常用的方法有hdr_reg(主机)、hdr_dom(主机)、hdr_beg(主机)、url_sub、url_dir、path_beg、path_end等。

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

与ACL规则一起使用的HAProxy参数还包括use_backend,后面需要跟一个后端实例名,表示满足ACL规则后请求哪个后端实例,以及use_backend对应的default_backend参数,表示不满足ACL条件时默认使用哪个后端后端。

以下是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的网络监控平台


虽然HAProxy实现了服务的故障转移,但是在主机或服务出现故障时,无法向运维人员发送通知,对于时效性要求较高的业务系统来说非常不方便。不过,HAProxy似乎也考虑到了这一点。在新版本中,HAProxy推出了一个基于网络的监控平台。通过这个平台,可以查看这个集群系统中所有后端服务器的运行状态。当后端服务或服务器出现故障时,监控页面会以不同颜色显示故障信息,很大程度上解决了后端服务器故障报警的问题。运维人员可以通过监控该页面第一时间发现节点故障,然后修复故障。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/zz/778676.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-03
下一篇 2022-05-03

发表评论

登录后才能评论

评论列表(0条)

保存