1. 程式人生 > >nginx反向代理負載均衡(輪詢權重IPHash)

nginx反向代理負載均衡(輪詢權重IPHash)

-s 圖片服務器 後臺管理 session AI 需要 new 守護進程 weight

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 協議下發行。其特點是占有內存少,並發能力強,

輕量級:

從代碼角度看

實現代碼時,代碼設計耦合性較低.

占用內存

占用內存特別的少

.例如spring-core大小不到1M,可以運行在小型機.

1.1.3 Nginx的實例化

命令:

start nginx 啟動

nginx -s reload 重啟命令

nginx -s stop 停止

說明:

當啟動nginx時需要依賴於nginx.exe文件.所以應該在exe的根目錄執行啟動命令.

1.1.4 Nginx多實例

說明:當啟動nginx時 一次啟動會有2nginx進程.一個是主進程,一個是守護進程.當主進程意外停止時,這時守護進程會自動的啟動一個主進程.保證服務正常啟動.所以在關閉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集群.搭建3tomcat服務器

目的:為了抗擊高並發.

2.1.2 項目打包

1Cleanproject ---- clean2.target目錄刪除 3.打包install,除非Install將首字母大寫(web.xml

將三個項目都install.之後形成jar包文件,改名為ROOT.war

2.1.3 Tomcat集群部署

分別修改3tomcat的端口號

規則:依次加1

2.1.4 Nginx實現負載均衡

  1. 配置負載均衡項

#nginx實現負載均衡

upstream jt {

server 127.0.0.1:8080;

server 127.0.0.1:8090;

server 127.0.0.1:8091;

}

  1. (linux)配置負載均衡項

#nginx實現負載均衡

upstream jt {

server 192.168.161.130:8080;

server 192.168.161.130:8090;

server 192.168.161.130:8091;

}

  1. 實現負載均衡

#添加後臺管理

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)