nginx實現讀寫分離

nginx實現讀寫分離
html

      測試環境前端

             OS: rhel6nginx

             A服務器: 配置nginx實現負載均衡和方向代理功能web

             B服務器: 簡單的web服務器,沒作其餘配置,讀服務器apache

             C服務器: 簡單的web服務器,沒作其餘配置,寫服務器vim

       部署: A服務器實現前端負載均衡和方向代理功能,後端有兩臺web服務器,B服務器只進行讀操做,C服務器只進行寫操做,而B和C服務器之間經過rsync+inotify實現數據的同步這樣就簡單的實現了nginx的讀寫分離功能。後端

配置以前先來了解一下什麼是WebDAV??服務器

       WebDAV (Web-based Distributed Authoring and Versioning) 一種基於 HTTP1.1協議的通訊協議。它擴展了HTTP 1.1,在GET、POST、HEAD等幾個HTTP標準方法之外添加了一些新的方法,使應用程序可直接對Web Server直接讀寫,並支持寫文件鎖定(Locking)及解鎖(Unlock),還能夠支持文件的版本控制。負載均衡

       Web 分佈式創做和版本管理 (WebDAV) 擴展了 HTTP/1.1 協議,容許客戶端發佈、鎖定和管理 Web 上的資源。curl

1.在A服務器上配置負載均衡和方向代理功能

   # vim /etc/nginx/nginx.conf

proxy_cache_path /nginx/cache/first levels=1:2 keys_zone=first:20m max_size=1g;
####讀服務器組  B
upstream read {
      #ip_hash;
      server 192.168.20.121 weight=2 max_fails=2 fail_timeout=2;
      server 192.168.20.123 weight=2 max_fails=2 fail_timeout=2;
   }
####寫服務器組  A
upstream write {  
      #ip_hash;
      server 192.168.20.122 weight=2 max_fails=2 fail_timeout=2;
      server 192.168.20.124 weight=2 max_fails=2 fail_timeout=2;
      server 127.0.0.1:8080 backup;
   }

server {
      location / {
           root   html;
           index  index.html index.htm;
           proxy_cache first;
           proxy_cache_valid 200 10m;
           proxy_pass  http://read;
           if($request_method = "POST"){    ####在這裏判斷用戶是否執行的是寫操做
                      proxy_pass http://write;
           }
           proxy_set_header Host $host;
           proxy_set_header X-Real-IP $remote_addr;
      }
}

2.A服務器上從新啓動服務

   # service nginx restart

3.在B,C服務器上開啓httpd的WebDAV功能

   # vim /etc/httpd/conf/httpd.conf

        Dav on   ####在<Directory  "/var/www/html/">標籤裏添加

4.在B,C服務器上重啓httpd服務

   # service httpd retstart

5.在A服務器上用curl命令測試下是否能正常訪問B,C服務器上的web服務

   # curl  http://192.168.20.121 

6.用curl命令的T參數實現http協議中的put方法上傳文件 (A服務器)

   # curl  -T  /etc/issue  http://192.168.20.121  ###往讀服務器上傳文件會報405的錯誤,由於沒開啓WebDAV功能

   # curl  -T  /etc/issue  http://192.168.20.122  ###往寫服務器上傳文件會報403的錯誤,禁止訪問權限不夠

7.下面咱們給apache用戶受權

   # setfacl -m u:apache:rwx /var/www/html/

8.最後再測試下看是否能夠往寫服務器上傳文件

   # curl  -T  /etc/issue  http://192.168.20.122

9.驗證上傳是否成功

   # cd /var/www/html  

相關文章
相關標籤/搜索