国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

Linux負載均衡集群技術在網(wǎng)絡服務器中的應用

2017-01-21 16:10孔祥真張丁李忠遠
軟件導刊 2016年12期
關鍵詞:負載均衡集群

孔祥真+張丁+李忠遠

摘 要:調(diào)研了目前市場占有率比較高的Unix和Linux服務器應用現(xiàn)狀,重點研究了Linux集群技術,并在校園網(wǎng)絡平臺的搭建中使用了Nginx負載均衡技術。分析Linux小型機集群方案的可行性,以及Nginx反向代理技術對于解決網(wǎng)絡服務器高負荷、高流量、不穩(wěn)定等問題的優(yōu)勢,并部署了Nginx服務器和Tomcat服務器集群,為學校提供了一個高可用、高并發(fā)、高穩(wěn)定且廉價的服務器解決方案。

關鍵詞:Linux;負載均衡;網(wǎng)絡服務器;集群;Ngnix

DOIDOI:10.11907/rjdk.162633

中圖分類號:TP393

文獻標識碼:A文章編號:1672-7800(2016)012-0144-03

0 引言

隨著網(wǎng)絡技術的發(fā)展,對于服務器的需求量也隨之劇增。除了Unix系統(tǒng),作為類Unix系統(tǒng)的Linux操作系統(tǒng)近年來也倍受青睞。最近,著名雜志《網(wǎng)絡世界》進行了一次調(diào)查,其經(jīng)由多種渠道搜集了來自各行各業(yè),也包括政府機構(gòu)IT部門的Linux操作系統(tǒng)在產(chǎn)業(yè)中的應用情況,以此預知Linux在未來應用領域的發(fā)展趨勢。調(diào)查結(jié)果表明,Linux有著非常好的應用前景,近64.5%以上的負責人計劃將Linux應用于Web服務器。Unix大型機固然有較為明顯的性能優(yōu)勢,然而近期市場占有率有下降的趨勢。

以目前Web服務器應用較多的Nginx技術為支持,構(gòu)建Linux小型機集群替代Unix大型機,以盡可能地降低服務器成本。本文首先探討服務器集群技術,分析負載均衡集群的算法策略與工作原理,然后在校園服務器網(wǎng)絡平臺的搭建中,運用該技術部署Tomcat服務器集群和Nginx服務器,并采用Nginx反向代理的關鍵字命名規(guī)則進行整合,搭建一個具有較強穩(wěn)定性與可用性的校園網(wǎng)絡服務器。

1 Nginx及其相關技術

1.1 Nginx

Nginx可作為輕量級的Web服務器、反向代理服務器及電子郵件代理服務器使用,由俄羅斯的程序設計師Igor Sysoev開發(fā)。其占有內(nèi)存少、并發(fā)性能好,并發(fā)能力優(yōu)于同類網(wǎng)頁服務器。目前,我國使用Nginx的網(wǎng)站用戶包括百度、新浪、京東、網(wǎng)易、騰訊、淘寶等知名網(wǎng)站。Nginx作為一款較為實用的Web服務器,與其它Web服務器相比具有以下優(yōu)點[1]:①支持網(wǎng)絡請求高并發(fā)。據(jù)官方統(tǒng)計,其每秒能處理5萬靜態(tài)網(wǎng)頁請求;②反向代理性能優(yōu)越,通常被用于負載均衡;③CPU與內(nèi)存占用率低。官方統(tǒng)計數(shù)據(jù)顯示,其占用率僅為Apache的1/5~1/10;④對于php可使用cgi與fastcgi方式。

1.2 正向代理與反向代理

(1)正向代理(Forward Proxy)。通常所說的代理技術指正向代理技術。正向代理的定義如下:一個位于客戶端的用戶A、服務器B、位于A和B之間的代理服務器Z,用戶A要從服務器B取得用戶請求的內(nèi)容,可以通過代理服務器Z發(fā)送請求并指定目標是服務器B,由代理服務器Z向目標服務器B轉(zhuǎn)交請求,獲得的內(nèi)容返回客戶端A。也即是說,正向代理就是代理服務器替代客戶端用戶A來訪問服務器B。

(2)反向代理(Reverse Proxy)。在反向代理時,對于客戶端而言,代理服務器如同原始資源服務器,客戶端用戶不需要進行任何設置??蛻舳讼蚍聪虼淼拿臻g發(fā)送連接請求,然后服務器Z判斷向何處轉(zhuǎn)交連接請求,并將獲得的內(nèi)容返回給客戶端的用戶A。用戶A會感覺其請求的是原始資源服務器,而不是反向代理服務器Z。

二者區(qū)別為:①正向代理能夠讓帶有防火墻的局域網(wǎng)用戶訪問外部互聯(lián)網(wǎng);②反向代理將防火墻后面的服務器提供給用戶訪問,還能為后端的多臺服務器提供負載平衡,或者為后端多臺性能不均的服務器提供權(quán)重服務;③正向代理使客戶端通過其可以訪問任意網(wǎng)站且隱藏本身,因此必須采取相應的安全措施,以確保僅為授權(quán)有保證的互聯(lián)網(wǎng)客戶端提供網(wǎng)絡服務。

1.3 負載均衡技術

負載均衡(Load Balance)是建立在網(wǎng)絡結(jié)構(gòu)上的一種廉價、有效方法,它可以擴展網(wǎng)絡設備帶寬,增加吞吐量,增強網(wǎng)絡并發(fā)處理數(shù)據(jù)的能力,提高網(wǎng)絡的可用性和靈活性。Nginx支持3種負載均衡策略:①輪詢:請求依次輪詢每個服務器;②最少鏈接:請求發(fā)送給持有最少活動鏈接的服務器;③IP哈希:請求通過哈希函數(shù)決定發(fā)送給哪個服務器。

1.4 集群

集群是由一組獨立的計算機系統(tǒng)構(gòu)成的松耦合多處理器系統(tǒng)[2],通過網(wǎng)絡實現(xiàn)進程間的通信。目前,實現(xiàn)分布式計算機集群的技術有負載均衡集群、高可用集群和科學計算集群。本文重點介紹負載均衡集群。負載均衡集群由兩臺或兩臺以上服務器組成,分前端負載調(diào)度和后端服務兩部分。客戶端用戶的連接請求由前端依據(jù)負載均衡策略分配給后端服務器,后端服務器應答請求,并將請求內(nèi)容返回用戶。因而可知,后端服務器是客戶端真正請求內(nèi)容的服務器。與高可用服務集群不同,在負載均衡集群中,所有后端服務器都處于工作狀態(tài),都有可能對前端服務器的請求進行應答。

Nginx是利用反向代理服務器來實現(xiàn)負載均衡。如果學校采用Nginx作為Web服務器,可以阻擋外來黑客攻擊,保證數(shù)據(jù)的安全性與網(wǎng)頁內(nèi)容的穩(wěn)定性,還可有效解決網(wǎng)頁打開速度慢、網(wǎng)頁內(nèi)容請求不到等問題,使學生能夠更加方便快捷地訪問學校網(wǎng)頁。另外,使用負載均衡策略還可有效解決服務器資源浪費等問題。

2 Nginx代理服務器搭建

在Linux的Centos 7系統(tǒng)中搭建Nginx Web應用代理服務器[3],服務器集群架構(gòu)分為前端和后端服務器[4-6]。前端Nginx服務器的IP為192.168.1.2,后端為Tomcat服務器,IP分別為192.168.1.4、192.168.1.5、192.168.1.6。其工作過程為:客戶端瀏覽器發(fā)送請求,前端Nginx負載均衡服務器得到請求后,依據(jù)相應的負載均衡調(diào)度算法,將請求發(fā)送給后端Tomcat服務器。Tomcat服務器收到請求后進行響應,并將請求內(nèi)容轉(zhuǎn)發(fā)給Nginx服務器,最后Nginx服務器將響應內(nèi)容發(fā)送給客戶端用戶瀏覽器,其拓撲圖如圖1所示。具體配置為:

系統(tǒng)環(huán)境: 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后,出現(xiàn)下面的圖片文字,則說明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是網(wǎng)頁應用服務器,主要功能是用于解析動態(tài)頁面,常與Apache服務器和Nginx服務器配合搭建整個Http服務器端。Tomcat目前的最新版本為9.0。Tomcat主要用來解析JSP語言,所以安裝Tomcat之前需要安裝JDK (Java Development Kit),JDK是Java 語言的軟件開發(fā)工具包。

IP:192.168.1.4 Tomcat Web 服務器的安裝過程如下:

(1)安裝JDK。

(2)安裝Tomcat1。首先,在官網(wǎng)下載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服務器。

創(chuàng)建自己的網(wǎng)頁發(fā)布目錄,執(zhí)行以下命令:

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

編輯vim /usr/local/tomcat/conf/server.xml,在最后前一行加以下內(nèi)容:

Tomcat發(fā)布目錄內(nèi)容:

[root@xixy2]# vim index.jsp

測試01

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

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

創(chuàng)建自己的網(wǎng)頁發(fā)布目錄,執(zhí)行以下命令:

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

編輯vim /usr/local/tomcat/conf/server.xml,在最后前一行加以下內(nèi)容:

Tomcat發(fā)布目錄內(nèi)容:

[root@xixy3 www]# vim index.jsp

測試02

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

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

創(chuàng)建自己的網(wǎng)頁發(fā)布目錄,執(zhí)行以下命令:

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

編輯vim /usr/local/tomcat/conf/server.xml,在最后前一行加以下內(nèi)容:

Tomcat發(fā)布目錄內(nèi)容:

[root@xixy4 www]# vim index.jsp

測試03

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

2.4 性能測試

(1)在進行性能測試時,記錄了運行時間。本記錄中選取響應時間最長和最短的客戶端訪問請求進行記錄。

(2)響應時間指客戶端發(fā)出請求到服務器,服務器接受請求,并處理該請求的響應時間,時間單位為毫秒。

在并發(fā)量為100個用戶以內(nèi)時,系統(tǒng)運行正常,即各頁面訪問操作正常。隨著并發(fā)訪問用戶達到120時,服務器壓力變大,大約有一半以上的事務響應時間超過腳本的等待時間,導致訪問失敗,頁面出現(xiàn)錯誤。

對上述涉及的問題進行優(yōu)化,可從以下幾個方面考慮:

①調(diào)整中間件參數(shù)設置,以達到最優(yōu)狀態(tài)。目前該項工作正在進行調(diào)整及測試優(yōu)化;

②在有條件的情況下,建議將數(shù)據(jù)庫服務器與Web服務器分離[7-8],使其分工更加明確,保證運行效率,同時安全性更高;

③面對高并發(fā)的狀況,即便增加硬件,系統(tǒng)仍會存在訪問瓶頸。為了更好地適應訪問需求,在條件允許的情況下,可對現(xiàn)有系統(tǒng)的軟件方面進行架構(gòu)改造,比如引進高性能、分布式的緩存系統(tǒng)等。

3 結(jié)語

本文基于Nginx負載均衡各項策略的工作原理和集群相關技術,設計了一個負載均衡的服務器集群,搭建了校園網(wǎng)絡服務器。詳述了網(wǎng)絡服務器的安裝和配置步驟,實現(xiàn)了網(wǎng)絡請求內(nèi)容的反向代理,從而提高了學校網(wǎng)站的訪問速度、穩(wěn)定性和安全性。當然,對于一個真正的大型網(wǎng)絡服務器,還有許多可改進的地方,比如服務器高可用、動態(tài)頁面和靜態(tài)頁面分離、服務器緩存、URL重寫等方面。后續(xù)還會在此基礎上針對平臺的相關問題進行改進,以減少服務器使用過程中的諸多困擾。

參考文獻:

[1] [美]KARLKOPPER.Linux企業(yè)集群:用商用硬件和免費軟件構(gòu)件高可用集群[M].北京:水利水電出版社,2007.

[2] 高俊峰.循序漸進——Linux基礎知識、服務器搭建、系統(tǒng)管理、性能調(diào)優(yōu)、集群應用[M].北京:人民郵電出版社,2009.

[3] 楊永健.反向代理軟件SQUID在高校圖書館中的應用[J].四川圖書館學報, 2007(3):59-62.

[4] 李智慧.大型網(wǎng)站技術架構(gòu):核心原理與案例分析[M].北京:電子工業(yè)出版社,2013.

[5] 陳小全,張繼紅.Linux服務器架設、性能調(diào)優(yōu)、集群管理教程——實訓與項目案例[M].北京:北京郵電大學出版社,2011.

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

[7] 伍云輝.Linux服務器配置與管理指南[M].北京:清華大學出版社,2010:1-5.

[8] 張宴.實戰(zhàn) Nginx:取代Apache的高性能Web服務器[M].北京:電子工業(yè)出版社,2010:3-10.

[9] 木太里甫艾山.Linux環(huán)境下Qt庫多語言界面實現(xiàn)[J].軟件導刊,2016,15(5):21-23.

(責任編輯:黃 ?。?

猜你喜歡
負載均衡集群
海上小型無人機集群的反制裝備需求與應對之策研究
一種無人機集群發(fā)射回收裝置的控制系統(tǒng)設計
Python與Spark集群在收費數(shù)據(jù)分析中的應用
異構(gòu)環(huán)境下改進的LATE調(diào)度算法