Centos6下實現(xiàn)Nginx+Tomcat實現(xiàn)負(fù)載均衡及監(jiān)控

在性能測試過程中,我們可能會關(guān)注很多指標(biāo)折汞,比如CPU倔幼、IO、網(wǎng)絡(luò)爽待、磁盤等损同,通過這些指標(biāo)大致可以判斷哪個環(huán)節(jié)遇到了性能瓶頸,但是當(dāng)這些指標(biāo)無法判斷出性能瓶頸時鸟款,我們可能就需要對一些中間件進(jìn)行監(jiān)控膏燃,比如Nginx,Tomcat等何什,當(dāng)然可能還有很多其他中間件组哩,我們本章主要探討Nginx+Tomcat的部署及監(jiān)控,以及使用Jmeter對我們的服務(wù)器進(jìn)行壓測处渣,在壓測過程中伶贰,可能也會遇到Jmeter的一些瓶頸,話不多說罐栈,先搞起來黍衙。

關(guān)于Nginx實現(xiàn)負(fù)載均衡

Nginx作為反向代理服務(wù)器,實現(xiàn)負(fù)載均衡荠诬。首先瀏覽器發(fā)起請求琅翻,到達(dá)Nginx位仁,由Nginx將請求地址轉(zhuǎn)發(fā)給相應(yīng)的tomcat服務(wù)器,再由tomcat服務(wù)器將結(jié)果返回給Nginx望迎,Nginx將結(jié)果再轉(zhuǎn)發(fā)給瀏覽器障癌。大致流程如下:


Nginx實現(xiàn)負(fù)載均衡.png

環(huán)境準(zhǔn)備

  • Centos6.3
  • JDK1.8
  • Tomcat8

客戶端

  • Vmware
  • Xshell
  • Xftp

Xsehll配置

我們安裝Centos6.3后,使用Xshell進(jìn)行連接辩尊,Xshell安裝比較簡單涛浙,基本都是下一步下一步。建議使用root用戶進(jìn)行登錄摄欲,密碼為虛擬機創(chuàng)建用戶時密碼轿亮,Xshell主要作用是方便我們敲Linux命令。如下圖所示:


xshell.png

Xftp配置

我們安裝Centos6.3后胸墙,使用Xftp進(jìn)行連接我注,Xftp安裝比較簡單,基本都是下一步下一步迟隅。建議使用root用戶進(jìn)行登錄但骨,密碼為虛擬機創(chuàng)建用戶時密碼。協(xié)議選擇SFTP智袭,Xftp主要作用是上傳和下載文件奔缠。如下圖所示:


xftp.png

JDK環(huán)境配置

我們使用xftp把jdk放到/usr/local 下,然后輸入vi /etc/profile吼野,在文件末尾加入如下內(nèi)容:

export JAVA_HOME=/usr/local/jdk1.8.0_65   
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH:$HOME/bin

然后輸入source /etc/profile校哎,在命令行輸入java -version,出現(xiàn)如下內(nèi)容下圖瞳步,說明JDK環(huán)境配置成功

root@ubuntu:/usr/local# java -version
java version "1.8.0_65"
Java(TM) SE Runtime Environment (build 1.8.0_65-b17)
Java HotSpot(TM) 64-Bit Server VM (build 25.65-b01, mixed mode)

安裝Nginx

下載Nginx

切換到usr/local闷哆,然后命令行輸入wget http://nginx.org/download/nginx-1.11.6.tar.gz

解壓nginx的gz包

tar -zxvf nginx-1.11.6.tar.gz

安裝依賴

cd /usr/local/nginx-1.11.6切換到nginx安裝目錄
yum -y install pcre-devel
yum install -y zlib-devel
./configure --with-http_stub_status_module

編譯

make install

啟動nginx

cd /usr/local/nginx/sbin
./nginx

驗證Nginx是否啟動成功

curl http://localhost
出現(xiàn)下面信息說明安裝成功

<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
    body {
        width: 35em;
        margin: 0 auto;
        font-family: Tahoma, Verdana, Arial, sans-serif;
    }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>

<p>For online documentation and support please refer to
<a >nginx.org</a>.<br/>
Commercial support is available at
<a >nginx.com</a>.</p>

<p><em>Thank you for using nginx.</em></p>
</body>
</html>

Nginx常用命令

cd /usr/local/nginx/sbin

  • ./nginx 啟動
  • ./nginx -s stop 關(guān)閉
  • ./nginx -s reopen 重啟
  • ./nginx -v 查看版本
  • ./nginx -h 可以看到命令的幫助信息

Tomcat部署

  1. 把2個Tomcat包放在/usr/local,為了避免端口沖突单起,我們需要修改tomcat/conf/server.xml三處地方抱怔,
    tomcat1如下:
<Server port="8006" shutdown="SHUTDOWN">
  <Listener className="org.apache.catalina.startup.VersionLoggerListener" />

<Connector port="8081" protocol="HTTP/1.1"
         connectionTimeout="20000"
         redirectPort="8443" />

<!-- Define an AJP 1.3 Connector on port 8009 -->
<Connector port="8010" protocol="AJP/1.3" redirectPort="8443" />

tomcat2如下:

<Server port="8007" shutdown="SHUTDOWN">
  <Listener className="org.apache.catalina.startup.VersionLoggerListener" />

<Connector port="8082" protocol="HTTP/1.1"
         connectionTimeout="20000"
         redirectPort="8443" />

<!-- Define an AJP 1.3 Connector on port 8009 -->
<Connector port="8011" protocol="AJP/1.3" redirectPort="8443" />

修改完成之后,tomcat1的端口位8081馏臭,tomcat2的端口為8082

  1. 修改完tomcat端口號之后野蝇,為了區(qū)分tomcat1和tomcat2,修改tomcat/webapps/ROOT/index.jsp括儒,tomcat1修改為如下內(nèi)容
<html>
    <head>
           <title>第一個 JSP 程序</title>
    </head>
    <body>
           <%
                  out.println("111111111");
           %>
    </body>
</html>

tomcat2修改為如下內(nèi)容

<html>
    <head>
           <title>第一個 JSP 程序</title>
    </head>
    <body>
           <%
                  out.println("22222222");
           %>
    </body>
</html>
  1. 進(jìn)入/usr/local/绕沈,輸入chmod 777 -R tomcat1 tomcat2給2個tomcat賦予權(quán)限(如果權(quán)限不夠,把bin也賦予權(quán)限)帮寻,然后進(jìn)入/usr/local/tomcat/bin乍狐,輸入service iptables stop先關(guān)閉防火墻,然后./startup.sh啟動tomcat1和tomcat2固逗,啟動成功截圖如下:
    tomcat1.png

    tomcat2.png

修改nginx.conf

首先我們使用find / -name nginx.conf找到nginx.conf的位置浅蚪,我們使用/usr/local/nginx/conf/nginx.conf這個路徑的nginx.conf文件藕帜,使用vim nginx.conf打開,找到http惜傲,在#gzip on;下面作如下修改:



    upstream tomcat  { 
        server 127.0.0.1:8081 weight=1;
        server 127.0.0.1:8082 weight=1; 
    }  

    server {  
        listen       80 default_server;  
        server_name  localhost; 

        location / {  
                 root   html;
                     proxy_pass http://tomcat;  #配置集群指向
                     index  index.html index.htm;

        }  
                location /status {
                     stub_status on;
                     access_log off;

        }

    }

做了如上配置后洽故,在/usr/local/nginx/sbin重啟nginx./nginx -s reopen,啟動成功盗誊,當(dāng)我們訪問localhost時时甚,會發(fā)現(xiàn)不是Nginx的首頁了,而是出現(xiàn)/usr/local/tomcat1/webapps/ROOT/index.jsp或者是/usr/local/tomcat2/webapps/ROOT/index.jsp的頁面哈踱。當(dāng)我們來回刷新荒适,會發(fā)現(xiàn)在下面的2個頁面來回跳轉(zhuǎn),這就實現(xiàn)了負(fù)載均衡技術(shù)开镣。

tomcat1.png

tomcat2.png

查看Nginx的一些狀態(tài)信息

訪問虛擬機ip/status刀诬,出現(xiàn)如下內(nèi)容,說明stub_status模塊部署成功


nginx狀態(tài).png

各數(shù)據(jù)項說明:

  • Active connections: 當(dāng)前nginx正在處理的活動連接數(shù).
  • Server accepts handled requests : nginx總共處理了414 個連接邪财,成功創(chuàng)建414 握手(證明中間沒有失敗的),總共處理了491個請求
  • Reading: nginx讀取到客戶端的Header信息數(shù)
  • Writing: nginx返回給客戶端的Header信息數(shù)
  • Waiting: 開啟keep-alive的情況下,這個值等于 active – (reading + writing)陕壹,意思就是nginx已經(jīng)處理完成,正在等候下一次請求指令的駐留連接。
    所以,在訪問效率高,請求很快被處理完畢的情況下,Waiting數(shù)比較多是正常的.如果reading +writing數(shù)較多,則說明并發(fā)訪問量非常大,正在處理過程中树埠。

為什么是訪問ip/status

為什么是訪問ip/status帐要?還記得我們在編譯的時候使用./configure --with-http_stub_status_module嗎?編譯的時候安裝了stub_status模塊弥奸,然后我們對nginx.conf進(jìn)行了一些配置,除了加負(fù)載集群奋早,還新增了一個路徑 location /status 盛霎。

ngxtop

centos6 暫時沒有解決ngxtop啟動失敗問題,大家可以訪問我的阿里云耽装,命令行輸入ngxtop愤炸,對照官方文檔進(jìn)行操作,ngxtop地址

Tomcat監(jiān)控Probe

Probe github地址

  1. 首先把probe.war放入tomcat下面的webapps文件夾
  2. 修改CATALINA_HOME/conf/tomcat-users.xml掉奄,新增以下內(nèi)容
 <role rolename="tomcat"/>
  <role rolename="role1"/>
  <role rolename="manager-gui"/>
  <role rolename="manager-script"/>
  <role rolename="manager-jmx"/>
  <role rolename="manager-status"/>
  <role rolename="poweruser"/>
  <role rolename="probeuser"/>
  <user username="tomcat" password="tomcat" roles="tomcat"/>
  <user username="both" password="tomcat" roles="tomcat,role1"/>
  <user username="role1" password="tomcat" roles="role1"/>

  <user username="sss" password="sss" roles="manager-gui"/>
  <user username="fbysss" password="sss" roles="manager-script,manager-jmx,manager-status,poweruser,probeuser"/>

  1. 修改CATALINA_HOME/bin/catalina.sh规个,新增JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote",開啟jvm遠(yuǎn)程監(jiān)控

  2. 重啟tomcat姓建,訪問ip:端口號/probe诞仓,出現(xiàn)如下截圖說明搭建成功


    probe.png

軟件測試汪簡書地址
軟件測試汪博客地址

歡迎關(guān)注微信公眾號:軟件測試汪。軟件測試交流群:809111560

轉(zhuǎn)載請注意出處速兔,謝謝合作

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末墅拭,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子涣狗,更是在濱河造成了極大的恐慌谍婉,老刑警劉巖舒憾,帶你破解...
    沈念sama閱讀 217,734評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異穗熬,居然都是意外死亡镀迂,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,931評論 3 394
  • 文/潘曉璐 我一進(jìn)店門唤蔗,熙熙樓的掌柜王于貴愁眉苦臉地迎上來探遵,“玉大人,你說我怎么就攤上這事措译”鸱铮” “怎么了?”我有些...
    開封第一講書人閱讀 164,133評論 0 354
  • 文/不壞的土叔 我叫張陵领虹,是天一觀的道長规哪。 經(jīng)常有香客問我,道長塌衰,這世上最難降的妖魔是什么诉稍? 我笑而不...
    開封第一講書人閱讀 58,532評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮最疆,結(jié)果婚禮上杯巨,老公的妹妹穿的比我還像新娘。我一直安慰自己努酸,他們只是感情好服爷,可當(dāng)我...
    茶點故事閱讀 67,585評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著获诈,像睡著了一般仍源。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上舔涎,一...
    開封第一講書人閱讀 51,462評論 1 302
  • 那天笼踩,我揣著相機與錄音,去河邊找鬼亡嫌。 笑死嚎于,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的挟冠。 我是一名探鬼主播于购,決...
    沈念sama閱讀 40,262評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼圃郊!你這毒婦竟也來了价涝?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,153評論 0 276
  • 序言:老撾萬榮一對情侶失蹤持舆,失蹤者是張志新(化名)和其女友劉穎色瘩,沒想到半個月后伪窖,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,587評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡居兆,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,792評論 3 336
  • 正文 我和宋清朗相戀三年覆山,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片泥栖。...
    茶點故事閱讀 39,919評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡簇宽,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出吧享,到底是詐尸還是另有隱情魏割,我是刑警寧澤,帶...
    沈念sama閱讀 35,635評論 5 345
  • 正文 年R本政府宣布钢颂,位于F島的核電站钞它,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏殊鞭。R本人自食惡果不足惜遭垛,卻給世界環(huán)境...
    茶點故事閱讀 41,237評論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望操灿。 院中可真熱鬧锯仪,春花似錦、人聲如沸趾盐。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,855評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽救鲤。三九已至溃卡,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間蜒简,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,983評論 1 269
  • 我被黑心中介騙來泰國打工漩仙, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留搓茬,地道東北人。 一個月前我還...
    沈念sama閱讀 48,048評論 3 370
  • 正文 我出身青樓队他,卻偏偏與公主長得像卷仑,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子麸折,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,864評論 2 354

推薦閱讀更多精彩內(nèi)容