ASP.NET Core使用Docker-Swarm集羣部署實現負載均衡實戰演練

一、需求背景

人生苦短,我用.NET Core!阿笨對Docker是這樣評價的:Docker在手,環境我有!Docker出手,集羣我有!前面的Doc基礎課程我們學習瞭如何使用Docker來部署搭建單機容器應用。當一臺服務器的處理能力、存儲空間不足時,不要企圖去換更強大的服務器,對大型網站而言,不管多麼強大的服務器,都滿足不了網站持續增長的業務需求。實踐中會發現,生產環境中使用單個 Docker 節點是遠遠不夠的,搭建 Docker 集羣勢在必行。然而,面對 Kubernetes, Mesos等衆多容器集羣系統,我們該如何選擇呢?它們之中,Docker Swarm 是 Docker 原生的,同時也是最簡單,最易學,最節省資源的,比較適合中小型公司使用。今天給大家分享一下如何使用Docker-Swarm來搭建負載均衡集羣容器環境應用。

1.1、本次分享課程適合人羣如下:

1)、本課程一定需要具備Docker基礎知識。(零基礎學者止步慎入!)

2)、學習和了解ASP.Net Core跨平臺開發技術。

3)、喜歡阿笨分享的乾貨課程童鞋們。本課程不是零基礎教學,側重點主要是講解Docker Swarm與ASP.NET Core實戰運用,大家務必根據自身的實際情況進行選擇學習。

如果您在學習過程中遇到任何的課程問題,請先私下直接找阿笨老師進行在線的溝通和交流。謝謝大家的理解和支持,預祝大家學習快樂!

如果您是一個開發老鳥,那麼本次課程完全不建議您進行學習!

1.2、一句話總結今天我們學習達到的目標

如何使用Docker-Swarm部署高可用ASP.NET Core負載均衡集羣容器環境應用。

如果您同樣對本次分享《ASP.NET Core使用Docker-Swarm集羣部署實現負載均衡實戰演練》課程感興趣的話,那麼請跟着阿笨一起學習吧。廢話不多說,直接上乾貨,我們不生產乾貨,我們只是乾貨的搬運工。

ASP.NET Core使用Docker-Swarm集羣部署實現負載均衡實戰演練

ASP.NET Core使用Docker-Swarm集羣部署實現負載均衡實戰演練

二、Docker-Swarm概念介紹

1、什麼是Docker Swarm

Docker Swarm是Docker公司開發的容器集羣管理服務。 從1.12.0版本開始,已經是Docker安裝後自帶的一部分(捆綁軟件)了,又稱爲Swarm Mode,無需額外安裝。Swarm 是 Docker 官方提供的一款集羣管理工具,其主要作用是把若干臺 Docker 主機抽象爲一個整體,並且通過一個入口統一管理這些 Docker 主機上的各種 Docker 資源。使用它,用戶可以將多個 Docker 主機封裝爲單個大型的虛擬 Docker 主機,快速打造一套容器雲平臺。

2、Docker Swarm核心概念解釋

1、集羣節點分爲兩類:管理節點,工人節點。

2、一個集羣必須有一個首領。首領也是管理節點。

2、一個集羣有多個管理節點(建議爲基數個,比如1,3,5)和多個工人節點。

3、管理節點可以降級demote爲工人節點,工人節點可以升級promote爲管理節點。

3、DockerSwarm特點

1. Docker Engine集成集羣管理

使用Docker Engine CLI 創建一個Docker Engine的Swarm模式,在集羣中部署應用程序服務。

2. 去中心化設計

Swarm角色分爲Manager和Worker節點,Manager節點故障不影響應用使用。

3. 擴容縮容

可以聲明每個服務運行的容器數量,通過添加或刪除容器數自動調整期望的狀態。

4. 期望狀態協調

Swarm Manager節點不斷監視集羣狀態,並調整當前狀態與期望狀態之間的差異。例如,設置一個服務運行10個副本容器,如果兩個副本的服務器節點崩潰,Manager將創建兩個新的副本替代崩潰的副本。並將新的副本分配到可用的worker節點。

5. 多主機網絡

可以爲服務指定overlay網絡。當初始化或更新應用程序時,Swarm manager會自動爲overlay網絡上的容器分配IP地址。

6. 服務發現

Swarm manager節點爲集羣中的每個服務分配唯一的DNS記錄和負載均衡VIP。可以通過Swarm內置的DNS服務器查詢集羣中每個運行的容器。

7. 負載均衡

實現服務副本負載均衡,提供入口訪問。也可以將服務入口暴露給外部負載均衡器再次負載均衡。

8. 安全傳輸

Swarm中的每個節點使用TLS相互驗證和加密,確保安全的其他節點通信。

9. 滾動更新

升級時,逐步將應用服務更新到節點,如果出現問題,可以將任務回滾到先前版本。

三、Docker-Swarm環境安裝

可以通過Docker官方提供的docker-machine來快速創建一個docker容器環境的,它搭建和管理多個docker 主機同時搭建swarm集羣。本期分享課程阿笨這裏採用是直接模擬通過創建虛擬主機的方式來搭建我們的Docker Swarm集羣環境。

Swarm是Docker原生的集羣管理軟件,與Kubernetes比起來比較簡單。

對於沒有集羣使用經驗的小白,用Docker Swarm起步,是一個很好的選擇。Docker 可以看做集裝箱把雜亂的貨物一個個整理歸類, Compose 則是用於編排這些集裝箱,最後 Swarm 就是多提供幾條船,掛掉一兩條還能繼續走,提高穩定性。

四、Docker-Swarm搭建ASP.NET Core集羣應用環境

ASP.NET Core使用Docker-Swarm集羣部署實現負載均衡實戰演練

五、Docker-Swarm集羣部署Nginx實現ASP.NET Core應用負載均衡

集羣要提供高可用性就必須要有某種機制去保證,常用的機制爲failover(故障轉移),簡單說就是通過一定的heartbeat檢測是否有故障,一旦故障發生備份節點則接管故障節點的工作。

Swarm使用了Raft協議來保證多個Manager之間狀態的一致性。基於Raft協議,Manager Node具有一定的容錯功能,假設Swarm集羣中有個N個Manager Node,那麼整個集羣可以容忍最多有(N-1)/2個節點失效。如果是一個三Manager Node的Swarm集羣,則最多隻能容忍一個Manager Node掛掉。

重要說明:添加更多manager並不意味着增加可伸縮性或更高的性能。一般來說,情況恰恰相反!

ASP.NET Core使用Docker-Swarm集羣部署實現負載均衡實戰演練

六、思考與總結

1、思考

  在大型公司中,都有專職負責基礎支撐技術的開發或運維人員,而在中小型企業可能就很少有這類團隊或者壓根沒有,需要開發人員自行解決。現在很多崗位的招聘需求上都有寫需要了解或者掌握 Docker,或者將掌握 Docker 等容器技術作爲加分項目,並且這個要求不侷限於運維或者後端開發等崗位。搞技術的千萬不能有一個錯誤的思想,這個東西我用不上,就算用不上,也不能停止學習的腳步。所以一句話Docker作爲開發人員還是很有必要進行學習的!

2、總結

Docker如果只是會幾個指令和根據dockerfile文件構建自定義鏡像的話,那僅僅停留在基礎入門階段。有人說docker是屬於運維工程師的事情,阿笨並不這麼認爲。作爲開發人員不學習新的東西,視野怎麼能打開,開發人員一定也要懂點運維方面的那些事,這樣有助於我們更加的理解和了解架構設計!

希望本次分享課程能夠讓大家有所收穫和幫助!最後送大家一句話:希望大家在.NET Core的學習道路上一直跟着阿笨堅持下去。

作者:阿笨 

      官方QQ羣:422315558 跟着阿笨一起玩NET 574187616跟着阿笨一起玩NET(二) 967920586跟着阿笨一起玩ASP.NET 

      【網易雲課堂主頁】:https://study.163.com/provider/2544628/index.htm?share=2&shareId=2544628

      【騰訊課堂主頁】:https://abennet.ke.qq.com/

      【微信公衆號】:http://dwz.cn/ABenNET

發佈了81 篇原創文章 · 獲贊 11 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章