nginx反向代理負載均衡(輪詢權重IPHash)
1 Nginx反向代理
1.1 實現圖片回顯
1.1.1 反向代理
說明:當用戶發出image.jt.com/2018/1.jpg時,首先將請求發往Nginx.經過Nginx內部配置自動進行路徑的切換.E:jt-upload/2018/1.jpg並且訪問切換後的路徑.將返回的結果再次返回給瀏覽器.這時瀏覽器可以進行正常的展現
1.1.2 Nginx介紹
Nginx是一款輕量級的Web 服務器/反向代理服務器及電子郵件(IMAP/POP3)代理服務器,並在一個BSD-like 協議下發行。其特點是占有內存少,並發能力強,
輕量級:
從代碼角度看
實現代碼時,代碼設計耦合性較低.
占用內存
占用內存特別的少
1.1.3 Nginx的實例化
命令:
start nginx 啟動
nginx -s reload 重啟命令
nginx -s stop 停止
說明:
當啟動nginx時需要依賴於nginx.exe文件.所以應該在exe的根目錄執行啟動命令.
1.1.4 Nginx多實例
說明:當啟動nginx時 一次啟動會有2個nginx進程.一個是主進程,一個是守護進程.當主進程意外停止時,這時守護進程會自動的啟動一個主進程.保證服務正常啟動.所以在關閉nginx時先關閉守護進程之後再關閉主進程.
1.1.5 Nginx reload命令作用
當Nginx啟動時,如果配置文件出錯了,Nginx實例將不能正常啟動.這時可以通過Nginx -s reload 查詢報錯信息,方便用戶進行修改.
1.1.6 Nginx的配置文件
說明:
Server表示服務,在Nginx中可以配置很多項服務.
Listen表示端口監聽:80.目的就是為了讓nginx起作用.
server_name 表示服務的名稱.瀏覽器中訪問的具體路徑.
Location 表示當Nginx成功攔截請求後做的處理.
root 表示轉發到文件夾中.這是一個關鍵字 不要隨便修改.
Index 默認訪問路徑
server {
listen 80;
server_name localhost;
location / {
root html;
index index.html index.htm;
}
1.1.7 定義圖片服務器
#配置圖片服務器
server {
listen 80;
server_name image.jt.com;
location / {
root E:\jt-upload;
}
}
1.1.8 修改Host文件
1.1.9 上傳圖片出現問題檢測
1.檢測虛擬的url是否正確
2.檢測image.jt.com與虛擬路徑是否一致
3.Nginx重啟是否報錯
4.檢測Nginx.conf文件
1.1.10 為什麽要改host?
說明:
只有修改了host文件,當瀏覽器發送image.jt.com時,才會將請求發往本地.之後Nginx才能實現反向代理的過程
1.2 實現後臺跳轉
1.2.1 需求
當用戶輸入manage.jt.com時自動的跳轉到jt後臺服務器中.127.0.0.1:8091
1.2.2 添加後臺的Host文件
作用:能夠將用戶的連接發往本機
127.0.0.1 manage.jt.com
1.2.3 配置nginx實現後臺轉向
#添加後臺管理
server {
listen 80;
server_name manage.jt.com;
location / {
proxy_pass http://127.0.0.1:8091;
}
}
1.2.4 Nginx配置請求頭
將以下代碼添加到nginx.conf文件的server_name下
#添加京淘後臺管理
server {
listen 80;
server_name manage.jt.com;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
location / {
proxy_pass http://127.0.0.1:8091;
}
}
2 Nginx的負載均衡
2.1 後臺服務器
2.1.1 Tomcat集群部署
說明:通過京淘後臺項目搭建tomcat集群.搭建3臺tomcat服務器
目的:為了抗擊高並發.
2.1.2 項目打包
1.Clean(project ---- clean) 2.將target目錄刪除 3.再打包(install),除非Install將首字母大寫(web.xml)
將三個項目都install.之後形成jar包文件,改名為ROOT.war
2.1.3 Tomcat集群部署
分別修改3臺tomcat的端口號
規則:依次加1
2.1.4 Nginx實現負載均衡
- 配置負載均衡項
#nginx實現負載均衡
upstream jt {
server 127.0.0.1:8080;
server 127.0.0.1:8090;
server 127.0.0.1:8091;
}
- (linux版)配置負載均衡項
#nginx實現負載均衡
upstream jt {
server 192.168.161.130:8080;
server 192.168.161.130:8090;
server 192.168.161.130:8091;
}
- 實現負載均衡
#添加後臺管理
server {
listen 80;
server_name manage.jt.com;
location / {
proxy_pass http://jt;
}
}
說明:nginx中默認的訪問方式是輪詢的方式.1-3依次執行.
2.2 負載均衡的方式
2.2.1 輪詢
說明:因為在公司中,服務器的價格和性能是不一樣的.一般數據庫服務器是最好的.一般不會都采用性能最優的服務器因為價格太貴.一般公司都是好壞都有.
2.2.2 權重(重點掌握)
說明:盡可能的讓性能優良的服務器處理更多的請求.
#nginx實現負載均衡 默認都是輪詢 采用權重的方式數值越大越容易被訪問
upstream jt {
server 127.0.0.1:8080 weight=6;
server 127.0.0.1:8090 weight=1;
server 127.0.0.1:8091 weight=3;
}
2.2.3 IP_HASH
說明:
根據用戶的訪問IP地址,經過內部HASH計算會指定一臺服務器綁定.那麽以後該用戶訪問項目時,都會訪問指定的那臺服務器.
例子:例如本機啟動了IP_HASH則只會訪問8080服務器
作用:一般企業如果實現低級的Session共享則使用IP_HASH.
問題:容易產生Session黏著問題,所以一般不用Ip_hash
#nginx實現負載均衡 默認都是輪詢 采用權重的方式數值越大越容易被訪問
#如果在配置服務器時配置ip_hash 則會自動按照IP進行綁定,其他配置將不起作用
upstream jt {
ip_hash;
server 127.0.0.1:8080 weight=6;
server 127.0.0.1:8090 weight=1;
server 127.0.0.1:8091 weight=3;
}
2.2.4 備用機機制
說明:
如果當前的服務器都處於忙碌狀態,沒有時間響應新的請求,這時如果配置了備用機.則備用機會承擔一部分壓力.如果主服務器壓力減小,可以正常處理用戶請求.則備用機處於等待狀態.
#nginx實現負載均衡 默認都是輪詢 采用權重的方式數值越大越容易被訪問
#如果在配置服務器時配置ip_hash 則會自動按照IP進行綁定,其他配置將不起作用
#ip_hash;
upstream jt {
server 127.0.0.1:8080 weight=6;
server 127.0.0.1:8090 weight=1 backup;
server 127.0.0.1:8091 weight=3;
}
2.2.5 上線部署
上線的步驟:
1.先修改nginx配置文件 讓需要上線的服務器down掉
2.應該將需要上線的服務停止
3.之後將war包發布.
4.啟動服務器
5.將服務器還原回nginx中(將down去掉)
6.重啟nginx即可
upstream jt {
server 127.0.0.1:8080 weight=6;
server 127.0.0.1:8090 weight=1 backup;
server 127.0.0.1:8091 weight=3 down;
}
3 後臺項目Linux部署
3.1 VMware的使用
3.1.1 使用VMware介紹
說明:
VMware是一款虛擬化技術的產品.可以在window的系統中通過沒有配置實現Linux系統的運行.
網卡:
VMnet1:負責橋接模式的網絡配置
VMnew8:負責nat模式的網絡配置
註意:一般情況下不要隨意的修改.
鏈接模
nginx反向代理負載均衡(輪詢權重IPHash)