基于Nginx的負載均衡以及高可用簡單應用
一、負載均衡配置
1、Nginx負載均衡配置
前面配置好的Nginx,可以訪問之后,克隆4臺,統一配置為512M,因為我的電腦內存是4G的。一臺用來訪問,一臺用來做調度器(Director),兩臺web服務器(real server),Nginx前面已經介紹過了,故在此簡單介紹一下那臺Director的配置。
2、測試
1、定義好hosts文件,訪問www.daili.com(負載均衡器的地址)
3、現在把web2服務器的nginx關掉測試
看,我的web服務器壞一個也可以正常訪問,就是在配置的時候可以用一個共享文件庫,使得web集群的資源都一樣,用戶訪問頁面獲取的信息都一樣。
我再啟用web2,又可以看到web2了。
二、Nginx負載均衡核心組件介紹:upstrem模塊
1、upstream模塊
ngx_http_upstream_module模塊允許Nginx定義一組或者多組節點服務器組,可以通過proxypass代理方式把網站請求發送到實現定義好的upstream組的名字上。具體寫法:http://www_server_pools
2、權重,我們把web2的權重改成2試試
訪問出現出現web1和web2的比率是1:2
3、比較完整的upstream配置案例
upstream blog_server_pool { server 10.0.10.6:80 weight=1 max_fails=1 fail_timeout=10s } 含義: server 10.0.10.6:80 RS配置:可以是ip或域名,如果端口不寫,默認是80,如果是域名,要通過dns做負載均衡。 weight=1 權重 max_fails Nginx嘗試連接后端主機失敗的次數,這個數值是配合proxy_next_upstream、fastcgi_next_upstream和memcached_next_upstream這三個參數來使用的,當Nginx接受后端服務器返回這三個參數定義的狀態碼時,會將這個請求轉發給正常工作的后端服務器,例如404、502、503.Max_fails的默認值是1:企業場景下建議是2~3。京東是1次,藍汛10次,根據業務需求去配置。 backup 熱備配置(RS節點的高可用),當前面激活的RS都失敗后會自動啟用熱備RS。這標志著這個服務器作為備份服務器,如果主服務器全部壞了,就會向它轉發請求,注意,當負載調度算法為ip_hash時,后端服務器在負載均衡調度中的狀態就不能是weight和backup了。 fail_timeout=10s 在max_fails定義失敗次數后,距離下次檢查的間隔時間、默認是10s;如果max_fails是5,就檢查5次,如果5ci都是502,那么它就會根據fail_timeout的值,等待10s再去檢查一次。 down 標志著服務器永遠不可用,配合ip_hash使用。
4、Nginx代理Cache服務,可能要使用hash算法,此時如果主服務器壞了,就要通過設置down參數確??蛻舳擞脩舭凑债斍暗膆ash算法訪問。
upstream backend { ip_hash; server 192.168.1.123; server 192.168.1.124 down; }
5、Haproxy負載均衡器server的配置示例
server php_server_1 10.12.25.68:80 cookie 1 check inter 2000 rize 3 fall weight 2 server php_server_bak 10.12.25.79:80 cookie 3 check inter 1500 rise 3 fall 3 backup weight 權重 check 開啟對服務器的健康檢查 inter 設置連續兩次的健康檢查間隔時間,單位是毫秒,默認是2000 rise 指定多少次連續成功的健康檢查后,即可認定該服務器處于可用狀態 fall 指定多少次檢查不健康后,則認為服務器處于壞的 默認是3 maxconn 指定可被發送到該服務器的最大并發連接數 更加具體的可以參考官方文檔
6、upstream模塊調度算法
(1)rr:輪巡,默認調度算法,靜態
(2)wrr:權重輪巡,靜態
(3)ip_hash 靜態:每個請求按客戶端IP的hash結果分配,當新的請求到達時,先會將其客戶端IP通過哈希算法哈希出一個值,在隨后的客戶請求中,客戶IP的哈希值只要相同,就會分配到同一臺服務器,該調度算法可以解決動態網頁的session共享問題,但有時會導致分配不均。
(4)fair:動態調度算法 此算法根據后端服務器的響應時間來分配請求,響應時間短的優先分配,智能,要使用這種調度算法必須先下載upstream_fair。
upstream cwj_db { server 192.168.1.123; server 192.168.1.124; fair; }
(5)least_conn 動態 根據后端節點的連接數來決定分配情況,哪個機器少就分發給誰
(6)url_hash算法 與ip_hash類似,根據訪問URL的hash結果來分配請求,讓每個URL定向到同一個后端服務器,后端服務器為緩存服務器時效果顯著,如果需要使用這種調度算法,必須要安裝Nginx的hash模塊軟件包
三、Nginx負載均衡核心組件介紹:proxy_pass模塊
1、簡單實用案例
1)、將匹配URI為name的請求拋給http://172.0.0.1/remote/
location /name/ { proxy_pass http://127.0.0.1/remote/; }
2)、將匹配URI為some/path的請求拋給http://127.0.0.1
location /some/path { proxy_pass http://127.0.0.1; }
3)、將匹配URI為name的請求用指定的rewrite規則,然后拋給http://127.0.0.1
loaction /name/ { rewrite /name/ ([^/]+) /usersname=$1 break; proxy_pass http://127.0.0.1; }
2、模塊參數
通常配置完后,再最后加上proxysetheader Host $host;若后端有多個虛擬主機,它就可以識別代理的是哪個虛擬主機了,很關鍵。
原創文章,作者:N24_yezi,如若轉載,請注明出處:http://www.www58058.com/65267