1. 程式人生 > >億級併發|day06-Nginx高階應用(上)

億級併發|day06-Nginx高階應用(上)

0 前期準備

1 服務代理

1.1 需求

1.2 編輯配置檔案

#後臺管理系統
server {
	listen		80;
	server_name  manage.jt.com;

	location / {
	
		proxy_pass http://localhost:8091;
	}
}

1.3 頁面效果

在這裡插入圖片描述

2 Tomcat叢集部署

2.1 Windows中部署tomcat叢集

2.1.1 準備3臺tomcat

在這裡插入圖片描述

2.1.2 修改配置檔案

啟動3臺tomcat,修改對應的埠號 1.修改8005埠 在這裡插入圖片描述

2.修改8080埠 在這裡插入圖片描述

3.修改8009埠 在這裡插入圖片描述

2.1.3 專案釋出

將原有的ROOT檔案刪除,部署新的war包,之後重啟tomcat服務 在這裡插入圖片描述

2.2 基於Nginx實現負載均衡

2.2.1 輪詢策略

特點 根據配置檔案的順序,依次訪問不同的tomcat伺服器。

配置檔案:

#配置tomcat負載均衡  1.輪詢
upstream jt {
	server localhost:8091;
	server localhost:8092;
	server localhost:8093;
}

#後臺管理系統
server {
	listen		80;
	server_name  manage.jt.com;

	location / {
		proxy_pass http://jt;
	}
}

2.2.2 權重

特點 根據伺服器處理能力的不同,動態劃分請求,處理能力越高,所處理的請求越多。

配置檔案:

#配置tomcat負載均衡  1.輪詢  2.權重
upstream jt {
	server localhost:8091 weight=6;
	server localhost:8092 weight=3;
	server localhost:8093 weight=1;
}

2.2.3 IP_HASH

實際問題 採用叢集方式不能實現使用者的session共享,因為不同的tomcat之間是物理隔離,如何解決?

專業術語 Session黏著:指Session共享

解決方案 A:採用SessionId進行url重寫 優點:可以實現Session共享,Cookie禁用。 缺點:效率太低

B:使用Nginx中IP_HASH技術,能夠根據使用者的IP動態的繫結到一臺伺服器中,變相的實現Session共享。IP_HASH優先順序最高,配置後輪詢和權重不生效。 缺點: 1.如果伺服器宕機,使用者訪問受限。 2.使用IP_HASH導致負載不均。 3.安全性不好。

C:實現單點登入(SSO)

2.2.4 Nginx故障遷移

  1. 手動下線 server localhost:8091 weight=6 down;

  2. 備用機機制 server localhost:8093 weight=1 backup;

  3. 設定超時時間 proxy_connect_timeout 3; proxy_read_timeout 3; proxy_send_timeout 3;

  4. 健康監測 說明:在規定的週期內,使用者會通過健康監測,檢查當前的伺服器是否可用。 如果發現伺服器宕機,則在當前的週期內不會再將請求發往故障機,直到下個週期;故障機修復後,可以在下一個週期後繼續提供服務。 server localhost:8091 max_fails=1 fail_timeout=60s;

5.程式碼測試

#配置tomcat負載均衡  1.輪詢  2.權重  3.ip_hash方式
upstream jt {
	#ip_hash;		
	server localhost:8091 max_fails=1 fail_timeout=60s;
	server localhost:8092 max_fails=1 fail_timeout=60s;
	server localhost:8093 max_fails=1 fail_timeout=60s;
}

#後臺管理系統
server {
	listen		80;
	server_name  manage.jt.com;

	location / {
		proxy_pass http://jt;
		proxy_connect_timeout       3;  
		proxy_read_timeout          3;  
		proxy_send_timeout          3; 
	}
}

2.2.5 公司中伺服器部署步驟

  1. 根據本次部署的策略,將伺服器進行分類。
  2. 將需要部署的伺服器進行下線down。
  3. 將war包釋出到指定的tomcat伺服器中,之後進行測試,如果測試無誤將該伺服器上線即可。
  4. 之後依次上線其他的伺服器。

3 Linux中叢集部署

3.1 虛擬機器介紹

3.1.1 虛擬機器引數

記憶體:如果設定了指定的記憶體大小,那麼當虛擬機器啟動時,會從作業系統中割裂指定的記憶體大小。

3.1.2 網路模式

  1. 橋接模式:虛擬機器直接連線網路 特點:只要在區域網中的機器都可以訪問虛擬機器。

  2. NAT模式:在當前的網路環境中,依據虛擬機器的net8網絡卡,開闢了一塊全新的網路空間,該空間只能真實的宿主機訪問,其他人不能訪問虛擬機器。

192.168.126.1 代表windows真實計算機的IP地址 在這裡插入圖片描述

3.1.3 克隆虛擬機器

在這裡插入圖片描述

在這裡插入圖片描述

在這裡插入圖片描述

3.1.4 配置靜態IP

在這裡插入圖片描述

3.1.5 XShell安裝

說明 XShell是一種遠端連線Linux作業系統的工具。

  1. 虛擬機器連線 在這裡插入圖片描述

  2. 如果虛擬機器連線不通,需要動態修改IP獲取方式 在這裡插入圖片描述

之後禁用再啟動即可。

3.2 Linux介紹

特點: 1.開源和免費的 規範Unix—Linux 2.執行穩定 -2.1 佔用核心小 -2.2 全部的程式都是基於檔案的 3.Linux系統在服務端應用廣泛,安全性更好。

以下是主流的Linux系統: 在這裡插入圖片描述

3.2.2 Linux命令

命令 作用
cd 進入指定目錄下
ls 查詢當前資料夾下的檔案資訊
pwd 查詢當前檔案所在位置
mkdir 檔名稱 建立資料夾mkdir -p ee/ff/gg 建立多級資料夾
rm -rf 檔名稱 刪除檔案
vi 檔名稱 用vi開啟檔案I insert 表示插入資訊 Esc 退出當前狀態U 表示檔案撤銷操作:wq 儲存退出q!強制退出
vim 和vi命令類似,功能更加強大
cp 複製命令cp aa.txt cc/dd.txtcp aa.txt cc/ 以原名複製cp -r cc dd 複製整個資料夾
mv 移動命令mv bb.txt cc 將bb.txt 移到到cc資料夾中mv cc dd 移動資料夾mv dd aa 如果沒有aa資料夾時,那麼則修改檔案的名稱

3.3 Linux中安裝JDK

3.3.1 上傳安裝包

新建資料夾/usr/local/src/java/後,將JDK檔案上傳到java資料夾下。 在這裡插入圖片描述

在這裡插入圖片描述

3.3.2 解壓檔案

命令:tar -xvf jdk-8u51-linux-x64.tar.gz 確定jdk安裝目錄 在這裡插入圖片描述

3.3.3 修改環境變數

  1. 輸入命令:vim /etc/profile 開啟profile修改環境變數 在這裡插入圖片描述

2.輸入命令:source /etc/profile 手動重新整理環境變數 在這裡插入圖片描述 檢查jdk是否配置成功