負載均衡(Nginx)使用教程

Nginx實例

//************說明*************//

此文章基於Nginx對多臺tomcat服務器進行負載均衡

//************準備工作*************//

nginx安裝包下載:http://nginx.org/en/download.html

nginx在線手冊:http://shouce.jb51.net/nginx/index.html

tomcat1:8081端口(本地安裝啓動)

tomcat2:8082端口(本地安裝啓動)

tomcat3:8080端口(局域網內安裝啓動)

//************Nginx安裝啓動*************//

本文采用的是較爲穩定的nginx-1.11.1版本

①:直接解壓到相關路徑(本文解壓在E盤下)

②:啓動主要有兩種方式,如下:

  1、直接雙擊nginx.exe啓動(注:正常是一閃而過)

  wKiom1dsljyCQPQIAABSVjJBHbE555.png-wh_50

  2、用命令提示符切換到nginx目錄下,輸入start nginx.exe或者start nginx啓動(一閃而過)

  wKiom1dsl33RAowYAAAT2vScftw843.png-wh_50

  以上2種方法用於啓動nginx服務,可通過進程管理查看是否有nginx進程(如:nginx.exe *32)或者通過瀏覽器輸入localhost查看頁面是否如下:

wKiom1dsmQmSWg--AAAvDG9Qrg4084.png-wh_50

瀏覽器出現如上頁面,則表示nginx啓動成功

//************Nginx常用命令*************//

start nginx :啓動nginx服務

nginx -s stop :停用或結束nginx服務

nginx -s reload :重啓nginx服務,一般用於配置文件修改後

//************tomcat服務準備*************//

wKioL1dsm-WBx5pCAADeVqGx448335.png-wh_50

3臺tomcat服務器啓動完成,(本機2臺,局域網內1臺)

//************Nginx配置文件修改*************//

nginx.conf(路徑:E:\nginx-1.11.1\conf\nginx.conf)

############負載均衡配置###########  
    upstream localhost {
    	server 192.168.1.103:8080;    
    	server 192.168.1.103:8081;
    	server 192.168.1.154:8080; 
    }
    location / {
        root   html;
        index  index.html index.htm;
        proxy_pass  http://localhost;  #localhost與負載均衡upstream配置名稱localhost 一致
    }

在對整個文件不做任何修改的前期下,配置upstream、proxy_pass這兩項即可完成負載均衡的配置。

然後命令提示符執行nginx -s reload,在瀏覽器輸入proxy_pass配置的地址 http://localhost/ 查看頁面,不斷刷新頁面查看服務器是否切換,效果如下:

wKioL1dspijSG4X3AAAvRPKzQQQ382.png-wh_50

端口爲:8080的服務器

wKiom1dspinQaU39AAJSKT37mlI509.png-wh_50

本機端口爲:8081的服務器

wKioL1dspinTisXZAABpULlEDso497.png-wh_50

局域網內端口爲:8080的服務器

//************nginx負載均衡的4種配置實例*************//

1、輪詢

輪詢即Round Robin,根據Nginx配置文件中的順序,依次把客戶端的Web請求分發到不同的後端服務器。
配置的例子如下:

http{ 
 upstream localhost{ 
   server 192.168.1.103:8080;    
   server 192.168.1.103:8081;
   server 192.168.1.154:8080; 
 } 
 .... 
 server{ 
   listen 80; 
   ... 
   location / { 
    proxy_pass http://localhost; 
   }  
 }

上面只有1個DNS入口被插入到upstream節,即sampleapp,同樣也在後面的proxy_pass節重新提到。

2、最少連接

Web請求會被轉發到連接數最少的服務器上。
配置的例子如下:

http{ 
  upstream localhost{ 
    least_conn; 
    server 192.168.1.103:8080;    
    server 192.168.1.103:8081;
    server 192.168.1.154:8080;  
  } 
  .... 
  server{ 
    listen 80; 
    ... 
    location / { 
     proxy_pass http://localhost; 
    }  
  }

上面的例子只是在upstream節添加了least_conn配置。其它的配置同輪詢配置。

3、IP地址哈希

前述的兩種負載均衡方案中,同一客戶端連續的Web請求可能會被分發到不同的後端服務器進行處理,因此如果涉及到會話Session,那麼會話會比較複雜。常見的是基於數據庫的會話持久化。要克服上面的難題,可以使用基於IP地址哈希的負載均衡方案。這樣的話,同一客戶端連續的Web請求都會被分發到同一服務器進行處理。
配置的例子如下:

http{ 
  upstream localhost{ 
    ip_hash; 
    server 192.168.1.103:8080;    
    server 192.168.1.103:8081;
    server 192.168.1.154:8080; 
  } 
  .... 
  server{ 
    listen 80; 
    ... 
    location / { 
     proxy_pass http://localhost; 
    }  
  }

上面的例子只是在upstream節添加了ip_hash配置。其它的配置同輪詢配置。

4、基於權重的負載均衡

基於權重的負載均衡即Weighted Load Balancing,這種方式下,我們可以配置Nginx把請求更多地分發到高配置的後端服務器上,把相對較少的請求分發到低配服務器。
配置的例子如下:

http{ 
  upstream localhost{    
    server 192.168.1.103:8080 weight=2;    
    server 192.168.1.103:8081 weight=5;
    server 192.168.1.154:8080;  
  } 
  .... 
  server{ 
    listen 80; 
    ... 
    location / { 
     proxy_pass http://localhost; 
    } 
 }

上面的例子在服務器地址和端口後weight=2的配置,這意味着,每接收到8個請求,前2個請求會被分發到第一個服務器,第3-7個請求會分發到第二個服務器,第8個請求會分發到第三臺服務器,其它的配置同輪詢配置。

還要說明一點,基於權重的負載均衡和基於IP地址哈希的負載均衡可以組合在一起使用。



注:文章多有不足之處,僅供參考!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章