3.负载均衡架构——Haproxy七层转发+rsyslog日志管理+算法调度

it2024-11-30  14

负载均衡架构

[1].集群是什么?

① 集群(cluster)技术是一种较新的技术,通过集群技术,可以在付出较低成本的情况下获得在性能、可靠性、灵活性方面的相对较高的收益,其任务调度则是集群系统中的核心技术。 ② 集群是一组相互独立的、通过高速网络互联的计算机,它们构成了一个组,并以单一系统的模式加以管理。一个客户与集群相互作用时,集群像是一个独立的服务器。 ③ 集群组成后,可以利用多个计算机和组合进行海量请求处理(负载均衡),从而获得很高的处理效率,也可以用多个计算机做备份(高可用),使得任何一个机器坏了整个系统还是能正常运行。集群在目前互联网公司是必备的技术,极大提高互联网业务的可用性和可缩放性。

[2].负载均衡集群技术

① 负载均衡(Load Balance):负载均衡集群为企业需求提供了可解决容量问题的有效方案。负载均衡集群使负载可以在计算机集群中尽可能平均地分摊处理。 ② 负载通常包括应用程序处理负载和网络流量负载。这样的系统非常适合向使用同一组应用程序的大量用户提供服务。每个节点都可以承担一定的处理负载,并且可以实现处理负载在节点之间的动态分配,以实现负载均衡。对于网络流量负载,当网络服务程序接受了高入网流量,以致无法迅速处理,这时,网络流量就会发送给在其它节点上运行的网络服务程序。也可根据服务器的承载能力,进行服务请求的分发,从而使用户的请求得到更快速的处理。

[3].负载均衡分类

负载均衡技术类型:基于 4 层负载均衡技术和基于 7 层负载均衡技术

OSI 模型及 TCP/IP 模型,两个模型虽然有一点点区别,但主要的目的是一样的,模型图描述了通信是怎么进行的。它解决了实现有效通信所需要的所有过程,并将这些过程划分为逻辑上的层。层可以简单地理解成数据通信需要的步骤。

根据负载均衡所作用在 OSI 模型的位置不同,负载均衡可以大概分为以下几类: 二层负载均衡(mac) 根据OSI模型分的二层负载,一般是用虚拟mac地址方式,外部对虚拟MAC地址请求,负载均衡接收后分配后端实际的MAC地址响应。

三层负载均衡(ip) 一般采用虚拟IP地址方式,外部对虚拟的ip地址请求,负载均衡接收后分配后端实际的IP地址响应。

四层负载均衡(tcp) 在三层负载均衡的基础上,用ip+port接收请求,再转发到对应的机器。

七层负载均衡(http) 根据虚拟的url或IP,主机名接收请求,再转向相应的处理服务器。 在实际应用中,比较常见的就是四层负载及七层负载。这里也重点说下这两种负载。

[4].四层负载均衡(基于IP+端口的负载均衡)

所谓四层负载均衡,也就是主要通过报文中的目标地址和端口,再加上负载均衡设备设置的服务器选择方式,决定最终选择的内部服务器。 layer4

在三层负载均衡的基础上,通过发布三层的IP地址(VIP),然后加四层的端口号,来决定哪些流量需要做负载均衡,对需要处理的流量进行NAT处理,转发至后台服务器,并记录下这个TCP或者UDP的流量是由哪台服务器处理的,后续这个连接的所有流量都同样转发到同一台服务器处理。以常见的TCP为例,负载均衡设备在接收到第一个来自客户端的SYN 请求时,即通过上述方式选择一个最佳的服务器,并对报文中目标IP地址进行修改(改为后端服务器IP),直接转发给该服务器。TCP的连接建立,即三次握手是客户端和服务器直接建立的,负载均衡设备只是起到一个类似路由器的转发动作。在某些部署情况下,为保证服务器回包可以正确返回给负载均衡设备,在转发报文的同时可能还会对报文原来的源地址进行修改。对应的负载均衡器称为四层交换机(L4 switch),主要分析IP层及TCP/UDP层,实现四层负载均衡。此种负载均衡器不理解应用协议(如HTTP/FTP/MySQL等等)要处理的流量进行NAT处理,转发至后台服务器,并记录下这个TCP或者UDP的流量是由哪台服务器处理的,后续这个连接的所有流量都同样转发到同一台服务器处理。实现四层负载均衡的软件有: F5:硬件负载均衡器,功能很好,但是成本很高。 lvs:重量级的四层负载软件 nginx:轻量级的四层负载软件,带缓存功能,正则表达式较灵活 haproxy:模拟四层转发,较灵活

[5].七层的负载均衡(基于虚拟的URL或主机IP的负载均衡)

所谓七层负载均衡,也称为“内容交换”,也就是主要通过报文中的真正有意义的应用层内容,再加上负载均衡设备设置的服务器选择方式,决定最终选择的内部服务器。 layer7

在四层负载均衡的基础上(没有四层是绝对不可能有七层的),再考虑应用层的特征,比如同一个Web服务器的负载均衡,除了根据VIP加80端口辨别是否需要处理的流量,还可根据七层的URL、浏览器类别、语言来决定是否要进行负载均衡。举个例子,如果你的Web服务器分成两组,一组是中文语言的,一组是英文语言的,那么七层负载均衡就可以当用户来访问你的域名时,自动辨别用户语言,然后选择对应的语言服务器组进行负载均衡处理。以常见的TCP为例,负载均衡设备如果要根据真正的应用层内容再选择服务器,只能先代理最终的服务器和客户端建立连接(三次握手)后,才可能接受到客户端发送的真正应用层内容的报文,然后再根据该报文中的特定字段,再加上负载均衡设备设置的服务器选择方式,决定最终选择的内部服务器。负载均衡设备在这种情况下,更类似于一个代理服务器。负载均衡和前端的客户端以及后端的服务器会分别建立TCP连接。所以从这个技术原理上来看,七层负载均衡明显的对负载均衡设备的要求更高,处理七层的能力也必然会低于四层模式的部署方式。对应的负载均衡器称为七层交换机(L7 switch),除了支持四层负载均衡以外,还有分析应用层的信息,如HTTP协议URI或Cookie信息,实现七层负载均衡。此种负载均衡器能理解应用协议。实现七层负载均衡的软件有: haproxy:天生负载均衡技能,全面支持七层代理,会话保持,标记,路径转移; nginx:只在http协议和mail协议上功能比较好,性能与haproxy差不多;

[6].七层的负载均衡服务部署

1.7层负载模型

2.实验环境

准备4台虚拟机:HTTP的服务端

server7:调度器:192.168.1.170 server9,server10:httpd端:192.168.1.190192.168.1.200 server11:作为测试端

3.安装软件

4.配置服务

测试:

负载成功

5.关掉httpd 3

测试

开启3

6.添加图形测试 配置设置:

rpm:查看信息

添加链接,检测信息

关闭server9上面的httpd的服务

可以清楚的看见的server9的服务显示为红色,服务出现异常。

7.环境的注意事项

server7关闭HTTP的服务,使得端口交付给haproxy.service

pacemaker服务关闭

[7].rsyslog开启日志功能

查看日志的配置文件:

(1).编辑syslog服务:

syslog文件添加-r参数

(2).打开配置文件,添加日志目录地址

打开端口接受设置:

服务重启;rsyslog,产生日志文件

查看日志:message与服务日志都会有记录

改变日志服务的记录点

重启服务

message的日志消失,服务日志产生

刷新服务,服务日志增加,message内部不会在出项。

注意:1.服务的端口打开,不利于服务的安全

打开配置文件

添加认证功能,与5秒时间刷新

[8].算法设置(8种算法)

改变算法的方式:

source算法:根据请求的原IP来进行调度,负载均衡失去作用。

服务流程:client > cdn > rs >cdn(ca che) >client

4.设置权重算法

重启,查看服务

测试:

server2的服务的次数是server1的二倍

[9].添加Backup功能

9.1:更改server4的HTTP的的服务端口8080

重启

改变server8配置的端口设置

重启

测试

添加backup的设置,当所有的server的关闭后,会启动功能

在server8的index文件中写入识别信息/

开启测试实验:

关闭server3

测试

关闭server4

测试调度器未重启

启动server8的调度器的功能 打开server的服务功能,backup的功能消失。

**解决问题:**backup的设置的作用:当服务端出现问题时,可以给用户一定的提示信息,使得用户不会在一直的刷新服务,致使服务的拥挤。

[10].限制访问的权限

测试:

第二行:使得192.168.1.161(windows的ip地址)不可以正常访问(浏览器)

显示403的提示,不利于服务的发布,添加错误信息的提示

使用网页查看服务

宿主机(非192.168.1.161的IP下的浏览器):自动跳转到server8的服务端

指定某些用户不可以查看一些页面。

重定向:

浏览器直接转载www.baidu.com。

最新回复(0)