Nginx實現負載均衡

Nginx還有兩大功能:
1、Nginx可以實現反向代理啓用cache緩存:那Nginx如何實現反向代理,Nginx反向代理功能是通過http proxy模塊來實現的,默認已經編譯安裝上,
Nginx通過proxy_cache指令,把訪問遠端服務器內容緩存在本地磁盤中,從而加快網站訪問速度,降低服務器的負載
2、Nginx可以配置第三方模塊,實現upstream中對後端http server的健康狀態檢測

 

操作系統:redhat5.8

實驗:準備三臺服務器
Nginx eth0:172.16.0.22
Nginx eth1:192.168.100.1
Server1 eth0:192.168.100.2
Server2 eth0:192.168.100.3

實驗拓撲圖如下:

實驗目的:通過Nginx反向代理功能配置,實現把用戶的請求的資源緩存在本地服務器,可以實現加快網站訪問速度和降低服務器負載,並配置第三方模塊,
實現upstream中對後端http server的健康狀態檢測

目錄:
一、Nginx配置
二、Server1配置
三、Server2配置
四、測試

 


一、Nginx配置

  1. 1、解壓healthcheck_nginx_upstreams模塊  
  2. #unzip healthcheck_nginx_upstreams.zip  
  3. #mv cep21-healthcheck_nginx_upstreams-16d6ae7 nginx_health  
  4.  
  5. 2、對nginx打補丁  
  6. #tar xf nginx-1.0.14.tar.gz  
  7. #cd nginx-1.0.14  
  8. #patch -p1 < /root/nginx_health/nginx.patch  
  9.  
  10. 注意:編譯nginx,在執行configure時添加以下選項  
  11. --add-module=/root/nginx_health   #這是解壓healthcheck_nginx_upstreams.zip的目錄路徑  
  12.  
  13. 3、編譯安裝nginx  
  14. # ./configure \  
  15.   --prefix=/usr \  
  16.   --sbin-path=/usr/sbin/nginx \  
  17.   --conf-path=/etc/nginx/nginx.conf \  
  18.   --error-log-path=/var/log/nginx/error.log \  
  19.   --http-log-path=/var/log/nginx/access.log \  
  20.   --pid-path=/var/run/nginx/nginx.pid  \  
  21.   --lock-path=/var/lock/nginx.lock \  
  22.   --user=nginx \  
  23.   --group=nginx \  
  24.   --with-http_ssl_module \  
  25.   --with-http_flv_module \  
  26.   --with-http_stub_status_module \  
  27.   --with-http_gzip_static_module \  
  28.   --http-client-body-temp-path=/var/tmp/nginx/client/ \  
  29.   --http-proxy-temp-path=/var/tmp/nginx/proxy/ \  
  30.   --http-fastcgi-temp-path=/var/tmp/nginx/fcgi/ \  
  31.   --with-pcre \  
  32.   --add-module=/root/nginx_health  
  33. # make && make install  
  34.  
  35.  
  36. 4、修改nginx主配置文件  
  37. #mkdir -pv /data/nginx/cache    #創建nginx緩存存放目錄   
  38. #vim /etc/nginx/nginx.conf  
  39. 修改以下內容  
  40. proxy_cache_path  /data/nginx/cache  levels=1:2  keys_zone=servercache:10m #設置內存區域,名字可以自己取  
  41. #代理使用的緩存路徑                   #緩存目錄裏建立的層次,就是子目錄         
  42. inactive=24h    max_size=1g;  
  43. #24小時不超時    #緩存目錄大小  
  44.  
  45. upstream myserver {   
  46. #設置負載均衡指令,myserver名字可以自已取  
  47.         server 192.168.100.2 weight=4 max_fails=3 fail_timeout=30s;  #負載均衡的服務器  
  48.         server 192.168.100.3 weight=5 max_fails=3 fail_timeout=30s;  
  49.         healthcheck_enabled;      #啓用檢測試RS模塊  
  50.         healthcheck_delay 1000;   #對同一臺後端服務器兩次檢測之間的時間間隔,單位毫秒,默認爲1000  
  51.         healthcheck_timeout 1000; #進行一次健康檢測的超時時間,單位爲毫秒,默認值2000;  
  52.         healthcheck_failcount 1;  #對一臺後端服務器檢測成功或失敗多少次之後方纔確定其爲成功或失敗,並實現啓用或禁用此服務器  
  53.         healthcheck_expected 'ok';#檢查server文件裏內容  
  54.         healthcheck_send "GET /.test.html  HTTP/1.0";#檢測後端服務器的健康狀態所發送的檢測請求  
  55. }  
  56. server {  
  57.         listen       80;  
  58.         server_name  www.test.com;  
  59.         access_log  /var/log/nginx/www.access;  
  60.         error_log  /var/log/nginx/www.err;  
  61.           
  62.   location / {  
  63.             proxy_pass             http://myserver;   
  64.             proxy_set_header       Host $host;  
  65.             proxy_cache            servercache;   
  66.             proxy_cache_valid      200  1d;       
  67.             proxy_cache_use_stale  error timeout invalid_header updating   
  68.                                    http_500 http_502 http_503 http_504;  
  69.          }  
  70.   location /stat {  
  71.              healthcheck_status; #開啓server狀態監控  
  72.                       
  73.         }      

二、Server1配置

  1. 安裝httpd  
  2. #yum -y install httpd  
  3. #echo "<h1>Server1</h1>>/var/www/html/index.html         
  4. #echo "ok" >/var/www/html/.test.html           
  5. #service httpd start     

三、Server2配置

  1. 安裝httpd  
  2. #yum -y install httpd  
  3. #echo "<h1>Server2</h1>>/var/www/html/index.html         
  4. #echo "ok" >/var/www/html/.test.html           
  5. #service httpd start 

四、測試

請做好你的域名解析

1、測試負載均衡

提示:測試的時候請關閉proxy cache緩存

刷新一下

2、測試cache

提示:此時做下壓力測試,在server一臺服務器上放張圖片,然後在Nginx服務器上做下壓力測試,查看緩存目錄有沒有生成文件,然後對比一下速度,就知道緩存的效果了

3、查看server狀態

4、停止一臺server繼續查看一下

提示:把剛纔停止的server開啓,查看能否自動加載上

 

實驗出現的問題:  
問題:爲nginx打補丁以後,編譯nginx的時候出現make[1]: *** [objs/addon/nginx/ngx_http_healthcheck_module.o] Error 1
make[1]: Leaving directory `/root/nginx-1.2.2'
make: *** [build] Error 2
原因:nginx與healthcheck_nginx_upstreams版本不兼容,換成一個低的版本就可以了,我用的是nginx-1.0.14,當然也可以用最新版本來做
模塊下載地址:
https://github.com/cep21/healthcheck_nginx_upstreams;模塊名稱:ngx_http_healthcheck_module

瞭解更多nginx用法請參考官方網站:www.nginx.org

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