keepalived+lvs+nginx+tomcat輪詢模式刷新很久才切換realserver
編輯:狂族晨曦 來(lái)源:系統(tǒng)運(yùn)維,經(jīng)驗(yàn)雜筆 日期:2016-09-08 閱讀: 7,877 次 9 條評(píng)論 » 百度已收錄
先森剛接觸運(yùn)維,當(dāng)然要學(xué)習(xí)部署各種集群環(huán)境,從最開(kāi)始的LVS+nginx搭建,到現(xiàn)在Keepalived+lvs+nginx+tomcat搭建,集群的搭建也開(kāi)始慢慢的得心應(yīng)手了。不過(guò),前進(jìn)的道路上總是荊棘遍布。
先森的LVS用的是DR模式下的RR輪詢算法,這個(gè)算法會(huì)實(shí)現(xiàn)的效果是每個(gè)訪問(wèn)會(huì)輪流分布到后端服務(wù)器1、2、3..上面去,后端服務(wù)器相當(dāng)于在和訪問(wèn)打車輪戰(zhàn)。

keepalived+lvs+nginx+tomcat拓?fù)鋱D
然而,先森環(huán)境部署好之后,要刷新很久之后,才換切換到另一個(gè)后端服務(wù)器,雖然這也是一定意義上的達(dá)到了目標(biāo),但心中總還是有個(gè)疙瘩。
那么為什么會(huì)出現(xiàn)這樣的問(wèn)題呢?
影響因素
經(jīng)過(guò)先森的測(cè)試,影響刷新輪詢的配置keepalived、Nginx、Tomcat分別有一個(gè),也就是一共有三個(gè)配置會(huì)影響到。
keepalived配置
首先,在keepalived的配置文件中,存在一個(gè)會(huì)話保持時(shí)間的配置。
vim /etc/keepalived/keepalived.conf persistence_timeout 50 #50秒為默認(rèn)值

會(huì)話保持時(shí)間
這里有個(gè)默認(rèn)為50秒的會(huì)話保持時(shí)間。如果設(shè)置了這一項(xiàng),那么久會(huì)等待50秒后才會(huì)切換realserver。
如果上面的這樣配置已經(jīng)刪除或注釋,但問(wèn)題依舊存在,那么一定就是Nginx和Tomcat的配置問(wèn)題了。
Nginx配置
編輯打開(kāi)到nginx的配置文件:
vim /usr/local/nginx/conf/nginx.conf
在http模塊下面就存在影響刷新輪詢的配置:

Nginx的配置
在nginx.conf中,有一項(xiàng)配置:
keepalive_timeout 65;
這是nginx默認(rèn)的連接超時(shí)時(shí)間,默認(rèn)為65秒。將數(shù)字改為0即可。或者把上圖中65那行注釋,0那行取消注釋就好。
Tomcat配置
同樣的,在Tomcat中也有相關(guān)配置。同樣編輯打開(kāi)Tomcat的配置文件:
vim /web/soft/tomcat/conf/server.xml
找到設(shè)置Http訪問(wèn)端口那一段:

Tomcat的配置
在server.xml中,設(shè)置外部訪問(wèn)端口那一段,有個(gè)connectionTimeout的設(shè)置,即連接超時(shí)時(shí)間:
connectionTimeout="20000"
這個(gè)值默認(rèn)是2000毫秒,將其改為10毫秒左右即可。不可以改為0,設(shè)置為0表示永不超時(shí)。
警告
總體來(lái)說(shuō),上面的三個(gè)配置都是修改的會(huì)話保持時(shí)間。但是會(huì)話保持時(shí)間是不能隨意修改的。
什么是會(huì)話保持呢?會(huì)話保持是指在負(fù)載均衡器上有一種機(jī)制,在作負(fù)載均衡的同時(shí),還保證同一用戶相關(guān)連的訪問(wèn)請(qǐng)求會(huì)被分配到同一臺(tái)服務(wù)器上。
會(huì)話保持有什么作用呢?
舉例說(shuō)明一下如果有一個(gè)用戶訪問(wèn)請(qǐng)求被分配到服務(wù)器A,并且在服務(wù)器A登錄了,并且在很短的時(shí)間,這個(gè)用戶又發(fā)出了一個(gè)請(qǐng)求,如果沒(méi)有會(huì)話保持功能的話,這個(gè)用戶的請(qǐng)求很有可能會(huì)被分配到服務(wù)器B去,這個(gè)時(shí)候在服務(wù)器B上是沒(méi)有登錄的,所以你要重新登錄,但是用戶并不知道自己的請(qǐng)求被分配到了哪里,用戶的感覺(jué)就是登錄了,怎么又要登錄,用戶體驗(yàn)很不好。
所以,切記的是,修改上面的三項(xiàng)會(huì)話保持時(shí)長(zhǎng)的配置僅僅只是用于環(huán)境測(cè)試,如果在生產(chǎn)環(huán)境,一定要按照需求設(shè)置。
歷史上的今天:
轉(zhuǎn)載請(qǐng)注明出處來(lái)自http://www.cnidcc.cn/keepalived_lvs_nginx_tomcat.html

川公網(wǎng)安備 51011202000104號(hào)
問(wèn)下樓主 評(píng)論插件叫什么
@管家婆: 評(píng)論沒(méi)有用插件,是WordPress原生的。
@狂族晨曦: 知道了 研究下WordPress
技術(shù)活。
好深?yuàn)W,博主邦邦噠,一定很多學(xué)妹追求!
送幾個(gè)66666666666666666666666
好復(fù)雜的集群
看起來(lái)好難啊
我記得tomcat里面keepalive_timeout參數(shù)才是決定輪詢建立新請(qǐng)求的間隔的,timeout只是決定同一請(qǐng)求在多久后斷開(kāi)連接。這個(gè)和apache相類似。