部署Tomcat及其負載羣集

Tomcat服務器做爲一個免費開放源代碼的web應用服務器,屬於輕量級應用服務器,在中小型系統和併發訪問用戶不是不少的場合下被廣泛應用,是開發和調試JSP程序的首選,通常來講,Tomcat雖然和Apache或者Nginx這些服務器同樣,具備處理HTML頁面的功能,而然因爲其處理靜態HTML的能力遠遠不及Apache或者Nginx,因此Tomcat一般是所爲一個servlet和JSP容器,單獨運行在後端。下圖是Tomcat應用場景:部署Tomcat及其負載羣集
用戶訪問的永遠是apache/Nginx服務器,而後由apache/Nginx服務器轉交給Tomcat服務器處理,全部服務器都鏈接着共享存儲服務器,以便使用戶每次訪問到數據是同樣的,apache/Nginx是用來作調度的,也就是熟知的負載均衡,關於負載均衡很少解釋了。。。html

一般狀況下,一臺Tomcat站點因爲可能出現單點故障及沒法應付過多的客戶複雜多樣的請求等問題,不能單獨應用於生產環境下,因此須要使用負載均衡來解決這些問題。java

Nginx是一個很是優秀的http服務器軟件,它可以支持高達50000個併發鏈接數的響應,擁有強大的靜態資源處理能力,運行穩定,而且內存、CPU等系統資源消耗很是低。目前不少大型網站都應用Nginx服務器做爲後端網站程序的反向代理及負載均衡器,來提高整個站點的負載併發能力。nginx

開始準備工做,搭建下面的環境,爲了簡化,就不部署共享存儲服務器了,環境以下:
部署Tomcat及其負載羣集
1、部署前準備:web

三臺服務器均使用centos7來部署,部署過程當中所用到的軟件以下:apache

centos7的系統映像;
Nginx和Tomcat源碼包,可自行從官網下載,也可從我提供的連接下載(已打包爲ISO映像文件):連接:連接: https://pan.baidu.com/s/1LgiBUuU5a1SQNh4qeqBODw
提取碼: h9px
2、配置Tomcat服務器:
一、開始在192.168.1.1服務器上部署Tomcat(關於防火牆的配置這裏就省略了,請自行配置防火牆以放行相關流量,我這裏直接停掉了防火牆,Tomcat默認使用的端口號是8080;Nginx默認使用的端口號是80):vim

[root@localhost ~]# java -version    #查看JDK是否安裝,若沒有,自行安裝
openjdk version "1.8.0_161"
OpenJDK Runtime Environment (build 1.8.0_161-b14)
OpenJDK 64-Bit Server VM (build 25.161-b14, mixed mode)
[root@localhost media]# tar zxf apache-tomcat-8.5.16.tar.gz -C /usr/src      #解壓Tomcat包
[root@localhost media]# cd /usr/src/
[root@localhost src]# mv apache-tomcat-8.5.16/ /usr/local/tomcat8 
#Tomcat不用編譯安裝,解壓後便可用
[root@localhost src]# mkdir -p /web/webapp1        #創建Java的web站點,用於存放網站文件
[root@localhost src]# vim /web/webapp1/index.jsp          #創建一個index.jsp的測試頁面
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
 <head>
        <title>JSP test1 page</title>
 </head>
 <body>
        <% out.println("www.test1111.com");%>
 </body>
</html>
[root@localhost src]# vim /usr/local/tomcat8/conf/server.xml       #修改Tomcat的主配置文件

                    ......................................
 <Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">     #定位到該行,而後添加下面兩行內容
        <Context docBase="/web/webapp1" path="" reloadable="false">
        </Context>
#docBase:web應用的文檔默認目錄;
#path=""設置默認「類;」
#reloadable設置監視「類」是否變化;
[root@localhost ~]# /usr/local/tomcat8/bin/startup.sh              
#啓動服務,中止服務的話,只需將startup.sh換爲shutdown.sh便可。
Using CATALINA_BASE:   /usr/local/tomcat8
Using CATALINA_HOME:   /usr/local/tomcat8
Using CATALINA_TMPDIR: /usr/local/tomcat8/temp
Using JRE_HOME:        /usr
Using CLASSPATH: /usr/local/tomcat8/bin/usr/local/tomcat8/bin/tomcat-juli.jar
Tomcat started.

[root@localhost src]# netstat -antp | grep 8080             #查看默認端口8080是否在監聽狀態
tcp6       0      0 :::8080        :::*            LISTEN      13220/java

本機測試訪問:192.168.1.1:8080,看到以下測試頁面:
部署Tomcat及其負載羣集
至此,192.168.1.1的Tomcat就已經配置完成了,另外一臺Tomcat服務器192.168.1.2的配置和192.168.1.1的配置徹底同樣,將上面的配置在192.168.1.2服務器上配置一遍便可,不過爲了測試的時候能夠看出負載均衡的效果,讓咱們能夠看出每次訪問的服務器都不是同一臺,須要將192.168.1.2的Tomcat服務器的測試頁面和192.168.1.1的頁面不同。
不過在實際生產環境中,兩臺Tomcat訪問的必定是使用同一個共享存儲服務器,不論是哪臺服務器向用戶提供服務,用戶接受到的頁面必定是同樣的。
後端

咱們在192.168.1.2的服務器上將上面的配置來一遍吧,將192.168.1.2服務器的測試頁面內容更改一下,以下:centos

[root@localhost src]# vim /web/webapp1/index.jsp  
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
<head>
            <title>JSP test1 page</title>
</head>
<body>
            <% out.println("www.test22222222222222.com");%>
</body>
</html>

3、配置Nginx服務器(IP:192.168.1.1):tomcat

一、安裝Nginx:bash

[root@localhost ~]# yum -y install pcre-devel zlib-devel openssl-devel
 #安裝依賴包
 [root@localhost ~]# useradd www -s /bin/false        #建立運行用戶
[root@localhost media]# tar zxf nginx-1.12.0.tar.gz -C /usr/src     #解包
[root@localhost media]# cd /usr/src/nginx-1.12.0/       #切換至該目錄
[root@localhost nginx-1.12.0]# ./configure --prefix=/usr/local/nginx --user=www --group=www --with-file-aio --with-http_stub_status_module --with-http_gzip_static_module --with-http_flv_module && make && make install               #編譯安裝
[root@localhost nginx-1.12.0]# vim /usr/local/nginx/conf/nginx.conf              #編輯主配置文件
                 .............................
   #gzip  on;                  #定位到該行,寫入下面四行
    upstream tomcat_server {          
        server 192.168.1.1:8080 weight=1;
        server 192.168.1.2:8080 weight=1;
}
   #寫到這裏結束
     #weight參數表示權重,權重越高,表示被分配到的機率越大。
     #爲了測試效果明顯,這裏將權重設置爲同樣
    server {
        listen       80;
        server_name  localhost;
         ......................
  location / {
            root   html;
            index  index.html index.htm;
            proxy_pass  http://tomcat_server;               #定位到該{ }中,寫入該行,「http://」後面的名字要和上面添加的upstream項後面的名字一致,纔可實現調度。
        }

二、優化Nginx的控制:

[root@localhost nginx-1.12.0]#  ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/                 
建立主程序的連接文件
[root@localhost ~]# vim /etc/init.d/nginx     #編輯服務腳本
!/bin/bash
chkconfig: - 99 20
PROG="/usr/local/nginx/sbin/nginx"
PIDF="/usr/local/nginx/logs/nginx.pid"
case "$1" in
start)
$PROG
;;
stop)
kill -s QUIT $(cat $PIDF)
;;
restart)
$0 stop
$0 start
;;
reload)
kill -s HUP $(cat $PIDF)
;;
)
echo "USAGE:$0 {start | stop | restart | reload}"
exit 1
esac
exit 0

[root@localhost ~]# chmod +x /etc/init.d/nginx      #添加執行權限
[root@localhost ~]# chkconfig --add nginx           #添加爲系統服務
[root@localhost nginx-1.12.0]# nginx -t              #檢查主配置文件是否有誤
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
[root@localhost ~]# systemctl start nginx             #啓動Nginx服務,以確認腳本的正常運行
[root@localhost ~]# netstat -anpt | grep nginx                    #查看80端口是否處於監聽狀態
tcp        0      0 0.0.0.0:80      0.0.0.0:*      LISTEN      90475/nginx: master

4、訪問測試:

至此,部署工做已經完成,如今使用客戶機訪問Nginx服務器192.168.1.1測試,效果以下:

第一次訪問將會看到以下界面:
部署Tomcat及其負載羣集
刷新一下網頁將會看到以下界面
部署Tomcat及其負載羣集能夠看到,咱們訪問的是Nginx服務器,真正處理訪問請求的是Tomcat服務器,並且每次訪問請求都是不一樣的Tomcat服務器來處理,這說明負載均衡羣集搭建成功,已經能夠在兩個Tomcat server站點進行切換了。

相關文章
相關標籤/搜索