成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

docker swarm mode 下容器重啟IP引發(fā)的 CLOSE_WAIT 問(wèn)題

BlackHole1 / 3522人閱讀

摘要:?jiǎn)栴}問(wèn)題簡(jiǎn)述如下圖后端寫入的日志丟失并且無(wú)報(bào)錯(cuò)因?yàn)椴恢С謺r(shí)序圖把時(shí)序圖代碼嵌入在代碼里問(wèn)題定位過(guò)程為什么卡在看狀態(tài)轉(zhuǎn)換圖可以看到收到了一直沒(méi)有一直卡在和實(shí)際的代碼是吻合的那么為什么在引發(fā)后發(fā)消息仍然不報(bào)錯(cuò)呢因?yàn)閰f(xié)議允許在收到后繼續(xù)

問(wèn)題 問(wèn)題簡(jiǎn)述

如下圖. server docker restart后, client端寫入的日志丟失, 并且無(wú)報(bào)錯(cuò).
因?yàn)椴恢С謺r(shí)序圖, 把時(shí)序圖代碼嵌入在代碼里.

?```sequence
client->server: log_data
client->server: log_data
server->server: docker restart
server->client: fin
client->server: log_data loss without error
?```
tcp state diagram

問(wèn)題定位過(guò)程 為什么卡在CLOSE_WAIT.

看tcp狀態(tài)轉(zhuǎn)換圖, 可以看到client收到了fin, 一直沒(méi)有recv, 一直卡在CLOSE_WAIT. 和實(shí)際的代碼是吻合的.
那么, 為什么在server docker restart 引發(fā)CLOSE_WAIT后, client發(fā)消息仍然不報(bào)錯(cuò)呢?
因?yàn)?

tcp協(xié)議允許client在收到fin后, 繼續(xù)發(fā)送消息.

server 在docker restart后 ip 改變, client還是往原來(lái)的ip發(fā)送消息, 沒(méi)有主機(jī)通知client rst, 導(dǎo)致消息在系統(tǒng)buffer里積壓.

積壓信息如下:

root@9eeaefa7fe57:/# netstat -nap | grep 27017 | grep 10.0.0
tcp        1  402 10.0.0.186:62281        10.0.0.16:27017         CLOSE_WAIT  4308/server
root@9eeaefa7fe57:/# netstat -nap | grep 27017 | grep 10.0.0
tcp        1  70125 10.0.0.186:62281        10.0.0.16:27017         CLOSE_WAIT  4308/server

此時(shí), 在elixir socket接口層面來(lái)看, 不管socket的狀態(tài), 還是發(fā)送, 都是ok的.

iex(client@client.)25> socket |> :inet.port
{:ok, 57395}
iex(client@client.)26> socket |> :gen_tcp.send("aaa")
:ok

如果主動(dòng)close, 則會(huì)進(jìn)入LAST_ACK狀態(tài)

iex(client@client.)27> socket |> :gen_tcp.close()    
:ok
root@9eeaefa7fe57:/# netstat -nap | grep 27017 | grep 10.0.0
tcp        1  70126 10.0.0.186:62281        10.0.0.16:27017         LAST_ACK    -   
CLOSE_WAIT的恢復(fù)

如果代碼還是只發(fā)不收. 是檢測(cè)不到CLOSE_WAIT的. 顯然, 應(yīng)用層心跳是一個(gè)解決方案. 那么, 不使用心跳, 只發(fā)不收的情況下, 什么時(shí)候才能檢測(cè)到錯(cuò)誤呢?

send buffer 滿

tcp keepalive, 默認(rèn)情況下需要2小時(shí)才能檢測(cè)到連接錯(cuò)誤. 見(jiàn)linux keepalive探測(cè)對(duì)應(yīng)用層socket api的影響

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/27697.html

相關(guān)文章

  • 基于 Docker 1.12 Swarm 集群管理開(kāi)發(fā)實(shí)踐

    摘要:由于沒(méi)有了中心化的負(fù)載均衡器,集群不會(huì)因某臺(tái)機(jī)器異常而導(dǎo)致整個(gè)服務(wù)對(duì)外不可用,很好的避免了單點(diǎn)問(wèn)題,同時(shí)也帶了可擴(kuò)展性。 Mesos/Marathon 折騰久了,我們一直希望有機(jī)會(huì)深入到 Swarm 內(nèi)部一探究竟。 另外, Mesos 這一套東西雖然是久經(jīng)企業(yè)級(jí)考驗(yàn)的, 但是安裝、部署和使用相對(duì)復(fù)雜,上手有門檻。同時(shí),在今年的 DockerCon 上,內(nèi)置了Swarm 功能的 Dock...

    My_Oh_My 評(píng)論0 收藏0
  • 數(shù)人云工程師手記 | 新手快速入門Docker最新版管理工具

    摘要:在之前公眾號(hào)的數(shù)人云工程師手記基于的集群管理開(kāi)發(fā)實(shí)踐對(duì)的服務(wù)發(fā)現(xiàn)及負(fù)載均衡有詳細(xì)的介紹。服務(wù)名稱為服務(wù)命名,必須為英文或數(shù)字。 本文是數(shù)人云9月22日線上微信群分享的文章實(shí)錄。數(shù)人云容器管理面板Crane開(kāi)源以來(lái),很多小伙伴對(duì)它還不是非常了解,數(shù)人云工程師金鑫從Crane技術(shù)背景、環(huán)境準(zhǔn)備和使用步驟等方面為大家做了詳細(xì)的介紹,并整理大家常見(jiàn)的問(wèn)題逐一進(jìn)行了解答。 引言 Docker1....

    Tangpj 評(píng)論0 收藏0
  • Docker Swarm在生產(chǎn)環(huán)境中進(jìn)階指南

    摘要:應(yīng)該如何解決本文將給出若干提示,如何在生產(chǎn)環(huán)境中使用。路由匹配服務(wù)發(fā)現(xiàn)負(fù)載均衡跨容器通訊非??煽?。在單個(gè)端口上運(yùn)行一個(gè)服務(wù),節(jié)點(diǎn)的任意主機(jī)都可以訪問(wèn),負(fù)載均衡完全在后臺(tái)實(shí)現(xiàn)。 上周數(shù)人云給大家分享了——《你可能需要的關(guān)于Docker Swarm的經(jīng)驗(yàn)分享》今天給大家?guī)?lái)這位作者大大的后續(xù)文章——《Docker Swarm在生產(chǎn)環(huán)境中的進(jìn)階指南》 當(dāng)在本地開(kāi)發(fā)環(huán)境中使用Docker,或者...

    galaxy_robot 評(píng)論0 收藏0
  • SwarmKit知多少——來(lái)自源碼世界深入解讀

    摘要:一個(gè)容器起來(lái),能夠?qū)ν夥?wù),這時(shí)就看下一步的負(fù)載均衡服務(wù)發(fā)現(xiàn)以及編排。它們有不同的應(yīng)用場(chǎng)景,比如傾向于四層的負(fù)載均衡。不單是負(fù)載均衡,它同時(shí)解決了服務(wù)發(fā)現(xiàn)和負(fù)載均衡兩個(gè)點(diǎn)。 今天是數(shù)人云容器三國(guó)演義Meetup嘉賓演講實(shí)錄第二彈。數(shù)人云工程師春明為大家奉送了一盤干貨的大餐,讓我們讀讀源碼,深入了解一下SwarmKit的世界吧! 小數(shù)前方預(yù)警:有大量代碼出現(xiàn)! showImg(htt...

    stefanieliang 評(píng)論0 收藏0
  • Docker Swarm前世今生

    摘要:當(dāng)然此時(shí)的局限性較大,比如沒(méi)有副本和負(fù)載均衡的概念,這導(dǎo)致服務(wù)無(wú)法高可用當(dāng)然也更不存在什么服務(wù)網(wǎng)絡(luò)管理和跨節(jié)點(diǎn)數(shù)據(jù)存儲(chǔ)這些東西沒(méi)有服務(wù)模型集群中服務(wù)間關(guān)系和啟動(dòng)順序編排也很復(fù)雜于是就有了下面的的誕生。 showImg(https://segmentfault.com/img/remote/1460000015317037?w=1885&h=1153); 概述 在我的《Docker S...

    lemon 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<