Nginx負載均衡

基于Nginx的負載均衡以及高可用簡單應用

一、負載均衡配置

1、Nginx負載均衡配置

前面配置好的Nginx,可以訪問之后,克隆4臺,統一配置為512M,因為我的電腦內存是4G的。一臺用來訪問,一臺用來做調度器(Director),兩臺web服務器(real server),Nginx前面已經介紹過了,故在此簡單介紹一下那臺Director的配置。

Nginx負載均衡

2、測試

1、定義好hosts文件,訪問www.daili.com(負載均衡器的地址)

Nginx負載均衡

3、現在把web2服務器的nginx關掉測試

Nginx負載均衡

看,我的web服務器壞一個也可以正常訪問,就是在配置的時候可以用一個共享文件庫,使得web集群的資源都一樣,用戶訪問頁面獲取的信息都一樣。

我再啟用web2,又可以看到web2了。

二、Nginx負載均衡核心組件介紹:upstrem模塊

1、upstream模塊

ngx_http_upstream_module模塊允許Nginx定義一組或者多組節點服務器組,可以通過proxypass代理方式把網站請求發送到實現定義好的upstream組的名字上。具體寫法:http://www_server_pools

2、權重,我們把web2的權重改成2試試

Nginx負載均衡

訪問出現出現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;若后端有多個虛擬主機,它就可以識別代理的是哪個虛擬主機了,很關鍵。

13.jpg

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

(1)
N24_yeziN24_yezi
上一篇 2016-12-29
下一篇 2016-12-29

相關推薦

  • Shell腳本編程中作業

    一、作業: 1、1、編寫服務腳本/root/bin/testsrv.sh,完成如下要求 (1) 腳本可接受參數:start, stop, restart, status (2) 如果參數非此四者之一,提示使用格式后報錯退出 (3) 如是start:則創建/var/lock/subsys/SCRIPT_NAME, 并顯示“啟動成功” 考慮:如果事先已經啟動過一…

    Linux干貨 2016-08-24
  • VIM編輯器用法及練習

    VIM編輯器用法及練習 什么是vim? vim是從vi發展出來的一個文本編輯器。代碼補全、編譯及錯誤跳轉等方便編程的功能特別豐富,在程序員中被廣泛使用,和Emacs并列成為類Unix系統用戶最喜歡的文本編輯器。 Vim的第一個版本由布萊姆·米勒在1991年發布。最初的簡稱是Vi IMitation,隨著功能的不斷增加,正式名稱改成了Vi IMproved?,F…

    Linux干貨 2016-10-30
  • 雷人的程序注釋

    使用Google code search可以搜索到一些比較有趣的代碼注釋,呵呵。下面的這些程序注釋有搞笑的,也有粗口,看來寫程序本來也不是一件很枯燥的事,關鍵看你的心態如何了。讀到這些注釋的時候,只能想到一個詞,那就是“瘋狂的程序員”,哈哈。Have a Fun  ;-) 寫個程序時不忘表達自己的感情,以免以后忘了。 呵呵,看來自己也不是很自信。 …

    Linux干貨 2016-05-10
  • Linux基礎知識之選擇循環執行

    1.選擇執行:     a.單分支if語句:         if 判斷條件;then(此處必須有;和then  then可以單獨占一行)        &nb…

    Linux干貨 2016-08-18
  • 02Linux上終端的類型

    一、終端的概念 所謂終端就是在一個連接主機的端子上面接入鼠標、鍵盤、顯示器等所組成的一個組合。終端用于用戶與主機之間的交互。早期的時候,在大型主機上,想使用主機的用戶很多,但是主機卻只有一個,也不能實現人手一臺。于是為了讓一臺主機給多個用戶使用,便產生了多個終端和多個用戶,這樣每個用戶只要有一個終端變可以與主機交互了。 二、終端的種類 終端的類型有四類:物理…

    Linux干貨 2016-10-14
  • 20160804作業

    查出分區空間使用率的最大百分比值 查出用戶UID最大值的用戶名、UID及shell類型 查出/tmp的權限,以數字方式顯示 統計當前連接本機的每個遠程主機IP的連接數,并按從大到小排序 利用擴展正則表達式分別表示0-9、10-99、100-199、200-249、250-255        &nb…

    Linux干貨 2016-08-08
欧美性久久久久