Nginx的反向調度功能

1.案例實現Nginx反向代理; 2.反向代理的理論知識拓展.html

一, 實驗Nginx的反向代理功能nginx

 使用Nginx實現Web反向代理功能,實現以下功能:web

  • 後端Web服務器兩臺,可使用httpd實現
  • Nginx採用輪詢的方式調用後端Web服務器
  • 兩臺Web服務器的權重要求設置爲不一樣的值
  • 最大失敗次數爲1,失敗超時時間爲30秒

實驗拓撲圖:算法

1. 部署實施後端Web服務器vim

   後端Web服務器能夠簡單使用yum方式安裝httpd實現Web服務,爲了能夠看出後端服務器的不一樣,能夠將兩臺後端服務器的首頁文檔內容設置爲不一樣的內容。後端

   1.1 部署後端Web1服務器安全

   web1] # yum -y install httpd服務器

   web1]# echo "192.168.2.100" > /var/www/html/index.html併發

   web1]# systemctl restart httpd負載均衡

   web1]# firewall-cmd --set-default-zone=trusted

   web1]# setenforce 0

   1.2 部署後端Web2服務器

   web2] # yum -y install httpd

   web2]# echo "192.168.2.100" > /var/www/html/index.html

   web2]# systemctl restart httpd

   web2]# firewall-cmd --set-default-zone=trusted

   web2]# setenforce 0

2. 配置Nginx服務器,添加服務器池,實現反向代理功能

    proxy]# vim /usr/local/nginx/conf/nginx.conf

    ...

    http{

    ...   

    upstream webserver {         #使用upstream定義後端服務器集羣,集羣名稱能夠任意定義,如webserver

                                server 192.168.2.100:80;      #使用server定義集羣中的具體服務器和端口

                                server 192.168.2.200:80;

                                  }

    ...

    server {

                listen        80;

                server_name localhost;

                location / {

                                proxy_pass http://webserver;       #經過proxy_pass將用戶的請求轉發給webserver集羣

                              }

             }

   proxy]# /usr/local/nginx/sbin/nginx -s reload   //從新加載配置

   client]# curl http://192.168.4.5     #屢次訪問代理服務器測試輪詢效果

   ...   //屢次訪問代理服務器

3. 配置upstream服務器集羣池屬性

    proxy]# vim /usr/local/nginx/conf/nginx.conf

    ...

    http {

    ...

    upstream webserver {

    server 192.168.2.100 weight=1 max_fails=1 fail_timeout=30;

    server 192.168.2.200 weight=2 max_fails=2 fail_timeout=30;

    server 192.168.2.101 down;

    }

   #weight設置服務器權重值,默認值爲1

   #max_fails設置最大失敗次數

   #fail_timeout設置失敗超時時間,單位爲秒

   #down標記服務器已關機,不參與集羣調度

   ...

   server {

               listen        80;

               server_name localhost;

               location / {

               proxy_pass http://webserver;      #調用集羣

               }

   }

   proxy]# /usr/local/nginx/sbin/nginx -s reload       //從新加載配置

   web1]# systemctl stop httpd        //關閉一臺後端服務器,如web1

   client]# curl http://192.168.4.5     //屢次訪問代理服務器測試輪詢效果

   ...     //屢次訪問代理服務器

   web1]# systemctl start httpd      //再次啓動後端服務器web1的httpd

   client]# curl http://192.168.4.5     //屢次訪問代理服務器測試輪詢效果

   ...   //屢次訪問代理服務器

4. 配置upstream服務器集羣的調度算法

   4.1 設置相同客戶端訪問相同Web服務器

   proxy ]# vim /usr/local/nginx/conf/nginx.conf

   ...

   http {

   ...

   upstream webserver {

               ip_hash;        #經過ip_hash設置調度規則爲:相同客戶端訪問相同服務器

               server 192.168.2.100 weight=1 max_fails=2 fail_timeout=10;

               server 192.168.2.200 weight=2 max_fails=2 fail_timeout=10;

   }

   ...

   server {

   listen        80;

   server_name www.tarena.com;

   location / {

                 proxy_pass http://webserver;

                 }

   }

  proxy]# /usr/local/nginx/sbin/nginx -s reload   //從新加載配置

  client]# curl http://192.168.4.5     #屢次訪問代理服務器測試輪詢效果

  ...   //屢次訪問代理服務器

二, Nginx反向代理的知識拓展

     Nginx與Apache同樣, 是一款輕量級的web服務器軟件,由俄羅斯人研發,它支持數以萬計的高併發訪問,而且穩定,開源,跨平臺.

     是一款高性能的http服務器和反向代理服務器,實現負載均衡是其做爲反向代理服務器的重用功能之一.

     例如,國內的jd網站,天天同時鏈接到網站的訪問人數已經爆表,單個服務器遠遠不能知足人民日益增加的購買慾望了,此時一個名詞應運而生:分佈式部署, 也就是經過部署多臺服務器來解決訪問人數限制的問題;

經過上述圖解可知,多個客戶端給服務器發送的請求,Nginx服務器接收到以後,按照必定的規則分發給了後端的業務處理服務器進行處理了。此時請求的來源明確的,可是請求具體由哪臺服務器處理就不明確了,Nginx扮演的就是一個反向代理角色。客戶端是無感知代理的存在的,反向代理對外都是透明的,訪問者並不知道本身訪問的是一個代理。

反向代理,"它代理的是服務端,代服務端接收請求",主要用於服務器集羣分佈式部署的狀況下,反向代理隱藏了服務器的信息。

反向代理的主要做用:
(1)保證內網的安全.咱們一般將反向代理做爲公網訪問地址,Web服務器位於內網
(2)負載均衡,經過反向代理服務器來優化網站的負載量

負載量:客戶端向代理服務器發送的請求數量,而請求數量按照必定的規則進行分發到不一樣的服務器處理的規則,就是一種均衡規則。

因此,將代理服務器接收到的請求,按照規則分發的過程,稱爲負載均衡;經常使用的調度算法有weight(輪詢),ip_hash等.

負載均衡在實際項目操做過程當中,有硬件負載均衡和軟件負載均衡兩種,硬件負載均衡也稱爲硬負載,如F5負載均衡,相對造價昂貴成本較高,可是數據的穩定性安全性等等有很是好的保障,如中國移動中國聯通這樣的公司纔會選擇硬負載進行操做;更多的公司考慮到成本緣由,會選擇使用軟件負載均衡,軟件負載均衡是利用現有的技術結合主機硬件實現的一種消息隊列分發機制。

結束.

相關文章
相關標籤/搜索