使用 Nginx 搭配 Tomcat 實現負載均衡

1、簡介

Nginx(發音同 engine x)是異步框架的網頁服務器,也可以用作反向代理、負載平衡器和 HTTP 緩存。該軟件由伊戈爾·賽索耶夫創建並於2004年首次公開發布。2011年成立同名公司以提供支持。2019年3月11日,Nginx 公司被 F5 Networks 以6.7億美元收購。

傳統模型下,一個項目部署在一臺tomcat上,這個時候,假如tomcat因爲服務器資源不夠,突然掛機了,那麼整個項目就無法使用,給客戶造成的損失可想而知!

在這裏插入圖片描述
Nginx 就可以避免單臺服務如果掛機,依然能保證服務正常使用,當我們把項目 war 包部署到三臺服務器上時,即使服務器A、服務器B都掛了,依然能夠通過服務器C訪問項目資源!

在這裏插入圖片描述

2、Nginx 安裝

2.1、下載 Nginx 安裝包

直接訪問 Nginx 官網(https://nginx.org),下載對應的安裝包,本次案例選擇的是nginx-1.6.3.tar.gz版本,安裝環境是centos7。

在這裏插入圖片描述
上傳到對應服務器的文件夾或者直接在服務器端使用wget命令

#下載nginx-1.6.3.tar.gz
wget -c https://nginx.org/download/nginx-1.6.3.tar.gz

如果出現如下信息:

-bash: wget: command not found

提示wget命令找不到,使用如下命令,進行安裝,之後再次執行上述下載命令

yum install wget

2.2、安裝Nginx

在按照 Nginx 之前,需要安裝相應運行庫環境,操作如下

  1. 安裝 gcc 環境

    yum install gcc-c++

  2. 安裝 PCRE 依賴庫

    yum install -y pcre pcre-devel

  3. 安裝 zlib 依賴庫

    yum install -y zlib zlib-devel

  4. 安裝 OpenSSL 安全套接字層密碼庫

    yum install -y openssl openssl-devel

  5. 解壓 Nginx

    tar -zxvf nginx-1.6.3.tar.gz

  6. 執行配置命令

    cd nginx-1.6.3

    執行配置命令

    ./configure

    如圖。表示執行配置成功。
    在這裏插入圖片描述
    當然,也可以執行自定義配置文件,例如:

./configure
–prefix=/usr/local/nginx
–conf-path=/usr/local/nginx/conf/nginx.conf
–pid-path=/usr/local/nginx/conf/nginx.pid
–lock-path=/var/lock/nginx.lock
–error-log-path=/var/log/nginx/error.log
–http-log-path=/var/log/nginx/access.log
–with-http_gzip_static_module
–http-client-body-temp-path=/var/temp/nginx/client
–http-proxy-temp-path=/var/temp/nginx/proxy
–http-fastcgi-temp-path=/var/temp/nginx/fastcgi
–http-uwsgi-temp-path=/var/temp/nginx/uwsgi
–http-scgi-temp-path=/var/temp/nginx/scgi

注意:臨時文件目錄指定爲/var/temp/nginx,需要在/var下創建tempnginx目錄

  1. 執行編譯安裝命令

    make install

  2. 查找安裝路徑

    whereis nginx

  3. 啓動服務(進入 nginx 的目錄)

    cd /usr/local/nginx/sbin/

在這裏插入圖片描述
執行如下命令

#啓動
./nginx
#停止,此方式相當於先查出nginx進程id再使用kill命令強制殺掉進程
./nginx -s stop
#停止,此方式停止步驟是待nginx進程處理任務完畢進行停止
./nginx -s quit
#重新加載配置文件,Nginx服務不會中斷
./nginx -s reload

  1. 修改配置文件
    比如,修改端口號,默認端口號爲80,咱們這裏改成81;

進入配置文件夾

cd /usr/local/nginx/conf

備份原始配置文件

cp nginx.conf nginx.conf.back

編輯nginx.conf配置文件

vim nginx.conf

在這裏插入圖片描述

找到server中的listen,修改端口號爲81
在這裏插入圖片描述

啓動服務

./nginx

查看 nginx 進程

ps -ef|grep nginx

在這裏插入圖片描述
在這裏插入圖片描述

3、Tomcat安裝

直接訪問 tomcat 官網(http://tomcat.apache.org/),下載對應的安裝包,本次案例選擇的是apache-tomcat-8.5.45.tar.gz版本,本次安裝環境是centos7
在這裏插入圖片描述
上傳到對應的服務器文件夾中,之後解壓文件夾

tar -zxvf apache-tomcat-8.5.40.tar.gz

重新命名

mv apache-tomcat-8.5.40 tomcat-1

同樣的,再次解壓安裝包,命名爲tomcat-2

mv apache-tomcat-8.5.40 tomcat-2

  1. 修改 tomcat 端口號
    將 tomcat-1 的 http 端口設置爲8080,將 tomcat-2 的 http 端口設置爲8081。
    進入tomcat的conf文件夾,修改server.xml

    vim server.xml

修改SHUTDOWNHTTP/1.1redirectPortAJP/1.3端口,使其錯開,避免重啓的時候,報端口被佔用問題

tomcat-1 的SHUTDOWNHTTP/1.1redirectPortAJP/1.3設置如下:

<!--關閉服務端口-->
<Server port="9005" shutdown="SHUTDOWN">
...
<!--HTTP服務端口8080,跳轉端口9443-->
<Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="9443" />

<!--AJP服務端口-->
<Connector port="9009" protocol="AJP/1.3" redirectPort="9443" />
...
</Server>

tomcat-2 的SHUTDOWNHTTP/1.1redirectPortAJP/1.3設置如下:

<!--關閉服務端口-->
<Server port="10005" shutdown="SHUTDOWN">
...
<!--HTTP服務端口8081-->
<Connector port="8081" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="10443" />

<!--AJP服務端口-->
<Connector port="10009" protocol="AJP/1.3" redirectPort="10443" />
...
</Server>
  1. 啓動服務
    分別進入 tomcat-1tomcat-2bin文件夾,執行腳本,啓動服務

sh startup.sh

查看服務是否啓動成功

ps -ef|grep tomcat

直接在瀏覽器上分別輸入ip:8080、ip:8081進行訪問了,結果如下:
在這裏插入圖片描述

  1. 編寫html
    爲了便於測試,我們創建一個html格式的頁面,文件命名爲index.html,內容如下:
    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="utf-8">
            <title></title>
        </head>
        <body>
            Hello server!
        </body>
    </html>
    

進入tomcatwebapps文件夾,刪除ROOT文件夾裏面的東西,創建index.html文件;
tomcat-1 中,index.html 內容如下:
在這裏插入圖片描述
tomcat-2中,index.html內容如下:
在這裏插入圖片描述

  1. 測試
    創建好了之後,分別在瀏覽器上訪問ip:8080ip:8081ip:8080,結果如下:

4、Nginx實現負載均衡

進入Nginx的配置文件夾

cd /usr/local/nginx/conf

編輯nginx.conf配置文件

vim nginx.conf

主要新增upstream集羣配置點,配置如下:

worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
gzip on;
#服務器的集羣(這個就是我們要配置的地方)
#test.com:服務器集羣名字,自定義
upstream test.com {
#服務器配置 weight是權重的意思,權重越大,分配的概率越大。
#127.0.0.1:8080、127.0.0.1:8081對應tomcat服務器地址
server 127.0.0.1:8080 weight=1;
server 127.0.0.1:8081 weight=2;
}
server {
listen 81;
server_name localhost;
location / {
· #配置反向代理地址
proxy_pass http://test.com;
proxy_redirect default;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}

參數說明:

•worker_processes:工作進程的個數,一般與計算機的cpu核數一致
•worker_connections:單個進程最大連接數(最大連接數=連接數*進程數)
•include:文件擴展名與文件類型映射表
•default_type:默認文件類型
•sendfile :開啓高效文件傳輸模式,sendfile指令指定nginx是否調用sendfile函數來輸出文件,對於普通應用設爲 on,如果用來進行下載等應用磁盤IO重負載應用,可設置爲off,以平衡磁盤與網絡I/O處理速度,降低系統的負載。注意:如果圖片顯示不正常把這個改成off。
•keepalive_timeout:長連接超時時間,單位是秒
•upstream:服務器的集羣配置點

配置好之後,進入/usr/local/nginx/sbin/ 文件夾,重新刷新配置文件

./nginx -s reload

最後,訪問Nginx服務器所在ip:81地址,多次刷新,看看效果:

在這裏插入圖片描述
在這裏插入圖片描述

至此,Nginx 與 Tomcat 搭配實現負載均衡已經配置完了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章