nginx做負載均衡的優(yōu)點:
1、工作在網(wǎng)絡的7層之上,可以針對http應用做一些分流的策略,比如針對域名、目錄結構,它的正則規(guī)則比haproxy更為強大和靈活,這也是它目前廣泛流行的主要原因之一,nginx單憑這點可利用的場合就遠多于lvs了
2、nginx對網(wǎng)絡穩(wěn)定性的依賴非常小,理論上能ping通就就能進行負載功能,這個也是它的優(yōu)勢之一;相反lvs對網(wǎng)絡穩(wěn)定性依賴比較大,這點本人深有體會
3、nginx安裝和配置比較簡單,測試起來比較方便,它基本能把錯誤用日志打印出來。lvs的配置、測試就要花比較長的時間了,lvs對網(wǎng)絡依賴比較大
4、可以承擔高負載壓力且穩(wěn)定,在硬件不差的情況下一般能支撐幾萬次的并發(fā)量,負載度比lvs相對小些
注意事項:
1、不同安裝方法nginx的配置文件位置不一樣
2、upstream如果使用ip_hash方式,則每個請求按訪問ip的hash結果分配,這樣每個訪客固定訪問一個后端服務器,可以解決session的問題
環(huán)境:
系統(tǒng):centos6.6
nginx ip:192.168.20.103
web1 ip:192.168.20.193
web2 ip:192.168.20.194
一、安裝nginx
兩種方法,我用的是第1種
第1種 yum安裝,需安裝第三方y(tǒng)um源,因為nginx默認不在centos的yum源中 所以需更新
yum?install?wget?#安裝下載工具 wget?http://www.atomicorp.com/installers/atomic?#下載 sh?./atomic?#安裝 yum?check-update?#更新yum源?有的需要更新幾次?才有nginx最新版本?否則是老版本nginx yum?remove?httpd*?php*?#刪除系統(tǒng)自帶的軟件包?也可加mysql*前提備份數(shù)據(jù)庫 yum?install?nginx?#安裝nginx根據(jù)提示輸入y進行安裝 chkconfig?nginx?on?#設置nginx開機啟動 service?nginx?start?#啟動nginx?重啟?restart
第2種 編譯安裝
wget?http://nginx.org/download/nginx-1.7.8.tar.gz tar?-zxvf?nginx-1.7.8.tar.gz cd?nginx-1.7.8 ./configure make?&&?make?install
二、修改配置文件
nginx 的 upstream默認是以輪詢的方式實現(xiàn)負載均衡,這種方式中,每個請求按時間順序逐一分配到不同的后端服務器,如果后端服務器down掉,能自動剔除。
另外一種方式是ip_hash:每個請求按訪問ip的hash結果分配,這樣每個訪客固定訪問一個后端服務器,可以解決session的問題
修改 /etc/nginx/nginx.conf 增加
#負載均衡配置 upstream?backend?{ #ip_hash; server?192.168.20.193; server?192.168.20.194; }
修改 /etc/nginx/conf.d/default.conf
location?/?{ #設置主機頭和客戶端真實地址,以便服務器獲取客戶端真實ip ????proxy_set_header?host?$host; ????proxy_set_header?x-real-ip?$remote_addr; ????proxy_set_header?x-forwarded-for?$proxy_add_x_forwarded_for; ????#禁用緩存 ????proxy_buffering?off; ????#反向代理的地址 ????proxy_pass?http://backend; ????root??/usr/share/nginx/html; ????index?index.html?index.htm; ????#?example ????#modsecurityenabled?on; ????#modsecurityconfig?/etc/nginx/modsecurity.conf; }
三、測試
第一次訪問轉發(fā)到193,因為 upstream默認是輪詢,第二次則轉發(fā)到了194