Linux负载均衡集群技术在网络服务器中的应用 摘 要:调研了目前市场占有率比较高的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)。在反向代理时,对于客户端而言,代理服务器如同原始资源服务器,客户端用户不需要进行任何设置。客户端向反向代理的命名空间发送连接请求linux服务器维护,然后服务器Z判断向何处转交连接请求,并将获得的内容返回给客户端的用户A。用户A会感觉其请求的是原始资源服务器,而不是反向代理服务器Z。 二者区别为:①正向代理能够让带有防火墙的局域网用户访问外部互联网;②反向代理将防火墙后面的服务器提供给用户访问,还能为后端的多台服务器提供负载平衡,或者为后端多台性能不均的服务器提供权重服务;③正向代理使客户端通过其可以访问任意网站且隐藏本身,因此必须采取相应的安全措施linux集群技术,以确保仅为授权有保证的互联网客户端提供网络服务。
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为,后端为Tomcat服务器,IP分别为、、。其工作过程为:客户端浏览器发送请求,前端Nginx负载均衡服务器得到请求后,依据相应的负载均衡调度算法,将请求发送给后端Tomcat服务器。Tomcat服务器收到请求后进行响应,并将请求内容转发给Nginx服务器,最后Nginx服务器将响应内容发送给客户端用户浏览器,其拓扑图如图1所示。具体配置为: 系统环境: RHEL7 Linux Web服务器: Nginx Tomcat1 Tomcat2 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 在浏览器输入后,出现下面的图片文字,则说明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: 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://:8080,还可以通过页面访问Tomcat默认测试页面。 最后,关闭Tomcat,为: [root@xixy2 ~]# /usr/local/tomcat/bin/shutdown.sh (3)安装IP为 的Tomcat Web服务器。 (4)安装IP为 的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 :8080; server :8080; server :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: Tomcat Web服务器。
创建自己的网页发布目录,执行以下命令: [root@xixy2 ~]# mkdir -p /usr/webapps/www 编辑vim /usr/local/tomcat/conf/server.xml,在最后前一行加以下内容: Tomcat发布目录内容: [root@xixy2]# vim index.jsp 测试01 var _userid = '';var _siteid =669;var _istoken = 1;var _model = 'Model03'; WebPageSpeed =328; UrchinTrack(); (2)IP: Tomcat Web 服务器。 创建自己的网页发布目录,执行以下命令: [root@xixy3 ~]# mkdir -p /usr/webapps/www 编辑vim /usr/local/tomcat/conf/server.xml,在最后前一行加以下内容: Tomcat发布目录内容: [root@xixy3 www]# vim index.jsp 测试02 var _userid = '';var _siteid =669;var _istoken = 1;var _model = 'Model03'; WebPageSpeed =328; UrchinTrack(); (3)IP: Tomcat Web 服务器。
创建自己的网页发布目录,执行以下命令: [root@xixy4 ~]# mkdir -p /usr/webapps/www 编辑vim /usr/local/tomcat/conf/server.xml,在最后前一行加以下内容: Tomcat发布目录内容: [root@xixy4 www]# vim index.jsp 测试03 var _userid = '';var _siteid =669;var _istoken = 1;var _model = 'Model03'; WebPageSpeed =328; UrchinTrack(); 2.4 性能测试 (1)在进行性能测试时,记录了运行时间。本记录中选取响应时间最长和最短的客户端访问请求进行记录。 (2)响应时间指客户端发出请求到服务器,服务器接受请求,并处理该请求的响应时间,时间单位为毫秒。 在并发量为100个用户以内时,系统运行正常,即各页面访问操作正常。随着并发访问用户达到120时,服务器压力变大,大约有一半以上的事务响应时间超过的等待时间,导致访问失败,页面出现错误。 对上述涉及的问题进行优化,可从以下几个方面考虑: ①调整中间件参数设置,以达到最优状态。
目前该项工作正在进行调整及测试优化; ②在有条件的情况下,建议将数据库服务器与Web服务器分离[7-8],使其分工更加明确,保证运行效率,同时安全性更高; ③面对高并发的状况,即便增加硬件,系统仍会存在访问瓶颈。为了更好地适应访问需求,在条件允许的情况下,可对现有系统的软件方面进行架构改造linux集群技术,比如引进高性能、分布式的缓存系统等。 3 结语 本文基于Nginx负载均衡各项策略的工作原理和集群相关技术,设计了一个负载均衡的服务器集群,搭建了校园网络服务器。详述了网络服务器的安装和配置步骤,实现了网络请求内容的反向代理,从而提高了学校网站的访问速度、稳定性和安全性。当然,对于一个真正的大型网络服务器,还有许多可改进的地方,比如服务器高可用、动态页面和静态页面分离、服务器缓存、URL重写等方面。后续还会在此基础上针对平台的相关问题进行改进,以减少服务器使用过程中的诸多困扰。 参考文献: [1] [美]KARLKOPPER.Linux企业集群:用商用硬件和免费软件构件高可用集群[M].北京:水利水电出版社,2007. [2] 高俊峰.循序渐进――Linux基础知识、服务器搭建、系统管理、性能调优、集群应用[M].北京:人民邮电出版社,2009. [3] 杨永健.反向代理软件SQUID在高校图书馆中的应用[J].四川图书馆学报linux操作系统好吗, 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. (责任编辑:黄 健)12
本文原创地址://q13zd.cn/lfzjhjqjszwl.html编辑:刘遄,审核员:暂无