Linux负载均衡集群技术在网络服务器中的应用

2017-01-21 16:10孔祥真张丁李忠远
软件导刊 2016年12期
关键词:负载均衡集群

孔祥真+张丁+李忠远

摘 要:调研了目前市场占有率比较高的Unix和Linux服务器应用现状,重点研究了Linux集群技术,并在校园网络平台的搭建中使用了Nginx负载均衡技术。分析Linux小型机集群方案的可行性,以及Nginx反向代理技术对于解决网络服务器高负荷、高流量、不稳定等问题的优势,并部署了Nginx服务器和Tomcat服务器集群,为学校提供了一个高可用、高并发、高稳定且廉价的服务器解决方案。

关键词:Linux;负载均衡;网络服务器;集群;Ngnix

DOIDOI:10.11907/rjdk.162633

中图分类号:TP393

文献标识码:A文章编号:1672-7800(2016)012-0144-03

0 引言

随着网络技术的发展,对于服务器的需求量也随之剧增。除了Unix系统,作为类Unix系统的Linux操作系统近年来也倍受青睐。最近,著名杂志《网络世界》进行了一次调查,其经由多种渠道搜集了来自各行各业,也包括政府机构IT部门的Linux操作系统在产业中的应用情况,以此预知Linux在未来应用领域的发展趋势。调查结果表明,Linux有着非常好的应用前景,近64.5%以上的负责人计划将Linux应用于Web服务器。Unix大型机固然有较为明显的性能优势,然而近期市场占有率有下降的趋势。

以目前Web服务器应用较多的Nginx技术为支持,构建Linux小型机集群替代Unix大型机,以尽可能地降低服务器成本。本文首先探讨服务器集群技术,分析负载均衡集群的算法策略与工作原理,然后在校园服务器网络平台的搭建中,运用该技术部署Tomcat服务器集群和Nginx服务器,并采用Nginx反向代理的关键字命名规则进行整合,搭建一个具有较强稳定性与可用性的校园网络服务器。

1 Nginx及其相关技术

1.1 Nginx

Nginx可作为轻量级的Web服务器、反向代理服务器及电子邮件代理服务器使用,由俄罗斯的程序设计师Igor Sysoev开发。其占有内存少、并发性能好,并发能力优于同类网页服务器。目前,我国使用Nginx的网站用户包括百度、新浪、京东、网易、腾讯、淘宝等知名网站。Nginx作为一款较为实用的Web服务器,与其它Web服务器相比具有以下优点[1]:①支持网络请求高并发。据官方统计,其每秒能处理5万静态网页请求;②反向代理性能优越,通常被用于负载均衡;③CPU与内存占用率低。官方统计数据显示,其占用率仅为Apache的1/5~1/10;④对于php可使用cgi与fastcgi方式。

1.2 正向代理与反向代理

(1)正向代理(Forward Proxy)。通常所说的代理技术指正向代理技术。正向代理的定义如下:一个位于客户端的用户A、服务器B、位于A和B之间的代理服务器Z,用户A要从服务器B取得用户请求的内容,可以通过代理服务器Z发送请求并指定目标是服务器B,由代理服务器Z向目标服务器B转交请求,获得的内容返回客户端A。也即是说,正向代理就是代理服务器替代客户端用户A来访问服务器B。

(2)反向代理(Reverse Proxy)。在反向代理时,对于客户端而言,代理服务器如同原始资源服务器,客户端用户不需要进行任何设置。客户端向反向代理的命名空间发送连接请求,然后服务器Z判断向何处转交连接请求,并将获得的内容返回给客户端的用户A。用户A会感觉其请求的是原始资源服务器,而不是反向代理服务器Z。

二者区别为:①正向代理能够让带有防火墙的局域网用户访问外部互联网;②反向代理将防火墙后面的服务器提供给用户访问,还能为后端的多台服务器提供负载平衡,或者为后端多台性能不均的服务器提供权重服务;③正向代理使客户端通过其可以访问任意网站且隐藏本身,因此必须采取相应的安全措施,以确保仅为授权有保证的互联网客户端提供网络服务。

1.3 负载均衡技术

负载均衡(Load Balance)是建立在网络结构上的一种廉价、有效方法,它可以扩展网络设备带宽,增加吞吐量,增强网络并发处理数据的能力,提高网络的可用性和灵活性。Nginx支持3种负载均衡策略:①轮询:请求依次轮询每个服务器;②最少链接:请求发送给持有最少活动链接的服务器;③IP哈希:请求通过哈希函数决定发送给哪个服务器。

1.4 集群

集群是由一组独立的计算机系统构成的松耦合多处理器系统[2],通过网络实现进程间的通信。目前,实现分布式计算机集群的技术有负载均衡集群、高可用集群和科学计算集群。本文重点介绍负载均衡集群。负载均衡集群由两台或两台以上服务器组成,分前端负载调度和后端服务两部分。客户端用户的连接请求由前端依据负载均衡策略分配给后端服务器,后端服务器应答请求,并将请求内容返回用户。因而可知,后端服务器是客户端真正请求内容的服务器。与高可用服务集群不同,在负载均衡集群中,所有后端服务器都处于工作状态,都有可能对前端服务器的请求进行应答。

Nginx是利用反向代理服务器来实现负载均衡。如果学校采用Nginx作为Web服务器,可以阻挡外来黑客攻击,保证数据的安全性与网页内容的稳定性,还可有效解决网页打开速度慢、网页内容请求不到等问题,使学生能够更加方便快捷地访问学校网页。另外,使用负载均衡策略还可有效解决服务器资源浪费等问题。

2 Nginx代理服务器搭建

在Linux的Centos 7系统中搭建Nginx Web应用代理服务器[3],服务器集群架构分为前端和后端服务器[4-6]。前端Nginx服务器的IP为192.168.1.2,后端为Tomcat服务器,IP分别为192.168.1.4、192.168.1.5、192.168.1.6。其工作过程为:客户端浏览器发送请求,前端Nginx负载均衡服务器得到请求后,依据相应的负载均衡调度算法,将请求发送给后端Tomcat服务器。Tomcat服务器收到请求后进行响应,并将请求内容转发给Nginx服务器,最后Nginx服务器将响应内容发送给客户端用户浏览器,其拓扑图如图1所示。具体配置为:

系统环境: RHEL7 Linux

Web服务器: 192.168.1.2 Nginx

192.168.1.4 Tomcat1

192.168.1.5Tomcat2

192.168.1.6 Tomcat3

2.1 Nginx Web服务器安装与使用

(1)安装Nginx所需要的依赖包:yum -y install gcc gcc-c++ make libtool* zlib* openssl openssl-devel pcre pcre-devel。

Nginx需要以下3个依赖包:zlib-1.2.8.tar.gz、pcre-8.21.tar.gz和openssl-1.0.1.tar.gz。

(2)启动Nginx。

[root@xixy ~]# /usr/local/nginx/sbin/nginx

然后启动nginx,/usr/local/nginx/sbin/nginx 回车即可。查看进程是否已启动:

[root@xixy~]# ps -ef |grep nginx

在浏览器输入192.168.1.2后,出现下面的图片文字,则说明Nginx服务器安装成功。

(3)重启或关闭Nginx进程:

[root@xixy~]# /usr/local/nginx/sbin/nginx?-s reload

[root@xixy~]# /usr/local/nginx/sbin/nginx -s stop

(4)将Nginx添加到开机启动:

[root@xixy~]# echo"/usr/local/nginx/sbin/nginx">>/etc/rc.d/rc.local

2.2 Tomcat Web服务器安装与使用

Tomcat是网页应用服务器,主要功能是用于解析动态页面,常与Apache服务器和Nginx服务器配合搭建整个Http服务器端。Tomcat目前的最新版本为9.0。Tomcat主要用来解析JSP语言,所以安装Tomcat之前需要安装JDK (Java Development Kit),JDK是Java 语言的软件开发工具包。

IP:192.168.1.4 Tomcat Web 服务器的安装过程如下:

(1)安装JDK。

(2)安装Tomcat1。首先,在官网下载Tomcat,这里下载的是apache-tomcat-7.0.27.tar.gz,下载完后解压:

[root@xixy2 ~]# tar xf apache-tomcat-7.0.27.tar.gz

[root@xixy2 ~]# mv apache-tomcat-7.0.27 /usr/local/tomcat

然后,启动Tomcat,命令为:

[root@xixy2 ~]# /usr/local/tomcat/bin/startup.sh

通过命令ps-ef |grep tomcat 查看进程及端口是否存在,在浏览器中输入http://192.168.1.4:8080,还可以通过页面访问Tomcat默认测试页面。

最后,关闭Tomcat,命令为:

[root@xixy2 ~]# /usr/local/tomcat/bin/shutdown.sh

(3)安装IP为192.168.1.4 的Tomcat Web服务器。

(4)安装IP为192.168.1.6 的Tomcat Web 服务器。

2.3 Nginx Web与Tomcat Web服务器配置和整合

2.3.1 Nginx服务器配置

(1)编辑nginx.conf配置文件:

[root@xixy ~]# vim /usr/local/nginx/conf/nginx.conf

(2)指定负载均衡方式:

upstream tomcat {

server 192.168.1.4:8080;

server 192.168.1.5:8080;

server 192.168.1.6 :8080;

}

server {

listen 80;

server_name localhost;

location / {

root html;

index index.html index.htm index.php;

proxy_pass http://tomcat;

}

location ~ .*\.(php|jsp|cgi)?$ {

proxy_set_header Host $host;

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

proxy_pass http://tomcat;}}

}

2.3.2 Tomcat Web服务器配置

(1)IP:192.168.1.4 Tomcat Web服务器。

创建自己的网页发布目录,执行以下命令:

[root@xixy2 ~]# mkdir -p /usr/webapps/www

编辑vim /usr/local/tomcat/conf/server.xml,在最后前一行加以下内容:

Tomcat发布目录内容:

[root@xixy2]# vim index.jsp

测试01

<%@ page contentType="text/html;charset=utf-8"%>

(2)IP:192.168.1.5 Tomcat Web 服务器。

创建自己的网页发布目录,执行以下命令:

[root@xixy3 ~]# mkdir -p /usr/webapps/www

编辑vim /usr/local/tomcat/conf/server.xml,在最后前一行加以下内容:

Tomcat发布目录内容:

[root@xixy3 www]# vim index.jsp

测试02

<%@ page contentType="text/html;charset=utf-8"%>

(3)IP:192.168.1.6 Tomcat Web 服务器。

创建自己的网页发布目录,执行以下命令:

[root@xixy4 ~]# mkdir -p /usr/webapps/www

编辑vim /usr/local/tomcat/conf/server.xml,在最后前一行加以下内容:

Tomcat发布目录内容:

[root@xixy4 www]# vim index.jsp

测试03

<%@ page contentType="text/html;charset=utf-8"%>

2.4 性能测试

(1)在进行性能测试时,记录了运行时间。本记录中选取响应时间最长和最短的客户端访问请求进行记录。

(2)响应时间指客户端发出请求到服务器,服务器接受请求,并处理该请求的响应时间,时间单位为毫秒。

在并发量为100个用户以内时,系统运行正常,即各页面访问操作正常。随着并发访问用户达到120时,服务器压力变大,大约有一半以上的事务响应时间超过脚本的等待时间,导致访问失败,页面出现错误。

对上述涉及的问题进行优化,可从以下几个方面考虑:

①调整中间件参数设置,以达到最优状态。目前该项工作正在进行调整及测试优化;

②在有条件的情况下,建议将数据库服务器与Web服务器分离[7-8],使其分工更加明确,保证运行效率,同时安全性更高;

③面对高并发的状况,即便增加硬件,系统仍会存在访问瓶颈。为了更好地适应访问需求,在条件允许的情况下,可对现有系统的软件方面进行架构改造,比如引进高性能、分布式的缓存系统等。

3 结语

本文基于Nginx负载均衡各项策略的工作原理和集群相关技术,设计了一个负载均衡的服务器集群,搭建了校园网络服务器。详述了网络服务器的安装和配置步骤,实现了网络请求内容的反向代理,从而提高了学校网站的访问速度、稳定性和安全性。当然,对于一个真正的大型网络服务器,还有许多可改进的地方,比如服务器高可用、动态页面和静态页面分离、服务器缓存、URL重写等方面。后续还会在此基础上针对平台的相关问题进行改进,以减少服务器使用过程中的诸多困扰。

参考文献:

[1] [美]KARLKOPPER.Linux企业集群:用商用硬件和免费软件构件高可用集群[M].北京:水利水电出版社,2007.

[2] 高俊峰.循序渐进——Linux基础知识、服务器搭建、系统管理、性能调优、集群应用[M].北京:人民邮电出版社,2009.

[3] 杨永健.反向代理软件SQUID在高校图书馆中的应用[J].四川图书馆学报, 2007(3):59-62.

[4] 李智慧.大型网站技术架构:核心原理与案例分析[M].北京:电子工业出版社,2013.

[5] 陈小全,张继红.Linux服务器架设、性能调优、集群管理教程——实训与项目案例[M].北京:北京邮电大学出版社,2011.

[6] [法]CLEMENT NEDELCU.学习Nginx HTTP Server(中文版)[M].北京:清华大学出版社,2012.

[7] 伍云辉.Linux服务器配置与管理指南[M].北京:清华大学出版社,2010:1-5.

[8] 张宴.实战 Nginx:取代Apache的高性能Web服务器[M].北京:电子工业出版社,2010:3-10.

[9] 木太里甫艾山.Linux环境下Qt库多语言界面实现[J].软件导刊,2016,15(5):21-23.

(责任编辑:黄 健)

猜你喜欢
负载均衡集群
海上小型无人机集群的反制装备需求与应对之策研究
一种无人机集群发射回收装置的控制系统设计
Python与Spark集群在收费数据分析中的应用
异构环境下改进的LATE调度算法