LVS調(diào)度方案及NGINX模塊

一毫胜、簡述LVS調(diào)度方案及應(yīng)用場景

調(diào)度算法可分為靜態(tài)調(diào)度和動態(tài)調(diào)度

1、靜態(tài)調(diào)度即根據(jù)算法本身的結(jié)果來進(jìn)行調(diào)度.

1.1荐吉、輪詢調(diào)度算法(RR)口渔,輪詢算法適用于所有服務(wù)器的處理性能相近的應(yīng)用場景缺脉,因?yàn)檩喸兯惴ㄏ鄬唵危湔{(diào)度方式是不管服務(wù)器當(dāng)前的連接數(shù)和響應(yīng)速度如何的勤揩。因此當(dāng)后端服務(wù)器的處理性能殘次不齊陨亡,請求服務(wù)的時間變化較大時深员,輪詢算法很容易導(dǎo)致服務(wù)器間的負(fù)載不均衡。因此輪詢算法只適用于后端服務(wù)器性能相近遮糖,請求時間變化不大的場景使用欲账。

1.2芭概、加權(quán)輪詢調(diào)度算法(WRR)可以理解為輪詢算法的進(jìn)階版。通過設(shè)置權(quán)重來表示后端服務(wù)器的處理型男踢故,權(quán)重越大表示服務(wù)器能的處理能力越強(qiáng)殿较。但是當(dāng)請求時間變化很大時,加權(quán)輪詢算法依然會導(dǎo)致服務(wù)器間的負(fù)載不平滑劳闹。

1.3洽瞬、目標(biāo)地址哈希調(diào)度算法(DH)是指針對通過計(jì)算目前地址的散列(HASH)函數(shù)來將一個目標(biāo)IP地址映射到一臺服務(wù)器片任。DH算法首先根據(jù)請求的目標(biāo)Ip地址作為散列鍵(Hask key)蔬胯,從靜態(tài)分配的散列表中找出對應(yīng)的服務(wù)器氛濒。若該服務(wù)器是可用且未超載,則將請求發(fā)送到該服務(wù)器京景,否則返回為空骗奖。此調(diào)度算法可保證用戶訪問同一個應(yīng)用服務(wù)時执桌,請求均被送往同一個后端服務(wù)器。典型應(yīng)用場景為正向代理緩存場景中的負(fù)載均衡伴逸。

1.4膘壶、源地址散列調(diào)度算法(SH)是指根據(jù)請求的源Ip地址作為散列鍵(Hash key)颓芭,從靜態(tài)分配的散列表中找出其對應(yīng)的服務(wù)器亡问。若服務(wù)器是可能且未超載,否則將返回空万矾。SH算法可將來自于同一個IP地址的請求始終發(fā)往同一個后端服務(wù)器,從而實(shí)現(xiàn)會話綁定后添。

2遇西、動態(tài)調(diào)度算法即指結(jié)合算法及當(dāng)前每個后端服務(wù)器的負(fù)載狀態(tài)進(jìn)行計(jì)算調(diào)整選出最優(yōu)的后端服務(wù)器進(jìn)行分配負(fù)載.

2.1严嗜、最小連接調(diào)度算法(LC)是指把新的連接請求分配到當(dāng)前連接數(shù)最小的服務(wù)器漫玄。調(diào)度器會記錄各個服務(wù)器已建立連接的數(shù)目,當(dāng)一個請求被調(diào)度分配到一個后端服務(wù)器渗常,其連接數(shù)就加一皱碘;當(dāng)連接超時或終止時隐孽,其連接數(shù)減一菱阵。LC算法則會把新的連接請求到分分配到已建立連接數(shù)最小的服務(wù)器上,保證后端服務(wù)器褪贵,每一個都始終處于工作狀態(tài)抗俄。此算法適用于后端服務(wù)器性能差不多动雹,請求時間不一樣的情況下使用胰蝠。
2.2震蒋、加權(quán)最小連接調(diào)度算法(WLC)是在一個服務(wù)器性能差異較大的集群中躲庄,根據(jù)最小連接數(shù)及服務(wù)器的權(quán)重來分配新的連接請求噪窘。對比LC算法來說,WLC可優(yōu)化負(fù)載均衡的性能直砂,使得具有較高權(quán)重的服務(wù)器承受較大比例的活動連接負(fù)載静暂。
2.3谱秽、最小期望延遲調(diào)度算法(SED)是WLC算法的改進(jìn)版弯院,根據(jù)算法(active+1)*256/weight的結(jié)果,將請求分配給計(jì)算結(jié)果最小的服務(wù)器泪掀。
2.4听绳、從不排隊(duì)調(diào)度(NQ),增強(qiáng)改進(jìn)的sed算法异赫,即在sed算法結(jié)果之后增加了輪詢的機(jī)制椅挣。如果有臺real Server的連接數(shù)=0直接分配,不需要再進(jìn)行sed運(yùn)算,而是直接分配請求連接到指定的服務(wù)器塔拳。因此這種算法就會盡量不然請求出現(xiàn)排隊(duì)的情況鼠证,即避免了某個節(jié)點(diǎn)非常繁忙而其他節(jié)點(diǎn)相對空閑的情況。避免了權(quán)重小的節(jié)點(diǎn)不會出現(xiàn)沒有請求被調(diào)度的情況靠抑。
2.5、基于局部性的最少連接(LBLC),基于局部性的最少連接算法是針對請求報文的目標(biāo)IP地址的負(fù)載均衡調(diào)度颂碧,主要用于Cache集群系統(tǒng)荠列,因?yàn)镃ache集群中客戶請求報文的目標(biāo)IP地址是變化的,這里假設(shè)任何后端服務(wù)器都可以處理任何請求载城,算法的設(shè)計(jì)目標(biāo)在服務(wù)器的負(fù)載基本平衡的情況下肌似,將相同的目標(biāo)IP地址的請求調(diào)度到同一個臺服務(wù)器,來提高服務(wù)器的訪問局部性和主存Cache命中率诉瓦,從而調(diào)整整個集群系統(tǒng)的處理能力川队。
2.6力细、基于局部性的帶復(fù)制功能的最少連接(LBLCR),基于局部性的帶復(fù)制功能的最少連接調(diào)度算法也是針對目標(biāo)IP地址的負(fù)載均衡,該算法根據(jù)請求的目標(biāo)IP地址找出該目標(biāo)IP地 址對應(yīng)的服務(wù)器組固额,按“最小連接”原則從服務(wù)器組中選出一臺服務(wù)器眠蚂,若服務(wù)器沒有超載,將請求發(fā)送到該服務(wù)器对雪;若服務(wù)器超載河狐,則按“最小連接”原則從這個集群中選出一臺服務(wù)器,將該服務(wù)器加入到服務(wù)器組中瑟捣,將請求發(fā)送到該服務(wù)器馋艺。同時,當(dāng)該服務(wù)器組有一段時間沒有被修改迈套,將最忙的服務(wù)器從服務(wù)器組中刪除捐祠, 以降低復(fù)制的程度。


二桑李、詳細(xì)描述nginx模塊并舉例說明

1)踱蛀、 ngx_http_access_module模塊:

實(shí)現(xiàn)基于ip的訪問控制功能

- 26.allow address|CIDR|unix:|all
- 27.deny address|CIDR|unix:|all
    - http,server,location,limit_except

2)、 ngx_http_auth_basic_module模塊

實(shí)現(xiàn)基于用戶的訪問控制,使用basic機(jī)制進(jìn)行用戶認(rèn)證

- 28.auth_basic string|off
- 29.auth_basic_user_file file
    location /admin/ {
        alias /webapps/app1/data/;
        auth_basic "Admin Area";
        auth_basic_use_file /etc/nginx/.ngxpasswd;
    } 

注意: htpasswd命令由httpd-tools提供

3)贵白、 ngx_http_stub_status_module模塊

用于輸出nginx的基本狀態(tài)信息

Active connections:291
server accepts handled requests 
    16630948 16630948 31070465
Reading: 6 Writing: 179 Waiting: 106
參數(shù)選項(xiàng) 解釋說明
Active connections 活動狀態(tài)的連接數(shù)
accepts 已經(jīng)接受的客戶端請求的總數(shù)
handled 已經(jīng)處理完成的客戶端請求的總數(shù)
requests 客戶端發(fā)來的總的請求數(shù)
Reading 處于讀取客戶端請求報文首部的連接的連接數(shù)
Writing 處于向客戶端發(fā)送相應(yīng)報文過程中的連接數(shù)
Waiting 處于等待客戶端發(fā)出請求的空閑連接數(shù)
  • stub_status
    配置示例
    location /basic_status {
        syub_status;
    }

4)率拒、ngx_http_log_module模塊

- log_format name string...
    - string可以使用nginx核心模塊及其他模塊內(nèi)嵌的變量
    - 課外作業(yè): 為nginx定義使用類似于httpd的combined格式的訪問日志
- access_log path [format[buffer=size][gzip[=level]][flush=time][if=condition]]
    - access_log off
    - 訪問日志文件路徑,格式及相關(guān)的緩沖的配置
        - buffer=size
        - flush=time
- open_log_file_cache max=N [inactive=time][min_uses=N][valid=time]
    - open_log_file_cache off
    - 緩存各日志文件相關(guān)的元數(shù)據(jù)信息
    - max: 緩存的最大文件描述符數(shù)量
    - min_use: 在inactive指定的時長內(nèi)訪問大于等于此值方可被當(dāng)做活動項(xiàng)
    - inactive: 非活動時長
    - valid: 驗(yàn)證緩存中各緩存項(xiàng)是否為活動項(xiàng)的時間間隔

5)、 ngx_http_gzip_module模塊

- 1.gzip on|off
- 2.gzip_comp_level level
- 3.gzip_disable regex....
- 4.gzip_min_length length
    - 啟用壓縮功能的響應(yīng)報文大小闕值
- 5.gzip_buffers number size
    - 支持實(shí)現(xiàn)壓縮功能時為其配置的緩沖區(qū)數(shù)量及每個緩存區(qū)的大小
- 6.gzip_proxied off|expired|no-cache|private|no_last_modified|no_etag|auth|any...
    - nginx作為代理服務(wù)器接收到從被代理服務(wù)器發(fā)送的響應(yīng)報文后,在何種條件下啟用壓縮功能的
        - off: 對代理的請求不啟用
        - no-cache, no-store,private: 表示從被代理服務(wù)器收到的響應(yīng)報文首部的cache-control的值為此三者中任何一個,則啟用壓縮功能
- 7.gzip_types mime-type...
    - 壓縮過濾器,僅對此處設(shè)定的MIME類型的內(nèi)容啟用壓縮功能

6)禁荒、 ngx_http_ssl_module模塊

- 1.ssl on|off
    - 開啟或關(guān)閉ssl功能
- 2猬膨、ssl_certificate file
    - 當(dāng)前虛擬主機(jī)使用PEM格式的證書文件
- 3、ssl_certificate_key file
    - 當(dāng)前虛擬主機(jī)上與其證書匹配的私鑰文件
- 4呛伴、ssl_protocols [SSLv2][SSLv3][TLSv1][TLSv1.1][TLSv1.2]
    - 支持ssl協(xié)議版本,默認(rèn)為后三個
- 5勃痴、ssl_session_cache off|none|[builtin[:size]][shared:name:size]
    - builtin[:size]: 使用OpenSSL內(nèi)建的緩存,此緩存為每worker進(jìn)程私有
    - [shared:name:size]: 在各worker之間使用一個共享的緩存
- 6、ssl_session_timeout time
    - 客戶端一側(cè)的連接可以復(fù)用ssl session cache中緩存的ssl參數(shù)的有效時長

配置示例:

    server {
        listen 443 ssl;
        server_name www.magedu.com;
        root /vhosts/ssl/htdocs;
        ssl on;
        ssl_certificate /etc/nginx/ssl/nginx.crt;
        ssl_certificate_key /etc/nginx/ssl/nginx.key;
        ssl_session_cache shared:sslcache:20m;
    }   

7)热康、 ngx_http_rewrite_module模塊

將用戶請求的URI基于regex所描述的模式進(jìn)行檢查,而后完成替換
- 1沛申、rewrite regex replacement [flag]
    - 將用戶請求的URI基于regex所描述的模式進(jìn)行檢查,匹配到時將其替換為replacement指定的新的URI
    - 注意: 如果在同一級配置塊中存在多個rewrite規(guī)則,那么會自上而下逐個檢查;被某條件規(guī)則替換完成后,會重新一輪的替換檢查,因此,隱含有循環(huán)機(jī)制;[flag]所表示的標(biāo)志位用于控制此循環(huán)機(jī)制;
    - 如果replacement是以http://或https://開頭,則替換結(jié)果會直接以重向返回給客戶端
        - 301: 永久重定向
    - [flag]:
|參數(shù)選項(xiàng)|解釋說明| 
| :-------- | :--------|
|last|重寫完成后停止對當(dāng)前URI在當(dāng)前l(fā)ocation中后續(xù)的其他重寫操作,而后對新的URI啟動新一輪重寫檢查;提前重啟新一輪循環(huán)| 
|break|重寫完成后停止對當(dāng)前URI在當(dāng)前l(fā)ocation中后續(xù)的其他重寫操作,而后直接跳轉(zhuǎn)至重寫規(guī)則配置塊之后的其他配置;結(jié)束循環(huán)|
|redirect|重寫完成后以臨時重定向方式直接返回重寫后生成的新URI客戶端,由客戶端重新發(fā)起請求;不能以http://或https://開頭|
|permanent|重寫完成后以臨時重定向方式直接返回重寫后生成的新URI客戶端,由客戶端重新發(fā)起請求|
- 2、return
    - return conde [text];
    - return code URL;
    - return URL;
- 3姐军、rewrite_log on|off
    - 是否開啟重寫日志
- 4铁材、if(condition){...}
    - 引入一個新的配置上寫文;條件滿足時,執(zhí)行配置塊中的配置指令;server,location
    - condition:
| 比較操作符 | 解釋說明 | 
| :-------- | --------|
|==| 等于|
|!=|不等于|
|~|模式匹配,區(qū)分字符大小寫|
|~*|模式匹配,不區(qū)分字符大小寫|
|!~|模式不匹配,區(qū)分字符大小寫|
|!~*|模式不匹配,不區(qū)分字符大小寫| 

|文件及目錄存在性判斷|解釋說明| 
| :-------- | --------|
|-e|!-e|
|-f|!-f|
|-d|!-d|
|-x|!-x|
- 5、set $variable value
    - 用戶自定義變量

8)奕锌、 ngx_http_referer_module模塊

- 1衫贬、valid_referers none|blocked|server_names|string...;
    - 定義referer首部的合法可用值
        - none:請求報文首部沒有referer首部
        - blocked: 請求報文的referer首部沒有值
        - server_names: 參數(shù),其可以有值作為主機(jī)名或主機(jī)名模式
            - arbitrary_string:直接字符串,但可使用*作通配符
            - regular expreseeion:被指定的正則表達(dá)式模式匹配到的字符串;要使用~打頭,例如 ~.*\\.magedu\\.com;
  • 配置示例:
    valid_referers none block server_names *.magedu.com *.mageedu.com magedu.* mageedu.* ~\.magedu\.;
    if($invalid_referer){
        return 403;
    }
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市歇攻,隨后出現(xiàn)的幾起案子固惯,更是在濱河造成了極大的恐慌,老刑警劉巖缴守,帶你破解...
    沈念sama閱讀 217,657評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件葬毫,死亡現(xiàn)場離奇詭異镇辉,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)贴捡,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評論 3 394
  • 文/潘曉璐 我一進(jìn)店門忽肛,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人烂斋,你說我怎么就攤上這事屹逛。” “怎么了汛骂?”我有些...
    開封第一講書人閱讀 164,057評論 0 354
  • 文/不壞的土叔 我叫張陵罕模,是天一觀的道長。 經(jīng)常有香客問我帘瞭,道長淑掌,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,509評論 1 293
  • 正文 為了忘掉前任蝶念,我火速辦了婚禮抛腕,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘媒殉。我一直安慰自己担敌,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,562評論 6 392
  • 文/花漫 我一把揭開白布廷蓉。 她就那樣靜靜地躺著全封,像睡著了一般。 火紅的嫁衣襯著肌膚如雪苦酱。 梳的紋絲不亂的頭發(fā)上售貌,一...
    開封第一講書人閱讀 51,443評論 1 302
  • 那天给猾,我揣著相機(jī)與錄音疫萤,去河邊找鬼。 笑死敢伸,一個胖子當(dāng)著我的面吹牛扯饶,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播池颈,決...
    沈念sama閱讀 40,251評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼尾序,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了躯砰?” 一聲冷哼從身側(cè)響起每币,我...
    開封第一講書人閱讀 39,129評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎琢歇,沒想到半個月后兰怠,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體梦鉴,經(jīng)...
    沈念sama閱讀 45,561評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,779評論 3 335
  • 正文 我和宋清朗相戀三年揭保,在試婚紗的時候發(fā)現(xiàn)自己被綠了肥橙。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,902評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡秸侣,死狀恐怖存筏,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情味榛,我是刑警寧澤椭坚,帶...
    沈念sama閱讀 35,621評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站励负,受9級特大地震影響藕溅,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜继榆,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,220評論 3 328
  • 文/蒙蒙 一巾表、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧略吨,春花似錦集币、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,838評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至秽之,卻和暖如春当娱,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背考榨。 一陣腳步聲響...
    開封第一講書人閱讀 32,971評論 1 269
  • 我被黑心中介騙來泰國打工跨细, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人河质。 一個月前我還...
    沈念sama閱讀 48,025評論 2 370
  • 正文 我出身青樓冀惭,卻偏偏與公主長得像,于是被迫代替她去往敵國和親掀鹅。 傳聞我的和親對象是個殘疾皇子散休,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,843評論 2 354

推薦閱讀更多精彩內(nèi)容