<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      DCOS 場景 訪問 l4lb vip 偶現(xiàn)超時(shí)

      環(huán)境信息

      centos7,linux 3.10,lvs 使用 nat 模式。client 容器化部署,使用veth連接到linux網(wǎng)橋

      業(yè)務(wù)背景

      redisclient 使用長連接訪問 vip,由lvs轉(zhuǎn)發(fā)到后端redis,偶現(xiàn)出現(xiàn)redisclient請(qǐng)求報(bào)文報(bào)文超時(shí),連接斷開

      分析進(jìn)展:

      • 問題出現(xiàn)時(shí),veth,bridge上抓包有報(bào)文,lvs轉(zhuǎn)發(fā)后接口沒抓到,filter表input鏈里添加規(guī)則,也能匹配到包。
      • 出現(xiàn)問題時(shí),客戶端因?yàn)闆]收到回復(fù)重傳了多次都沒轉(zhuǎn)發(fā)出去,最后因?yàn)榉?wù)器沒收到報(bào)文發(fā)送tcp keepalive,客戶端能收到,但是keepalive 回復(fù)報(bào)文也沒轉(zhuǎn)出去。
      • 跟同事交流說可能是gro的問題,我們?cè)O(shè)備開啟了gro,但是抓到的報(bào)文都是不超過200的小包(奇怪為啥gro沒生效),所以gro導(dǎo)致報(bào)文過大影響lvs轉(zhuǎn)發(fā)也說不過去。

      環(huán)境信息

      centos7,linux 3.10,lvs 使用 nat 模式。client 容器化部署,使用veth連接到linux網(wǎng)橋

      業(yè)務(wù)背景

      redisclient 使用長連接訪問 vip,由lvs轉(zhuǎn)發(fā)到后端redis,偶現(xiàn)出現(xiàn)redisclient請(qǐng)求報(bào)文報(bào)文超時(shí),連接斷開

      分析進(jìn)展:

      • 問題出現(xiàn)時(shí),veth,bridge上抓包有報(bào)文,lvs轉(zhuǎn)發(fā)后接口沒抓到,filter表input鏈里添加規(guī)則,也能匹配到包。
      • 出現(xiàn)問題時(shí),客戶端因?yàn)闆]收到回復(fù)重傳了多次都沒轉(zhuǎn)發(fā)出去,最后因?yàn)榉?wù)器沒收到報(bào)文發(fā)送tcp keepalive,客戶端能收到,但是keepalive 回復(fù)報(bào)文也沒轉(zhuǎn)出去。
      • 跟同事交流說可能是gro的問題,我們?cè)O(shè)備開啟了gro,但是抓到的報(bào)文都是不超過200的小包(奇怪為啥gro沒生效),所以gro導(dǎo)致報(bào)文過大影響lvs轉(zhuǎn)發(fā)也說不過去。

      原因是由于刪除和創(chuàng)建service的判斷邏輯有問題。

      分析如下:

      之前分析過lvs和overlay的配置沒有發(fā)現(xiàn)問題。后面發(fā)現(xiàn)系統(tǒng)日志中頻繁出現(xiàn)如下日志,即lvs刪除service,而且是指刪除。

      Jul 12 21:14:57 test-agent-3 kernel: IPVS: __ip_vs_del_service: enter
      Jul 12 21:14:57 test-agent-3 kernel: IPVS: __ip_vs_del_service: enter
      Jul 12 21:14:57 test-agent-3 kernel: IPVS: __ip_vs_del_service: enter
      Jul 12 21:14:57 test-agent-3 kernel: IPVS: __ip_vs_del_service: enter
      

      這些刪除lvs service是由dcos-navstar發(fā)起的,調(diào)高日志級(jí)別發(fā)現(xiàn),navstar刪除service后,又重新批量添加回來services,如下代碼所示,非常奇怪。

      apply_diff({ServicesToAdd, ServicesToRemove, ServicesToModify}, Namespace, State) ->
      lists:foreach(fun({VIP, _BEs}) -> remove_service(VIP, Namespace, State) end, ServicesToRemove),
      lists:foreach(fun({VIP, BEs}) -> add_service(VIP, BEs, Namespace, State) end, ServicesToAdd),
      

      再往前追溯修改的原因,發(fā)現(xiàn)是由于 vip 變動(dòng)導(dǎo)致的,即有使用內(nèi)部負(fù)載均衡的服務(wù)被刪除或者創(chuàng)建,或者配額有改變。

      push_vips(VIPs0) ->
      VIPs1 = ordsets:from_list(VIPs0),
      gen_statem:cast(?SERVER, {vips, VIPs1}).
      

      之后引發(fā)狀態(tài)機(jī)的變化,apply_diff 根據(jù)下面Diff變量得到刪除或者添加service,Diff 根據(jù)最新獲取的service列表及之前的緩存做對(duì)比得到的。
      LastConfigured 是之前的 service 緩存, VIPs1是最新得到 service 列表,兩個(gè)列表都做過排序。

      maintain(VIPs0, State = #state{ns = Namespaces, routes = Routes, last_configured_vips = LastConfigured}) ->
      VIPs1 = process_reachability(VIPs0, State),
      Diff = generate_diff(LastConfigured, VIPs1),
      NewRoutes = ordsets:from_list([VIP || {{_Proto, VIP, _Port}, _Backends} <- VIPs1]), 
      lager:debug("Last Configured: ~p, VIPs: ~p, NewRoutes ~p, Diff ~p", [LastConfigured, VIPs1, NewRoutes, Diff]),
      lists:foreach(fun(Namespace) -> 
      do_update_routes(NewRoutes, Routes, Namespace, State),
      apply_diff(Diff, Namespace, State) 
      end, Namespaces),
      State#state{last_configured_vips = VIPs1, last_received_vips = VIPs0, routes = NewRoutes}.
      

      假設(shè)有這樣的service列表,原有的service為[1,2,4,5], 最新的service列表為[1,2,3,4,5],有如下執(zhí)行的結(jié)果

      修復(fù)方案: 修改上面兩個(gè)函數(shù)判斷條件如下,即可。

      generate_diff(Lhs = [VIPLhs|_RestLhs], [VIPRhs|RestRhs], VIPsToAdd0, VIPsToRemove, Mutations) when VIPLhs > VIPRhs ->
      generate_diff(Lhs, RestRhs, [VIPRhs|VIPsToAdd0], VIPsToRemove, Mutations);
      %% To delete VIP
      generate_diff([VIPLhs|RestLhs], Rhs = [VIPRhs|_RestRhs], VIPsToAdd, VIPsToRemove0, Mutations) when VIPLhs < VIPRhs ->
      generate_diff(RestLhs, Rhs, VIPsToAdd, [VIPLhs|VIPsToRemove0], Mutations);

      修改 PR 鏈接 :

      https://github.com/dcos/navstar/pull/100
      https://github.com/dcos/dcos-net/pull/59
      jira問題跟蹤鏈接 :
      https://jira.mesosphere.com/browse/DCOS_OSS-3602

      posted on 2018-07-26 10:59  mainred  閱讀(710)  評(píng)論(0)    收藏  舉報(bào)

      主站蜘蛛池模板: 成人免费视频一区二区三区| 国产精品高清一区二区三区不卡 | 日本国产精品第一页久久 | 欧洲无码一区二区三区在线观看 | 天天拍夜夜添久久精品大| 久久久无码精品午夜| 男女啪啪高潮激烈免费版| 日韩亚洲国产激情一区二区| 无码视频伊人| 欧洲一区二区中文字幕| 国内精品久久毛片一区二区| 成年人尤物视频在线观看| 国产va免费精品观看| 日韩中文字幕精品人妻| 国产精品一线天在线播放| 狠狠综合久久综合88亚洲| 国产又粗又猛又爽又黄 | 99精品国产成人一区二区| 色伦专区97中文字幕| 日韩精品中文字一区二区| 国产无套护士在线观看| 金平| 吉川爱美一区二区三区视频 | 国产L精品国产亚洲区在线观看| 精品无码av无码免费专区| 国产伦人人人人人人性| 中文字幕国产精品二区| 日韩成人一区二区三区在线观看| 激情六月丁香婷婷四房播| 国产精品三级一区二区三区| 久久精品国产亚洲欧美| 亚洲精品日韩在线观看| 欧美成人精品在线| 不卡乱辈伦在线看中文字幕| 欧美日韩在线视频| 九九热免费公开视频在线| 丰满无码人妻热妇无码区| 一本大道久久香蕉成人网| 成人国产av精品免费网| 久在线视频播放免费视频| 亚洲产在线精品亚洲第一站一|