将网络请求通过负载均衡器分配给更多的服务器处理(通常称之为集群),是负载均衡器的一种常见应用。我们常见的门户网站、网络通信软件、BT下载网络等都采用了负载均衡技术。
对于提供因特网服务的网络应用来说,负载均衡器通常是一种在特定端口监听外部请求的软件程序。负载均衡器将请求发送给某一台服务器,而服务器通过响应负载均衡器来处理来自因特网的请求。从用户角度而言,他们并不知道自己的请求被哪台服务器所处理。这样的设计将任务处理服务器集群与用户有效地隔离开来。除了可以通过集群提供更多资源以高效的响应请求之外,客户端无法了解到集群服务器的网络结构,一定程度上增加了安全性。另外,可以通过向集群增加服务器的方式(增加计算机,并在负载均衡器中稍作配置),迅速增强对客户端的响应能力。比如在第1章中,我们提到过用负载均衡器将用户从浏览器中发出的HTTP请求分发到不同的应用服务器上从而提高用户响应速度。
当然,负载均衡器也有不能工作的时候,比如整个集群的计算资源全不可用,在这样的情况下,就要考虑是不是应该将负载均衡器再进行一次备份,将请求转发给备份负载均衡器。
下面来学习一种软件负载均衡器的使用方法。
首先,需要安装Apache Http服务器。可以从http://httpd.apache.org/下载Apache Http服务器。Apache Http服务器支持Windows与Linux操作系统。在这里它负责接收客户端的Http请求。然后通过Apache Tomcat connector将Http请求转发给Tomcat服务器。
1.Apache Tomcat connecter
Apache Tomcat Connecter是Apache为Tomcat集群而开发的一种负载均衡器。它的工作原理是将ApacheHttp服务器接收的用户请求转发给多个Tomcat服务器。根据前面的描述,相信大部分读者可能会想到创建多个虚拟机,在虚拟机或者多台计算机中启动Tomcat服务器,使用Apache Http服务器以及Apache Tomcat Connecter将用户请求转发给这些Tomcat服务器。这种方案叫做服务器水平集群化,如图2-35所示。
图2-35 水平集群化
2.配置水平集群化
从http://tomcat.apache.org/connectors-doc/下载Apache Tomcat Connecter。Apache Tom-cat Connecter有三个版本,分别供Apache http服务器,微软IIS服务器以及Oracle iPlanet服务器使用,其中供ApacheHttp服务器使用的叫做Mod_jk。本节以Apache Http服务器为例作进一步介绍。
将下载到的mod_jk-1.2.31-httpd-2.0.52.so文件重名为mod_jk.so,复制到Apache安装目录下的modules文件夹。使用文本编辑工具编辑Apache安装目录下的conf文件夹中的ht-tpd.conf文件。加入如下配置,如代码清单2-4所示。
【代码清单2-4】
安装好Apache Tomcat Connecter后,我们需要配置可使用的Tomcat服务器,由负载均衡器来进行调度。
这里给出workers.properties文件的基本配置,如代码清单2-5所示。(www.xing528.com)
【代码清单2-5】
使用水平集群化可以利用多台计算机的计算能力,但如果使用的计算机不是虚拟机,而是一台拥有多核处理器的服务器,单单启动一个Tomcat服务器显然对计算机处理器无法充分利用。这时候可以采用垂直集群化的方式在同一台计算机上启动多台Tomcat服务器来充分利用计算资源,如图2-36所示。
图2-36 垂直集群化
现在问题来了,垂直水平集群化需要在本地启动多个Tomcat服务器,而Tomcat服务器启动时一般使用默认的端口8080。两个或者两个以上的Tomcat服务器,首先端口不能冲突,然后才能运行在同一台计算机上。
3.配置Tomcat垂直集群化
首先需要配置Tomcat服务器的端口,如果用户希望在同一台计算机上启动两个Tomcat服务器,则可以将第二个Tomcat服务器的转发端口在Tomcat→Conf→server.xml文件中由8009改为8109。
以下是workers.properties文件的配置,如代码清单2-6所示:
【代码清单2-6】
使用Apache Tomcat connector极大提高了应用响应速度。在实际工作中除了可以使用这类软件作为负载均衡器之外,很多的交换机也提供依据TCP/UDP应用端口号来分发数据的功能。我们可以把它理解为在交换机中安装了负载均衡软件,其工作方式与之前介绍的软件负载均衡方式类似。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。