(精華)2020年10月3日 微服務 Docker-叢集(swarm)

愚公搬程式碼發表於2020-10-03

docker-叢集

什麼是docker叢集

什麼是叢集

1、先生活中叢集

2、再軟體中叢集

3、最後總結

總結:不同服務例項,來共同提供服務的一組集合就是叢集

叢集型別

1、先看兩個叢集例子:nginx叢集,redis叢集

2、然後總結

1、對稱叢集

​ 不同服務例項,功能地位相等(每一個例項提供的功能機會相同)

​ 定位:資料計算

2、非對稱叢集

​ 不同服務例項,功能地位不相等(每一個例項提供功能的機會不相同)

​ 定位:資料儲存

什麼是docker叢集

接下來,考一下大家,大家認為docker叢集是個什麼叢集

總結

1、docker叢集是非常叢集

​ 見圖進行解析

為什麼要使用docker叢集

​ 從docker叢集圖來進行分析,docker裡面執行著容器,如果docker當機?

docker容器對外提供 訪問,如果訪問量越大,一臺docker的併發量畢竟有限

總結:

​ 1、單點故障問題

​ 2、效能問題

所以為了解決這兩個問題,就出現了docker叢集

實現docker叢集方式

​ 1、swarm

​ 2、k8s

​ 但是我們今天只會講解swarm,今天我們選擇swarm

選擇原因

1、swarm是docker官方提供的叢集工具

2、k8s是谷歌開發的

3、k8s理解使用起來比較難

swarm如何管理docker叢集

swarm是什麼,怎麼理解?

swarm 就好比是地鐵購票機安裝員。同理swarm就是地鐵購票機安裝員

Docker Swarm 是 Docker 的叢集管理工具。它將 Docker 主機池轉變為單個虛擬 Docker 主機。 Docker Swarm 提供了標準的 Docker API,所有任何已經與 Docker 守護程式通訊的工具都可以使用 Swarm 輕鬆地擴充套件到多個主機。

swarm內部概念

1、node節點概念

2、task概念 — 後面再引入

3、service概念 — 後面再引入

4、stack概念 — 後面再引入

就是將叢集的docker通過node分配角色的方式進行維護

node 就是docker的別名,就好比,我們去公司上班,每一個人都有一個工號,工號就是我們的別名,那麼node就是docker的別名,但是node有兩個型別,manager 和work,就是講docker分成了兩類,就好比,公司裡面有老闆和員工,manager就是老闆,work就是員工,老闆是管理的,員工是幹事的。有時候人工不夠的時候,老闆也過來幹事。

1、node :docker主機

2、管理節點(manager)

​ 管理docker叢集

​ 1、叢集配置

​ 2、容器服務管理。

​ 3、負載均衡

​ 4、叢集管理?

3、工作節點 (worker)

​ 1、提供容器服務

swarm是如何操作叢集節點容器的?===目前先不講

在使用之前我們必須要準備一些概念,這些概念是swarm的核心,掌握了這些概念,就已經理解了swarm 50%

後面都是基於這些概念的操作

service是什麼?

​ 是指不同節點容器集合,用來維護容器

task是什麼?

​ 在叢集環境中,用來執行容器

stack是什麼?

​ 是指stack的集合,用來維護service

swarm如何建立docker叢集

條件

1、兩臺以上docker主機

2、docker swarm

步驟

1、安裝兩臺docker主機,使用linux或者centos7.0以上

​ 安裝1.12 版本以上的docker,會在主機上預設提供支援

2、如何使用docker swarm?

​ 1、輸出docker命令,會看到有一個swarm管理命令

​ docker swarm

​ 2、然後輸入docker swarm 命令

​ 可以看到很多的幫助命令

​ 3、建立叢集管理節點

​ docker swarm init --advertise-addr 123.57.164.54

​ 4、建立工作節點

​ docker swarm join --token SWMTKN-1-2bomg3tb4cs8f5g7oqrw34k1mql9i0tr2msn8leqyphgac5hct-db4iwy32sdr6m0bmqyhi47jyn 123.57.164.54:2377

​ 5、檢視叢集訊息,檢視工作節點和管理節點

​ docker info

swarm叢集中如何管理容器?

​ 使用service 你們想一下,公司除了人工還有什麼,是不是還有部分經理,那麼service就是部分經理

​ 就好比公司的部門經理

​ 條件

​ 1、rmcore映象

​ 2、nginx映象

​ 3、docker service

​ 步驟

​ 1、檢視rmcore映象和nginx映象

​ 使用rmcore映象來進行叢集服務部署

​ 2、 如何使用docker service?

​ 1、輸出docker命令,會看到有一個service管理命令

​ docker service

​ 2、然後輸入docker service命令

​ 可以很多的幫助命令

​ 3、建立服務

​ docker service create --replicas 1 – name rmcoreservice rmcore

​ --replicas 配置服務副本(容器在不同節點啟動)

​ --name 服務名稱

​ 4、列表服務

​ docker service ls

​ 5、檢視服務執行在哪個節點

​ docker service ps rmcore-service

​ 6、檢視服務部署詳細資訊

​ docker service inspect --pretty rmcoreservice

​ 7、服務擴充套件(向其他節點新增服務副本)

​ docker service scale rmcoreservice=2

​ 8、刪除服務

​ docker service rm rmcoreservice

​ 9、服務如何進行外部訪問

​ docker service create --replicas 1 – name --publish 6066:80 rmcoreservice

​ --publish 釋出埠例如 6066:80

​ 10、進行網路訪問

​ 111.229.181.115:6066

​ 123.57.164.54:6066

swarm叢集中如何管理不同容器?

使用stack 你們想一下,公司除了人工,是不是還有部分經理,還有什麼,就是總經理,那麼stack 就是總經理

​ 就好比公司的部門經理

條件

​ 1、rmcore映象

​ 2、nginx映象

​ 3、docker-compose.yml

​ 4、stack

1、檢視rmcore映象和nginx映象

​ 使用rmcore映象來進行叢集服務部署

2、 如何使用docker stack?

​ 1、輸出docker命令,會看到有一個service管理命令

​ docker stack

​ 2、然後輸入docker stack命令

​ 有很多的幫助命令

​ 3、建立堆疊(服務集合)

​ 1、建立一個stack目錄(在當前目錄/root下建立一個stack)

​ mkdir stack

​ 2、配置yml檔案

​ 在原有docker.compose.yml增加配置

​ version: ‘3.4’

​ deploy: #叢集模式配置
​ mode: replicated #配置副本模式,gloab
​ replicas: 2 # 副本份數

​ 3、建立stack

​ docker stack deploy -c docker-compose.yml rmstack

​ -c 是指定docker-compose.yml檔案

​ rmcorestack 指定stack 標識(名稱)

​ 4、檢視stack列表

​ docker stack ls

​ 5、檢視stack 服務列表資訊

​ docker stack ps rmstack

​ 或者 docker service ls

​ 5、刪除stack

​ docker stack rm rmstack

​ 通過兩個節點檢視,所有的資訊是否刪除

version: '3'
services:
  rmcore:
    image: rmcore
    ports:
 - 8088:80
 - 8089:443
    deploy:
        mode: 
         replicated
        replicas: 2
nginx:
    image: nginx
    ports:
 - 8090:80
    deploy:
        mode: 
         replicated
        replicas: 2	

​ 6、進行網路訪問

​ 111.229.181.115:6066

​ 123.57.164.54:6066

swarm如何執行容器

使用task執行容器

swarm如何監聽容器狀態?

swarm不能做到

使用k8s做到

swarm如何記錄容器日誌?

swarm不能做到

使用k8s做到

相關文章