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啓動(注:正常是一閃而過)
2、用命令提示符切換到nginx目錄下,輸入start nginx.exe或者start nginx啓動(一閃而過)
以上2種方法用於啓動nginx服務,可通過進程管理查看是否有nginx進程(如:nginx.exe *32)或者通過瀏覽器輸入localhost查看頁面是否如下:
瀏覽器出現如上頁面,則表示nginx啓動成功
//************Nginx常用命令*************//
start nginx :啓動nginx服務
nginx -s stop :停用或結束nginx服務
nginx -s reload :重啓nginx服務,一般用於配置文件修改後
//************tomcat服務準備*************//
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/ 查看頁面,不斷刷新頁面查看服務器是否切換,效果如下:
端口爲:8080的服務器
本機端口爲:8081的服務器
局域網內端口爲: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地址哈希的負載均衡可以組合在一起使用。
注:文章多有不足之處,僅供參考!