nginx負載均衡實驗

實驗一、

實驗環境:

    1、一臺director主機。并部署nginx服務。

       內網iP192.168.1.1  外網iP10.1.64.1

    2、一臺后端服務器。并部署httpd服務。并創建兩個測試頁。

       Vim  /var/www/html/index.html

       Vim  /var/www/html/admin/index.html

實驗步驟:

    1、配置director主機,vim  /var/nginx/conf.d/default.conf

        location  /  {

           root  /usr/share/nginx/html;

           proxy_pass  http://192.168.1.2;

           index  index.html  index.htm;

                    }

        

        location  /admin/  {

            proxy_pass  http://192.168.1.2;

                    }

        注意:當proxy_pass http://192.168.1.2;時,用瀏覽器訪問10.1.64.1/admin/時,

          出現的頁面是定義在/var/www/html/admin/index.html中的頁面。

              proxy_pass http://192.168.1.2/;時,用瀏覽器訪問10.1.64.1/admin/時,

          將被代理服務器代理到后端,顯示/var/www/html/index.html中的頁面。

    2、將符合條件的URL代理至后端服務器。例如將圖片代理至后端。

          location  ~* \.(jpg|peg|gif|png)$  {

            proxy_pass  http://192.168.1.2;

                     }

        /var/www/html/放置一張圖片。

   blob.png

實驗二、

     proxy_set_header field value;

設定發往后端主機的請求報文的請求首部的值;Context: http, server, location

 通過實驗一的實驗結果查看后端服務器的httpdaccess.log日志,會發現請求結果全是

 director192.168.1.1請求的。

     blob.png

 

proxy_set_header模塊添加上后,可以在后端服務器的日志中記錄實際的報文發起者,

而不再記錄directorip

配置nginx服務。

    將該模塊加入到server

    proxy_set_header X-Real-IP $remote_addr;

          X-Real-IP $remote_addr:面向客戶端一側時,真正發出請求的客戶端的ip地址。于

                            將請求直接向后端代理。

配置httpdhttpd.conf配置文件

blob.png 

重啟服務,在瀏覽器中登錄網頁。查看后端服務器的access.log文件。

blob.png 

 

 

實驗三、定義proxy的緩存功能。

1、定義可用于proxy功能的緩存。只可定義于http。

   vim  /etc/nginx/nginx.conf

       proxy_cache_path /var/cache/nginx/proxy_cache levels=1:1:1 keys_zone=pxycache:20m max_size=1g;

       定義緩存路徑:/var/cache/nginx/proxy_cache

       定義緩存級別:level=1:1:1

       Max_size:目錄一共用多大的空間來緩存緩存項

       Keys_zone:

2、定義在需要調用緩存功能的配置段例如對圖片定義緩存功能。

   Vim default.conf

   location ~* \.(jpg|jpeg|gif|png)$ {

        proxy_pass http://192.168.1.2;

        proxy_cache pxycache;  表示調用此緩存功能。

        proxy_cache_key $request_uri;

        proxy_cache_valid 200 302 301 1h;  對不同的響應碼作緩存時長。

        proxy_cache_valid any 1m;  對其他響應碼作緩存時長,為1min。

    }

4、重啟服務。在瀏覽器中輸入10.2.64.1/logo.png第一次響應會有點慢,但是當第一次請

       求成功后,當第二次請求時就會很快了,因為在/var/cache/nginx/porxy_cache目錄中已

       經生成了緩存項,可以進入該目錄進行驗證。

實驗四、

定義服務器組

實驗環境:

    1、一臺director,并配置nginx服務。

      內網ip192.168.1.1  外網ip10.1.64.1

    2、兩臺后端服務器,分別部署httpd服務,并創建相應的測試頁。

       Server1:192.168.1.2    server2:192.168.1.3

實驗步驟:

    1、在nginxhttp中定義后端服務器組。

          upstream  webser  {

             Server 192.168.1.2;

             Server 192.168.1.3;

                   }

    2、在default.conf中定義后端引用;

          location  /  {

              proxy_pass  http://webser;

                      }

    3、當在瀏覽器中測試10.1.64.1時,后端服務器組會以輪詢的方式顯示頁面,實現了

       后端服務器的負載均衡,在生產環境中,服務器組中的頁面內容應該是一樣的。

blob.png 

    4、測試weight=number   

   upstream  webser  {

             Server 192.168.1.2  weight=2;

             Server 192.168.1.3;

                     }

   當在server 192.168.1.2上加上權重后,server1在被響應時,會根據權重的值來輪詢。

blob.png 

5backup

將服務器標記為“備用”,即所有服務器均不可用時此服務器才啟用;

        server2主機上部署nginx服務,提供測試頁,并將端口修改為8080,因為80端口

已經被httpd服務占用。

    upstream  webser  {

             Server 192.168.1.2  weight=2;

             Server 192.168.1.3;

             Server 192.168.1.38080  buckup;

                      }

    server1server2的主機正常工作時,server3是不會被啟用的。只有當server1

Server2都不可用時server3才會被啟用。

6、測試hash key

       在之前的兩臺后端主機上分別創建10個名稱相同內容不同的網頁,以判斷是來自主機

1還是主機2

    upstream  webser  {

                 Server 192.168.1.2  weight=2;

                 Server 192.168.1.3;

                 Server 192.168.1.38080  buckup;

                 hash  $request_uri;

                      }

 

     http://10.1.64.1/test{1..9}.html進行測試

    實現的效果就是:

        把對同一個url的請求,不管是來自哪臺主機,都將發往upstream server;

 

 

 

 

 

原創文章,作者:zzd,如若轉載,請注明出處:http://www.www58058.com/56221

(0)
zzdzzd
上一篇 2016-10-30 20:46
下一篇 2016-10-30 21:02

相關推薦

  • mysql主從架構/模式

    MySQL Replication: Master/Slave Master: write/read Slaves: read 為什么? 冗余:promte(提升為主),異地災備 人工 工具程序 負載均衡:轉移一部分“讀”請求; 支援安全的備份操作: … 主/從架構: 異步復制:master只需要完成自己的數據庫操作即可。至于slaves是否收到…

    2016-11-27
  • 正則表達式

         正則表達式是由一類特殊字符所編寫的模式,通過這些字符的使用,我們能檢索 查找文本中符合某些規則的內容。 正則表達式元字符的分類有:字符匹配,匹配次數,位置錨定,分組等。      字符匹配:      . : 匹配任意單個字符     &n…

    Linux干貨 2017-04-06
  • Linux進程與計劃任務

    Linux進程與計劃任務 linux進程及作業管理 進程 內核的功用:進程管理、文件系統、網絡功能、內存管理、驅動程序、安全功能等特權操作模式切換(理想狀態):70%CPU時間用戶模式+30%CPU時間內核模式進程(Process):是計算機中的程序關于某數據集合上的一次運行活動,是系統進行資源分配和調度的存在生命周期的基本單位,是操作系統結構的基礎。在早期…

    Linux干貨 2016-09-23
  • 網卡別名與bonding

    網絡接口配置-bonding Bonding簡介 Bonding 就是將多塊網卡綁定同一IP地址對外提供服務,可以實現高 可用或者負載均衡。然,直接給兩塊網卡設置同一IP地址 是不可能的。通過bonding,虛擬一塊網卡對外提供連接, 物理網卡的被修改為相同的MAC地址。 Bonding模式 Mode 0 (balance-rr) 輪轉(Round-robi…

    Linux干貨 2016-09-05
  • NoSQL之MongoDB

    分布式系統理論 1、 CAP: 分布式系統只能滿足其中兩個? Consistency :一致性 Availibility:可用性 Partitions Tolerance :分區容錯性 C,A : SQL 傳統的數據庫。 兩段機制。 C,P :悲觀枷鎖機制,分布式加鎖機制。加鎖機制與SQL不太一樣。 這里的C為最終一致性。 放棄C后的特例,既可以保證可用性,…

    2018-01-09
  • Haproxy+Keepalived+Varnish+LAMP+Memcacked+NFS 實現WordPress站點的動靜分離

    詳細說明,請點擊CSDN博客的連接地址:http://blog.csdn.net/yhy1271927580/article/details/70195158

    2017-04-16
欧美性久久久久