Nginx+Tomcat負載均衡及動靜分離群集的實現

Nginx配置反向代理的主要參數

upstream服務池名{}
配置後端服務器池,以提供響應數據

proxy_pass http://服務池名
配置將訪問請求轉發給後端服務器池的服務器處理

動靜分離原理

服務端接收來自客戶端的請求中,既有靜態資源也有動態資源,靜態資源由Nginx提供服務,動態資源Nginx轉發至後端

Nginx靜態處理優勢

Nginx處理靜態頁面的效率遠高於Tomcat的處理能力
若Tomcat的請求量為1000次則Nainx的每秒吞吐量為3.6M

Tomcat每秒的吞吐量為0.6M,Nginx的每秒吞吐量為3.6M

Nginx處理靜態資源的能力是Tomcat處理的6倍

配置Nginx+Tomcat負載均衡,動靜分離

Nginx 服務器:192.168.100.102

Tomcat 服務器1:192.168.100.103

Tomcat 服務器2:192.168.100.105:8080 192.168.100.105:8081

配置Nginx 負載均衡器

[root@zzz ~]# systemctl stop firewalld

[root@zzz ~]# setenforce 0

[root@zzz ~]# yum -y install pcre-devel zlib-devel 

openssl-devel gcc gcc-c++ make

[root@zzz ~]# useradd -M -s /sbin/nologin nginx

[root@zzz ~]# cd /opt

[root@zzz opt]# cd nginx-1.12.2/

[root@zzz nginx-1.12.2]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-file-aio --with-http_stub_status_module --with-http_gzip_static_module --with-http_flv_module --with-stream

優化路徑

[root@zzz nginx-1.12.2]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/

加入systemctl啟動服務

[root@zzz nginx-1.12.2]# vim /lib/systemd/system/nginx.service

在這裡插入圖片描述

給與權限 啟動服務

[root@zzz nginx-1.12.2]# chmod 754 /lib/systemd/system/nginx.service 
[root@zzz nginx-1.12.2]# systemctl start nginx.service 
[root@zzz nginx-1.12.2]# systemctl enable nginx.service 

部署兩臺Tomcat

[root@send opt]# systemctl stop firewalld.service 
[root@send opt]# setenforce 0
[root@send opt]# tar zxvf jdk-8u91-linux-x64.tar.gz -C /usr/local/
[root@send local]# mv jdk1.8.0_91/ jdk1.8
[root@send jdk1.8]# vim /etc/profile

在這裡插入圖片描述

[root@send jdk1.8]# source /etc/profile

動靜分離配置

(1)Tomcat1 server 配置

[root@send bin]# mkdir /usr/local/tomcat/webapps/test
[root@send bin]# vim /usr/local/tomcat/webapps/test/index.jsp

在這裡插入圖片描述

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
<head>
<title>JSP test1 page</title>   
</head>
<body>
<% out.println("動態頁面 1,http://www.test1.com");%>
</body>
</html>

在這裡插入圖片描述

(2)Tomcat2 server 配置

a

在這裡插入圖片描述

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
<head>
<title>JSP test1 page </title>   
</head>
<body>
<% out.println("動態頁面 1,http://www.test1.com");%>
</body>
</html>
[root@localhost webapps]# cd ..
[root@localhost tomcat8]# vim conf/server.xml 

在這裡插入圖片描述

[root@localhost local]# mkdir tomcat9/webapps/test
[root@localhost local]# cp tomcat8/webapps/test/index.jsp tomcat9/webapps/test/
[root@localhost local]# vim tomcat9/webapps/test/index.jsp 

在這裡插入圖片描述

[root@localhost local]# vim tomcat9/conf/server.xml 

在這裡插入圖片描述

重啟服務。查看端口

在這裡插入圖片描述

開啟網頁驗證

在這裡插入圖片描述

在這裡插入圖片描述

在這裡插入圖片描述

切換到Nginx服務器上

在這裡插入圖片描述

在這裡插入圖片描述

在這裡插入圖片描述

開啟網頁驗證

在這裡插入圖片描述

在這裡插入圖片描述

配置動態頁面請求

[root@zzz conf]# vim nginx.conf

在這裡插入圖片描述

重啟服務

[root@zzz conf]# systemctl restart nginx.service 

瀏覽器驗證

在這裡插入圖片描述

刷新。看頁面跳轉,是否實現負載均衡

在這裡插入圖片描述

在這裡插入圖片描述

Nginx 負載均衡模式

rr 負載均衡模式:
每個請求按時間順序逐一分配到不同的後端服務器,如果超過瞭最大失敗次數後(max_fails,默認1),在失效時間內(fail_timeout,默認10秒),該節點失效權重變為0,超過失效時間後,則恢復正常,或者全部節點都為down後,那麼將所有節點都恢復為有效繼續探測,一般來說rr可以根據權重來進行均勻分配。

least_conn 最少連接:
優先將客戶端請求調度到當前連接最少的服務器。

ip_hash 負載均衡模式:
每個請求按訪問ip的hash結果分配,這樣每個訪客固定訪問一個後端服務器,可以解決session的問題,但是ip_hash會造成負載不均,有的服務請求接受多,有的服務請求接受少,所以不建議采用ip_hash模式,session 共享問題可用後端服務的 session 共享代替 nginx 的 ip_hash。

fair(第三方)負載均衡模式:
按後端服務器的響應時間來分配請求,響應時間短的優先分配。

url_hash(第三方)負載均衡模式:
基於用戶請求的uri做hash。和ip_hash算法類似,是對每個請求按url的hash結果分配,使每個URL定向到同一個後端服務器,但是也會造成分配不均的問題,這種模式後端服務器為緩存時比較好。

到此這篇關於Nginx+Tomcat負載均衡及動靜分離群集的實現的文章就介紹到這瞭,更多相關Nginx Tomcat負載均衡及動靜分離群集內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: