1.07 容器編排docker Swarm

尹成發表於2018-12-10

1.編排swarm簡介

  • 學習怎麼將docker用於生產環境,前面學的是用於本地測試環境
  • 之前學的是通過docker客戶端連線安裝好docker的linux機器,如下圖
    在這裡插入圖片描述
  • 生產環境下機器和容器都非常多,怎麼去管理容器?怎麼橫向擴充套件?如果容器down了怎麼恢復?如何更新容器不影響業務?如何監控容器?如何排程容器的建立?如何保護隱私資料?
  • swarm是內建於docker的容器編排工具
    在這裡插入圖片描述
  • swarm叢集架構圖,有manager和worker兩種角色
  • manager至少有兩個,內建分散式儲存資料庫實現資料同步,這裡是通過Raft進行資料同步的,不會出現腦裂的情況,最終實現HA
  • worker之間通過gossip的網路做資料同步
    在這裡插入圖片描述
  • service和replicas,部署nginx的service,實際部署產生三個容器,三個容器通過排程系統,排程到不同的節點
  • 也就是部署時,最初是不知道擴充套件節點會部署到哪裡的,由swarm通過排程演算法去算的,看哪個機器目前空閒
    在這裡插入圖片描述
  • 服務建立和排程
  • 在swarm manage做決策,決定將worker部署到哪裡
    在這裡插入圖片描述

2.三節點swarm叢集的搭建

  • 準備三臺裝好docker的機器,這裡做一個manager,兩個worker
  • 在主節點node01初始化swarm
  • 執行完生成一行命令,子節點加入時,複製這一行程式碼執行就可以
    在這裡插入圖片描述
  • node02和node03分別作為worker加入
    在這裡插入圖片描述
    在這裡插入圖片描述
  • 檢視當前swarm節點
    在這裡插入圖片描述
  • 節點退出swarm叢集
    在這裡插入圖片描述
  • 快速部署:
  • 地址:https://labs.play-with-docker.com/
    在這裡插入圖片描述
  • 執行上面的步驟

3.建立維護Service並擴充套件

  • 建立service
    在這裡插入圖片描述
  • 檢視service狀態
    在這裡插入圖片描述
  • 檢視service建立的container的情況
    在這裡插入圖片描述
  • 然後在對應節點可以檢視程式
    在這裡插入圖片描述
  • 將service橫向擴充套件
    在這裡插入圖片描述
  • 檢視一共有5個demo例項
    在這裡插入圖片描述
  • 不同節點檢視程式,5個service平均分配到manager和workder
    在這裡插入圖片描述
  • node02中,刪除一個容器
    在這裡插入圖片描述
  • 刪完立刻去主節點檢視,少了一個demo例項
    在這裡插入圖片描述
  • 主節點檢視,會自動恢復
    在這裡插入圖片描述
  • 主節點刪除service
    在這裡插入圖片描述

4.使用DockerStack部署VotingApp

  • 進入之前的/home/voting-example目錄,將之前的docker-compose.yml內容刪掉
    在這裡插入圖片描述
  • swarm模式編譯執行
    在這裡插入圖片描述
  • 檢視執行狀態
    在這裡插入圖片描述
  • 檢視執行詳細情況,多次執行,直到部署好
    在這裡插入圖片描述
  • 訪問IP:5000是投票的頁面
    在這裡插入圖片描述
  • 訪問IP:5001是檢視結果的頁面
  • 叢集執行狀態下,將vote擴充套件為3個
    在這裡插入圖片描述
  • 檢視到多了一個例項
    在這裡插入圖片描述
  • 停止並刪除所有service
    在這裡插入圖片描述

5.使用DockerStack部署視覺化應用

  • 建立目錄
    在這裡插入圖片描述
  • 部署服務
    在這裡插入圖片描述
  • 檢視stack部署情況
    在這裡插入圖片描述
  • 瀏覽器訪問任意節點的9001埠
    在這裡插入圖片描述
  • 檢視stack例項
    在這裡插入圖片描述
  • 叢集執行狀態下,將stack-demo_portainer擴充套件為3個
    在這裡插入圖片描述
  • 瀏覽器訪問任意節點的9001埠,此時stack-demo_portainer變為了3個例項
    在這裡插入圖片描述
  • 刪除stack例項
    在這裡插入圖片描述

6.使用並管理DockerSecret

  • secret可以是使用者名稱和密碼,也可以是SSH key,可以是任何不想讓別人看到的資料
  • docker swarm的架構如下,manager節點有基於raft的內建的分散式儲存,是加密後儲存的,worker資訊也是加密是,也是分散式儲存的
    在這裡插入圖片描述
  • 隨意建立一個檔案
    在這裡插入圖片描述
  • 建立secret
    在這裡插入圖片描述
  • 此時密碼已經儲存到manager的分散式儲存中了
    在這裡插入圖片描述
  • 檢視secret
    在這裡插入圖片描述
  • 也可以從標準輸入建立
    在這裡插入圖片描述
  • 再次檢視secret
    在這裡插入圖片描述
  • 刪除secret
    在這裡插入圖片描述
  • 建立mysql的service
    在這裡插入圖片描述
  • 檢視程式執行的節點,這裡看到是node03執行的
    在這裡插入圖片描述
  • node03中檢視程式
    在這裡插入圖片描述
  • node03中互動執行mysql
    在這裡插入圖片描述
  • 互動執行時可以檢視密碼,然後用這個密碼登入mysql
    在這裡插入圖片描述
    在這裡插入圖片描述
    在這裡插入圖片描述

7.更新service版本

  • 建立demo網路
    在這裡插入圖片描述
  • 檢視網路
    在這裡插入圖片描述
  • 建立service,可以去dockerHub檢視nginx版本
    在這裡插入圖片描述
  • 訪問80埠,會返回一個歡迎頁
    在這裡插入圖片描述
  • 在node01寫一個指令碼,不停訪問
    在這裡插入圖片描述
  • 在另一個會話,更新service的版本到1.13
    在這裡插入圖片描述
  • node02訪問業務,自動切換到新版本
    在這裡插入圖片描述
  • 在另一個會話,更新訪問埠
    在這裡插入圖片描述
  • node02訪問,檢視效果
    在這裡插入圖片描述

學院Go語言視訊主頁
https://edu.csdn.net/lecturer/1928

[清華團隊帶你實戰區塊鏈開發]
(https://ke.qq.com/course/344443?tuin=3d17195d)
掃碼獲取海量視訊及原始碼 QQ群:
721929980
在這裡插入圖片描述

相關文章