天天看點

Nginx + Tomcat 負載均衡群集(實驗)

文章目錄

    • 一、Nginx 負載均衡實作原理:
      • (1)Nginx 靜态處理優勢
      • (2)Tomcat 主要目錄
      • (3)Nginx 應用
      • (4)動靜分離原理
    • 二、實驗案例:
      • 第一步:搭建 Nginx
      • 第二步:部署兩台 Tomcat
      • 第三步:Tomcat 中建立測試頁面
      • 第四步:修改 Nginx 配置檔案,添加伺服器池
      • 第五步:用戶端測試

一、Nginx 負載均衡實作原理:

Nginx 實作負載均衡是通過反向代理來實作的。

(1)Nginx 靜态處理優勢

  • Nginx 處理靜态頁面的效率遠高于 Tomcat 的處理能力;
  • 如果 Tomcat 的請求量為 1000次,則 Nginx 的請求量為 6000次;
  • Tomcat 每秒的吞吐量為 0.6 M,Nginx 的每秒吞吐量為 3.6M;
  • Nginx 處理靜态資源的能力是 Tomcat 處理的6倍,優勢很大。

(2)Tomcat 主要目錄

Nginx + Tomcat 負載均衡群集(實驗)

(3)Nginx 應用

1、nginx是一款非常優秀的 HTTP 伺服器軟體:

  • 支援高達 50000個并發連接配接數的響應;
  • 擁有強大的靜态資源處理能力;
  • 運作穩定;
  • 記憶體、CPU 等系統資源消耗非常低。

2、目前已有很多大型網站都應用 Nginx 伺服器作為後端網站程式的反向代理及負載均衡器,提升整個站點的負載并發能力。

(4)動靜分離原理

1、服務端接受來自用戶端的請求中,既有靜态資源也有動态資源。

Nginx + Tomcat 負載均衡群集(實驗)

2、設定 nginx 處理靜态圖檔,後端 Tomcat 處理動态頁面

  • 修改 Tomcat 端 jsp 檔案,指定圖檔檔案;
  • 修改 nginx 配置檔案,添加正則處理圖檔;
  • 建立目錄并添加圖檔(注意項目名稱需要和 Java 項目名稱相同)
  • 重新開機 nginx;
  • 浏覽器通路測試檢視圖檔是否添加;
  • 分别在 nginx 伺服器和 Tomcat 伺服器檢視日志檔案

二、實驗案例:

###實驗拓撲圖###

(1)網絡圖總覽:

Nginx + Tomcat 負載均衡群集(實驗)

(2)具體案例實驗:

Nginx + Tomcat 負載均衡群集(實驗)
角色 IP位址
Nginx 192.168.220.131
Tomcat01 192.168.220.136
Tomcat02 192.168.220.137

實驗環境說明:

  • 準備三台虛拟機,一台作為 nginx 代理伺服器,用于接收使用者的通路請求,兩台 Tomcat 伺服器(群集);
  • nginx 将用戶端的請求,轉發給背景的多台 Tomcat 伺服器處理,Tomcat 将請求回應,在通過代理伺服器發給用戶端;
  • 實驗驗證:用戶端隻需要在浏覽器上通路代理伺服器的位址,不需要通路背景的具體 Tomcat,就能通路到網頁資訊。

第一步:搭建 Nginx

搭建nginx,之前部落格有詳細介紹。

第二步:部署兩台 Tomcat

(1)配置 JAVA 環境

1、安裝 jdk

rpm -ivh jdk-8u201-linux-x64.rpm
           

安裝後的位置在:/usr/java/

2、配置環境變量

vim /etc/profile,在檔案末尾添加以下代碼:

export JAVA_HOME=/usr/java/jdk1.8.0_201-amd64
export CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
export PATH=$JAVA_HOME/bin:$PATH
           

使環境變量生效:

source /etc/profile
           

3、使用 java -version 指令檢查是否已安裝成功

Nginx + Tomcat 負載均衡群集(實驗)

(2)安裝和啟動 Tomcat

1、解壓縮包到指定路徑,/usr/local/

tar zxvf apache-tomcat-9.0.16.tar.gz -C /usr/local/
           

2、解壓完成後,生成 apache-tomcat-9.0.16 檔案夾,改名為 Tomcat

mv apache-tomcat-9.0.16/ tomcat
           

3、為了友善控制 tomcat的開啟和關閉,我們可以建立一個軟連接配接

ln -s /usr/local/tomcat/bin/startup.sh /usr/bin/
ln -s /usr/local/tomcat/bin/shutdown.sh /usr/bin/
           

4、用 startup.sh 腳本開啟tomcat

Nginx + Tomcat 負載均衡群集(實驗)

第三步:Tomcat 中建立測試頁面

(1)建立目錄

mkdir -p /web/webapp1
           
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("Welcome to test site, http://www.test1.com");%>
</body>
</html>
           
Nginx + Tomcat 負載均衡群集(實驗)

(2)指定站點

目錄:/usr/local/tomcat/conf

vim server.xml
添加以下代碼:

 <Context docBase="/web/webapp1" path="" reloadable="false">
 </Context>
           
Nginx + Tomcat 負載均衡群集(實驗)

(3)回到 bin/ 目錄下,再重新啟動一下 Tomcat

./shutdown.sh 
./startup.sh
           

(4)浏覽器通路一下網頁,檢查是否成功

Nginx + Tomcat 負載均衡群集(實驗)

(5)第二台 Tomcat 部署和第一台一模一樣,但是為了頁面顯示差別,在 /web/webapp1/index.jsp 檔案中,稍作修改,将 test1 改為 test2

Nginx + Tomcat 負載均衡群集(實驗)

注意:在企業網中,群集中的 Tomcat 網站内容是一模一樣的,客戶無論通路到哪個Tomcat,提供的網站都是一緻的。但是這邊,為了展示實驗效果,站點内容不一樣,是為了區分在用戶端能夠看出是哪個Tomcat 提供了服務回應。

第四步:修改 Nginx 配置檔案,添加伺服器池

(1)檔案位置:/usr/local/nginx/conf/nginx.conf

1、添加服務池:

upstream tomcat-server {
                       server 192.168.220.136:8080 weight=1;
                       server 192.168.220.137:8080 weight=1;
                    }
           
Nginx + Tomcat 負載均衡群集(實驗)

2、在 location 段,添加以下代碼,意為調用服務池(協定,端口等等)

Nginx + Tomcat 負載均衡群集(實驗)

(2)重新開機 nginx 服務

killall -1 nginx
           

第五步:用戶端測試

這個架構中,nginx 隻作為代理伺服器而存在,我們作為使用者通路網頁,根本就不知道後面是哪一台具體提供服務的伺服器,隻需要将請求發送給 nginx 代理伺服器,由 nginx 代理伺服器,調用背景的Tomcat 給使用者提供回應。

在客戶機浏覽器上通路 nginx 代理伺服器:

Nginx + Tomcat 負載均衡群集(實驗)
Nginx + Tomcat 負載均衡群集(實驗)

我們可以看到,從代理伺服器,可以直接通路到群集Tomcat提供的服務。

繼續閱讀