Openshift自定義Router成倍提升集群性能

一個(gè)關(guān)于K8S的故事

為什么要自定義Router

  • Openshift的Router節(jié)點(diǎn)其實(shí)就是一個(gè)Haproxy容器應(yīng)用泉唁,這個(gè)已經(jīng)不是什么秘密了烛卧。我們平常使用時(shí)予颤,不需要關(guān)心Haproxy的配置踢步,因?yàn)樗哪J(rèn)配置完全滿足絕大多數(shù)情況的需求绞佩。
  • 但是它的默認(rèn)配置并沒(méi)有把最大的性能發(fā)揮出來(lái)悠咱,這時(shí)就需要我們對(duì)Haproxy的配置進(jìn)行自定義了蒸辆。
  • 如果你需要實(shí)現(xiàn)一些新的功能,比如說(shuō)將Mysql通過(guò)Router對(duì)外提供服務(wù)等

怎樣自定義Router

  • Router Pod根據(jù)haproxy-config模板創(chuàng)建haproxy.conf配置文件析既,默認(rèn)文件為/var/lib/haproxy/conf/haproxy-config.template
  • Router Haproxy鏡像啟動(dòng)時(shí)會(huì)根據(jù)環(huán)境變量TEMPLATE_FILE來(lái)選擇最終使用的模板文件
  • 向Router Pod中放入自定義的模板文件躬贡,并將它的路徑傳給環(huán)境變量TEMPLATE_FILE
  • 模板文件中的相關(guān)函數(shù)
函數(shù) 說(shuō)明
processEndpointsForAlias(alias ServiceAliasConfig, svc ServiceUnit, action string) []Endpoint 返回所有可用的endpoints,如果action為shuffle眼坏,那返回結(jié)果會(huì)打亂順序
env(variable, default …?string) string 獲取環(huán)境變量拂玻,如果沒(méi)有環(huán)境變量,使用第二個(gè)參數(shù)的值宰译,如果第二個(gè)參數(shù)沒(méi)設(shè)置檐蚜,返回空字符串
matchPattern(pattern, s string) bool 第一個(gè)參數(shù)是正則表達(dá)式,第二個(gè)參數(shù)為校驗(yàn)字符串沿侈,如果第二個(gè)參數(shù)滿足正則規(guī)則闯第,則返回True,否則返回False
isInteger(s string) bool 檢查字符串是否為數(shù)字格式
firstMatch(s string, allowedValues …?string) bool 將一個(gè)字符串在允許的字符串列表中從左到右匹配缀拭,返回最新匹配的字符串
matchValues(s string, allowedValues …?string) bool 如果字符串與給定的一組字符串中的字符串有匹配咳短,則返回True,否則返回False
generateRouteRegexp(hostname, path string, wildcard bool) string 生成一個(gè) 與主機(jī)名和路徑匹配的正則表達(dá)式
genCertificateHostName(hostname string, wildcard bool) string 為匹配證書(shū)生成主機(jī)名
isTrue(s string) bool 如果給定的字符串中有'true'則返回True,否則False

自定義Router配置實(shí)戰(zhàn)

  1. 導(dǎo)出Router默認(rèn)的模板文件
$ oc rsh router-1-pod -n default cat haproxy-config.template > haproxy-config.template
  1. 更改haproxy-config.template,添加nbthread支持 3.10以上版本已添加了該變量
...
global
  nbthread {{env "ROUTER_NBTHREAD" "1"}}
  cpu-map auto:1/1-{{env "ROUTER_NBTHREAD" "1"}} 1-{{env "ROUTER_NBTHREAD" "1"}}
...

環(huán)境變量蛛淋,3.11版本主要更新以下兩個(gè)
ROUTER_THREADS
ROUTER_MAX_CONNECTIONS 默認(rèn)值是20000

  1. 創(chuàng)建ConfigMap
$ oc create configmap customrouter --from-file=haproxy-config.template
  1. 掛載ConfigMap咙好,設(shè)置環(huán)境變量
#### *3.9* 版本
$ oc volumes dc/router --add --overwrite \
    --name=config-volume \
    --mount-path=/var/lib/haproxy/conf/custom \
    --source='{"configMap": { "name": "customrouter"}}'
$ oc set env dc/router \
    TEMPLATE_FILE=/var/lib/haproxy/conf/custom/haproxy-config.template

#### *3.11* 版本
$ oc set volumes dc/router --add --overwrite \
    --name=config-volume \
    --mount-path=/var/lib/haproxy/conf/custom \
    --source='{"configMap": { "name": "customrouter"}}'
$ oc set env dc/router \
    TEMPLATE_FILE=/var/lib/haproxy/conf/custom/haproxy-config.template
  1. 等待Router自動(dòng)重啟,使用新的配置模板
$ oc rsh router-2-pod -n default cat haproxy.conf

測(cè)試結(jié)果

通過(guò)設(shè)置環(huán)境變量ROUTER_NBTHREAD的值褐荷,使用Jmeter對(duì)應(yīng)用進(jìn)行壓力測(cè)試

ROUTER_NBTHREAD Avg(ms) Min(ms) Max(ms) Error TPS(/s)
1 194 0 8383 0 18322
2 133 0 15602 0 31160
4 127 0 7553 0 47049
8 138 0 14259 0 41995
16 163 0 10069 1(0%) 23979

從中可以看出脂新,不同的nbthread對(duì)Router容量的影響非常大耗式,當(dāng)nbthread=4時(shí)枝笨,容量達(dá)到默認(rèn)的nbthread=1的2倍谐丢。

參考文章:
Openshift 自定義Router的haproxy配置
Openshift 容器平臺(tái)負(fù)載測(cè)試
Haproxy多線程
Haproxy性能優(yōu)化

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市其监,隨后出現(xiàn)的幾起案子卒密,更是在濱河造成了極大的恐慌,老刑警劉巖棠赛,帶你破解...
    沈念sama閱讀 217,406評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件哮奇,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡睛约,警方通過(guò)查閱死者的電腦和手機(jī)鼎俘,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)辩涝,“玉大人贸伐,你說(shuō)我怎么就攤上這事≌” “怎么了捉邢?”我有些...
    開(kāi)封第一講書(shū)人閱讀 163,711評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵脯丝,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我伏伐,道長(zhǎng)宠进,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,380評(píng)論 1 293
  • 正文 為了忘掉前任藐翎,我火速辦了婚禮材蹬,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘吝镣。我一直安慰自己堤器,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,432評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布末贾。 她就那樣靜靜地躺著闸溃,像睡著了一般。 火紅的嫁衣襯著肌膚如雪拱撵。 梳的紋絲不亂的頭發(fā)上辉川,一...
    開(kāi)封第一講書(shū)人閱讀 51,301評(píng)論 1 301
  • 那天,我揣著相機(jī)與錄音裕膀,去河邊找鬼。 笑死勇哗,一個(gè)胖子當(dāng)著我的面吹牛昼扛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播欲诺,決...
    沈念sama閱讀 40,145評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼抄谐,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了扰法?” 一聲冷哼從身側(cè)響起蛹含,我...
    開(kāi)封第一講書(shū)人閱讀 39,008評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎塞颁,沒(méi)想到半個(gè)月后浦箱,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,443評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡祠锣,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,649評(píng)論 3 334
  • 正文 我和宋清朗相戀三年酷窥,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片伴网。...
    茶點(diǎn)故事閱讀 39,795評(píng)論 1 347
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡蓬推,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出澡腾,到底是詐尸還是另有隱情沸伏,我是刑警寧澤糕珊,帶...
    沈念sama閱讀 35,501評(píng)論 5 345
  • 正文 年R本政府宣布,位于F島的核電站毅糟,受9級(jí)特大地震影響红选,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜留特,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,119評(píng)論 3 328
  • 文/蒙蒙 一纠脾、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧蜕青,春花似錦苟蹈、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,731評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至贺喝,卻和暖如春菱鸥,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背躏鱼。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,865評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工氮采, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人染苛。 一個(gè)月前我還...
    沈念sama閱讀 47,899評(píng)論 2 370
  • 正文 我出身青樓鹊漠,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親茶行。 傳聞我的和親對(duì)象是個(gè)殘疾皇子躯概,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,724評(píng)論 2 354

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

  • Spring Web MVC Spring Web MVC 是包含在 Spring 框架中的 Web 框架,建立于...
    Hsinwong閱讀 22,396評(píng)論 1 92
  • 1. 組件版本和配置策略 組件版本: Kubernetes 1.10.4 Docker 18.03.1-ce Et...
    Anson前行閱讀 5,770評(píng)論 0 11
  • 一 血畔师,四周全是血娶靡,猩紅一片.我一直跑一直跑,希望可以逃出這片血海看锉,終于姿锭,我看到了我父親,“爹爹”我沖進(jìn)他的懷中伯铣,...
    Joy喬弋閱讀 956評(píng)論 16 29
  • 沒(méi)有入場(chǎng)券 場(chǎng)內(nèi)的一切歡樂(lè) 雀躍和悲哀 都與我無(wú)關(guān)了 置身世外 有什么不好 置身世外 有時(shí)好艾凯,有時(shí)不好 全情投入 ...
    江城詩(shī)苑閱讀 194評(píng)論 0 4
  • 有一天,月亮的牙突然疼起來(lái)了懂傀。他請(qǐng)來(lái)了一群星星牙醫(yī)趾诗,幫自己看看牙齒怎么了?一個(gè)星星牙醫(yī)說(shuō):“你一顆牙齒被蟲(chóng)蛀...
    孫麗若閱讀 2,335評(píng)論 0 0