文章目錄
- 1. nginx群集
-
- 1.1 nginx優點
- 1.2 nginx靜态處理優勢
- 1.3 nginx負載均衡實作原理
- 1.4 nginx動靜分離實作原理
- 2. nginx+tomcat動靜分離實驗
-
- 2.1節點伺服器配置
- 2.2 nginx排程伺服器
- 2.3測試效果
1. nginx群集
1.1 nginx優點
- 支援高達50000個并發連接配接數的響應
- 擁有強大的靜态資源處理能力
- 運作穩定
- 記憶體、CPU等系統資源消耗非常低
1.2 nginx靜态處理優勢
- nginx處理靜态頁面效率遠高于tomcat的處理能力
- 若tomcat的請求量為1000次,則nginx的請求量為6000次
- tomcat每秒的吞吐量為0.6M,nginx的每秒吞吐量為3.6M
- nginx處理靜态資源的能力是tomcat處理的6倍
1.3 nginx負載均衡實作原理
在nginx中配置反向代理
##在主配置檔案中添加
upstream 服務池名 { }
##配置後端伺服器池,以提供響應資料
proxy_pass http://服務池名
##配置将通路請求轉發給後端伺服器池的伺服器處理
1.4 nginx動靜分離實作原理
服務端接收來自用戶端的請求中,既有靜态資源也有動态資源,靜态資源由nginx提供服務,動态資源nginx轉發至後端tomcat伺服器
2. nginx+tomcat動靜分離實驗
環境:
一台nginx排程器:192.168.20.10
兩台tomcat搭建的web節點伺服器:192.168.20.80,192.168.20.100
一台客戶機
2.1節點伺服器配置
web1
##搭建tomcat依賴的java環境
tar -zxvf jdk-8u91-linux-x64.tar.gz
mv jdk1.8.0_91/ /usr/local/java
vi /etc/profile
export JAVA_HOME=/usr/local/java
export JAVA_JRE=/usr/local/java/jre
export PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/lib:$JAVA_JRE/bin:$JAVA_JRE/lib
source /etc/profile
##部署tomcat
tar -zxvf apache-tomcat-8.5.16.tar.gz
mv apache-tomcat-8.5.16 /usr/local/tomcat
ln -s /usr/local/tomcat/bin/startup.sh /usr/bin/tomcatup
ln -s /usr/local/tomcat/bin/shutdown.sh /usr/bin/tomcatdown
vi /usr/local/tomcat/conf/server.xml
<Context docBase="/web1" path="" reloadable="false">
</Context>
mkdir /web1
vi /web1/index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
<head><title>TEST PAGE</title></head>
<body>
<% out.println("Welcome to test page 1");%>
<div>tomcat 動态網頁</div>
<br/>
<img src="a.jpg">
</body>
</html>
tomcatup
netstat -napt | grep 8080 #檢查服務端口開啟
web2
##與web1不同點
#1.建立tomcat網頁目錄
mkdir /web2
#2.修改tomcat的context
vi /usr/local/tomcat/conf/server.xml
<Context docBase="/web2" path="" reloadable="false">
</Context>
#3.建立web2網頁(網頁不同用于測試排程算法)
vi /web1/index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
<head><title>TEST PAGE</title></head>
<body>
<% out.println("Welcome to test page 2");%>
<div>tomcat 動态網頁</div>
<br/>
<img src="a.jpg">
</body>
</html>
2.2 nginx排程伺服器
部署nginx
yum -y install gcc gcc-c++ make pcre-devel zlib-devel
useradd -M -s /sbin/nologin nginx
tar -zxvf nginx-1.12.2.tar.gz
cd nginx-1.12.2
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx
make && make install
ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin
vi /usr/local/nginx/conf/nginx.conf
user nginx nginx;
error_log logs/error.log info;
pid logs/nginx.pid;
http {
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log logs/access.log main;
server {
charset utf-8; #主機設定開啟支援utf-8編碼
}
}
配置動靜分離反向代理
vi /usr/local/nginx/conf/nginx.conf
http {
upstream tomcat_server { #定義伺服器池
server 192.168.20.80:8080 weight=1;
server 192.168.20.40:8080 weight=1;
}
server {
location ~ \.jsp$ { #配置反向代理
proxy_pass http://tomcat_server;
}
}
}
配置網頁靜态資源
将a.jpg圖檔放入/usr/local/nginx/html
由于靜态資源由nginx處理,是以圖檔要放入nginx根目錄下
否則網頁打開時找不到圖檔資源
2.3測試效果
客戶機通路192.168.20.100/index.jsp
動靜分離測試正常:動态網頁請求成功轉發給後端tomcat伺服器,靜态資源圖檔加載正常
負載均衡群集排程測試正常:符合輪詢rr算法
第一次通路
第二次通路