文章目錄
- 一、集群概述
- 二、Nginx
- 三、配置步驟
- 1.環境
- 2.部署 Nginx 負載均衡器
- 3.部署 2 臺 Tomcat 應用服務器
- 4.動靜分離配置
- 5.配置 Nginx Server
一、集群概述
- 通常情況下,一個 Tomcat 站點由于可能出現單點故障及無法應付過多客戶復雜多樣的請求等情況,不能單獨應用于生產環境下,所以我們需要一套更可靠的解決方案
- Nginx 是一款非常優秀的 http 服務器軟體,它能夠支持高達 5000 個并發連接數的回應,擁有強大的靜態資源處理能力,運行穩定,并且記憶體、CPU 等系統資源消耗非常低
- 目前很多大型網站都應用 Nginx 服務器作為后端網站的反向代理及負載均衡器,來提升整個站點的負載并發能力
以 Nginx 作為負載均衡器,Tomcat 作為應用服務器的負載集群,網站拓撲架構如下圖所示:
Nginx服務器作為前端,Tomcat服務器作為后端,web頁面請求由Nginx服務來進行轉發
但是不是把所有的web請求轉發,而是將靜態頁面請求Nginx服務器自己來處理,動態頁面請求則轉發給后端的Tomcat服務器來處理但據我們所知,Tomcat是屬于輕量級的應用服務器,可接受訪問量可能會不足,所以我們需要多臺Tomcat服務器,然后通過Nginx配置權重來進行挑選Tomcat服務器去進行處理,負載均衡的一種策略
二、Nginx
Nginx 服務器:
- 首頁使用精準匹配
- 靜態頁面使用正則匹配自己處理
- 動態頁面使用正則匹配jsp結尾的請求,使用proxy_pass轉發給Tomcat服務器
Nginx 靜態處理優勢
- Nginx處理靜態頁面的效率遠高于Tomcat的處理能力
- 若Tomcat的請求量為1000次,則Nginx的請求量為6000次
- Tomcat每秒的吞吐量為0.6M,Nginx的每秒吞吐量為3 .6M
- Nginx處理靜態資源的能力是Tomcat處理的6倍
Nginx動靜分離原理:
- 服務端接收來自客戶端的請求中,既有靜態資源也有動態資源
- 靜態資源有Nginx提供服務
- 動態資源Nginx轉發至后端
Nginx配置反向代理的主要引數:
配置后端服務器池,以提供回應資料
upstream 服務器名 {}
配置將訪問請求轉發給后端服務器池名
proxy_pass http://服務器名
三、配置步驟
1.環境
- VMware 16 Pro(16.1.0)
- 網路配接器為 NAT 模式
- 網卡配置為靜態獲取 IP
- 本地YUM源倉庫
- 原始碼編譯安裝
| 主機 | 對應 | IP地址 | 所需軟體 |
|---|---|---|---|
| Nginx Server | CentOS 7-1 | 192.168.126.11 | nginx-1.12.2.tar.gz |
| Tomcat Server1 | CentOS 7-2 | 192.168.126.12 | apache-tomcat-9.0.16.tar.gz、jdk-8u201-linux-x64.rpm |
| Tomcat Server2 | CentOS 7-3 | 192.168.126.13 | apache-tomcat-9.0.16.tar.gz、jdk-8u201-linux-x64.rpm |
- 軟體包傳送門:https://pan.baidu.com/s/1crfygqLQQsO-HByrF1YZ8g(提取碼:k3e6)
2.部署 Nginx 負載均衡器
- 關于 Nginx 的原始碼編譯安裝詳細理論實操方面可以看我之前的博客,傳送門:https://blog.csdn.net/weixin_51486343/article/details/112390348
- 在軟體包分享資源下載完畢后,打開 Xshell,將 Nginx 軟體包拖至 /opt/目錄下

- 這里提供一個一鍵部署Nginx Shell 腳本
cd /opt/
vim nginx.sh
#!/bin/bash
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
yum -y install pcre-devel zlib-devel gcc gcc-c++ make
useradd -M -s /sbin/nologin nginx
cd /opt
tar zxvf nginx-1.12.2.tar.gz
cd nginx-1.12.2/
./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_status_module
make -j 2 && make install
ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
killall -9 nginx
nginx
echo `[Unit]
Description=nginx
After=network.target
[Service]
Type=£orking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStart=/usr/local/nginx/sbin/nginx
ExecrReload=/bin/kill -s HUP $MAINPID
ExecrStop=/bin/ki11 -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target` > /lib/systemd/system/nginx.service
chmod 754 /lib/systemd/system/nginx.service
systemctl start nginx.service
systemctl enable nginx.service
. nginx.sh
#等待執行完畢
- 驗證


3.部署 2 臺 Tomcat 應用服務器
- 具體理論及實操可看我上一篇博客,傳送門:https://blog.csdn.net/weixin_51486343/article/details/112746276
- 這里也提供一個一鍵部署 Tomcat 服務器腳本
- 記得先把兩個軟體包拖至 /opt 目錄下

cd /opt
vim tomcat.sh
#/bin/bash
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
cd /opt
rpm -ivh jdk-8u201-linux-x64.rpm
echo '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' > /etc/profile.d/java.sh
source /etc/profile
cd /opt
tar zxvf apache-tomcat-9.0.16.tar.gz
mv apache-tomcat-9.0.16 /usr/local/tomcat
/usr/local/tomcat/bin/startup.sh
. tomcat.sh
#等待執行完畢
#驗證
netstat -natp | grep 8080
java -version
http://192.168.126.11:8080
(http://192.168.126.12:8080)


- 另一臺做相同操作

4.動靜分離配置
- Tomcat Server1
mkdir /usr/local/tomcat/webapps/xcf1
#創建指定首頁目錄
#這里隨后拖進來一張jpg格式的照片
vim /usr/local/tomcat/webapps/xcf1/index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
<head>
<title>JSP test2 page</title>
</head>
<body>
<% out.println("這里是動態頁面:123123");%>
</body>
</html>

vim /usr/local/tomcat/conf/server.xml
#編輯tomcat主組態檔
<Host name="TomcatServer1" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
<Context docBase="/usr/local/tomcat/webapps/xcf1" path="" reloadable="true" />
</Host>
#主機名:TomcatServer1
#作業目錄:Webapps
#開啟解壓war包
#運行時有web應用自動部署
#首頁檔案在/usr/local/tomcat/webapps/xcf1目錄中
默認檔案:index.jsp

#重啟
/usr/local/tomcat/bin/shutdown.sh
/usr/local/tomcat/bin/startup.sh

- Tomcat Server2 配置
與Tomcat Server1 配置基本相同
mkdir /usr/local/tomcat/webapps/xcf2


#記得重啟
/usr/local/tomcat/bin/shutdown.sh
/usr/local/tomcat/bin/startup.sh

5.配置 Nginx Server
- 準備靜態頁面和靜態圖片
echo '<html><body><h1>這是默認目錄靜態頁面</h1></body></html>' > /usr/local/nginx/html/index.html
mkdir /usr/local/nginx/html/xiaoxu

- 配置負載均衡的服務器串列
weight引數表示權重,權重越高,被分配到的概率越大
vim /usr/local/nginx/conf/nginx.conf
#編輯nginx主組態檔
#gzip on;
upstream tomcat_server {
server 192.168.126.12:8080 weight=1;
server 192.168.126.13:8080 weight=1;
}
server {
listen 80;
server_name www.xcf.com;
charset utf-8;

- 配置Nginx處理動態頁面請求,將 .jsp檔案請求轉發到Tomcat 服務器處理
location ~ .*.jsp$ {
proxy_pass http://tomcat_server;
proxy_set_header HOST $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

- 配置Nginx處理靜態圖片請求
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|css)$ {
root /usr/local/nginx/html/xiaoxu;
expires 10d;
}

- 重啟nginx服務并進行測驗
systemctl restart nginx.service
測驗靜態網頁頁面效果:
瀏覽器訪問:http://192.168.126.11/
瀏覽器訪問http://192.168.126.11/cat.jpg
測驗負載均衡效果,重繪瀏覽器進行訪問 http://192.168.126.11/xcf/index.jsp
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/250663.html
標籤:其他






