摘要:今天,我們將關(guān)注如何部署容器并測試當前實驗性重新調(diào)度功能的當前狀態(tài)。注意重新調(diào)度尚處于實驗階段,其中存在。但也確實有部分用戶指出重新調(diào)度機制并未生效,或者是在主機恢復(fù)后出現(xiàn)了兩套容器。
歡迎回來,我們繼續(xù)本系列的第二篇教程。今天我們將主要關(guān)注Redis,希望大家還記得第一部分的主要內(nèi)容——了解如何安裝我們將要使用的環(huán)境。
傳送門: Docker Swarm系列第一部:利用Flocker部署多節(jié)點Cassandra集群
在發(fā)生節(jié)點故障時利用Swarm對Redis服務(wù)器進行重新調(diào)度如果大家認真閱讀了第一部分,應(yīng)該記得我們在Swarm部署中使用了--experimental標記。其中包括Swarm 1.1.0中的一項功能——在節(jié)點故障時對容器進行重新調(diào)度。
今天,我們將關(guān)注如何部署Redis容器并測試當前實驗性重新調(diào)度功能的當前狀態(tài)。
注意:重新調(diào)度尚處于實驗階段,其中存在bug。我們將在示例過程中的對應(yīng)位置提醒大家可能出現(xiàn)的bug。
如果大家希望在Swarm主機發(fā)生故障時對容器進行重新調(diào)度,則需要在容器部署中使用特定標記。作為可行方案之一,我們可以使用以下標記:--restart=always -e reschedule:on-node-failure或者類似于-l "com.docker.swarm.reschedule-policy=["on-node-failure"]"的標簽。以下示例將使用環(huán)境變量方法。
首先,我們使用重新調(diào)度標記與由Flocker管理的分卷進行Redis容器部署。
接下來,利用SSH接入Docker主機內(nèi)的Redis容器運行位置,并查看Redis始終使用的appendonly.aof文件內(nèi)容。該文件應(yīng)當位于Flocker分卷中,作為容器起始點存在且不包含任何數(shù)據(jù)。
然后接入Redis服務(wù)器并添加一些鍵/值對。而后,再次查看appendonly.aof文件內(nèi)容以確保Redis以正確方式存儲數(shù)據(jù)。
在Flocker分卷中查看數(shù)據(jù)以驗證Redis正確運行。
測試故障轉(zhuǎn)移現(xiàn)在我們將測試故障轉(zhuǎn)移場景,確保我們的Flocker分卷能夠?qū)⒋鎯υ赗edis中的數(shù)據(jù)正確遷移至Swarm重新調(diào)度容器的新Docker主機上。
要實現(xiàn)這一目標,我們在Swarm管理器中指定Docker,并利用docker events命令監(jiān)控各項事件。
要開始測試,首先在運行有Redis容器的Docker主機上運行shutdown -h now以模擬節(jié)點故障。大家應(yīng)該看到與該節(jié)點及容器相關(guān)的各項事件。
這些事件在告知我們,該容器及其資源由于遭遇故障(包括網(wǎng)絡(luò)與分卷)需要被移除、斷開連接或者卸載。我們看到的事件如下:
Container Kill
Container Die
Network Disconnect
Swarm Engine Disconnect
Volume Unmount
Container Stop
在Docker主機關(guān)閉一段時間之后,大家應(yīng)該會最終看到故障容器正在進行重新調(diào)度(即重新創(chuàng)建)。在這里需要提醒的是,在測試中我們發(fā)現(xiàn)Swarm 1.1.3版本中仍然存在問題,即其仍然會在被創(chuàng)建在新Docker主機上的容器中運行 Start 。
大家應(yīng)該會在查看到Create事件記錄的同時發(fā)現(xiàn)docker events,而后者的作用是對容器重建以及Flocker分卷移動進行初始化。
我們發(fā)現(xiàn),大家可能需要在重新調(diào)度完成后,在新主機上手動Start該容器。
注意:容器創(chuàng)建過程中存在一些問題,但在測試中我們并未在容器啟動時發(fā)現(xiàn)問題。
此事件代表著我們的容器已經(jīng)經(jīng)過重新調(diào)度并自動創(chuàng)建于新的Docker主機之上。請注意,最新信息中的IP地址發(fā)生了變化,這是因為容器被調(diào)度到了新的Docker主機中。
下面來看流程回顧:
如果我們對Swarm運行docker ps,則會看到該Redis容器為Created。在這種情況下,我們可以手動進行啟動,而Redis也將恢復(fù)并運行在新節(jié)點上。
下面接入該Redis服務(wù)器以確保我們添加的數(shù)據(jù)仍然存在。
數(shù)據(jù)仍然存在!不過考慮到重新調(diào)度情況,我們不建議大家直接使用這些數(shù)據(jù)。
在測試當中,大部分用戶反映容器能夠在新節(jié)點上正常啟動。但也確實有部分用戶指出重新調(diào)度機制并未生效,或者是在Docker主機恢復(fù)后出現(xiàn)了兩套容器。無論如何,工作當中顯然還存在著問題,而社區(qū)的作用也正在于此——幫助測試、報告并修復(fù)這些問題,從而確保其運行效果更為可靠。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/26635.html
摘要:雖然可以使用相同的方式部署應(yīng)用到云端,使用外部負載均衡器,但動態(tài)添加或者減少負載均衡節(jié)點依舊是痛點。這對使用外部負載均衡器幫助巨大。 數(shù)人云今天帶來的本篇文章將分享Docker在應(yīng)用程序生命周期每個階段中所扮演的角色,以及遷移到Swarm集群時需要考慮的問題。 利用Docker來開發(fā) Docker讓工作更輕松。如需要一個部署安裝MySQL數(shù)據(jù)庫,或者安裝Ghost,又或者Redis數(shù)據(jù)...
摘要:一個容器起來,能夠?qū)ν夥?wù),這時就看下一步的負載均衡服務(wù)發(fā)現(xiàn)以及編排。它們有不同的應(yīng)用場景,比如傾向于四層的負載均衡。不單是負載均衡,它同時解決了服務(wù)發(fā)現(xiàn)和負載均衡兩個點。 今天是數(shù)人云容器三國演義Meetup嘉賓演講實錄第二彈。數(shù)人云工程師春明為大家奉送了一盤干貨的大餐,讓我們讀讀源碼,深入了解一下SwarmKit的世界吧! 小數(shù)前方預(yù)警:有大量代碼出現(xiàn)! showImg(htt...
閱讀 3751·2021-09-22 10:57
閱讀 1921·2019-08-30 15:55
閱讀 2711·2019-08-30 15:44
閱讀 1741·2019-08-30 15:44
閱讀 1885·2019-08-30 15:44
閱讀 2256·2019-08-30 12:49
閱讀 1060·2019-08-29 18:47
閱讀 3144·2019-08-29 16:15