docker下高並發和高可用之docker swarm使用

2020-12-14 資料庫及DotNet開發

準備條件:

1. 至少2臺Linux的主機,這裡選擇CentOS7

2.Xshell工具

在Windows作業系統下通過VMware Workstation創建兩臺CentOS的虛擬機

虛擬機啟動後,通過xShell分別連接上兩臺虛擬機

分別為兩臺虛擬機安裝docker,操作步驟參考

Linux下安裝和使用Docker

安裝完,使用命令

sudo systemctl start docker

啟動docker,再通過命令

docker version

查看docker版本信息

利用docker swarm 命令來指定其中一臺虛擬機為docker的Manager管理機

docker swarm init --advertise-addr=192.168.65.129

成功後提示信息,當前虛擬機節點成為一個manager管理者,如果需要添加一個worker工作者的話,可以通過join命令完成

Swarm initialized: current node (3lkefy351fmsroalxu6hb3hvs) is now a manager.

To add a worker to this swarm, run the following command:

docker swarm join --token SWMTKN-1-2fl56eq1fov04ftmzsaayrybz92mrc2c90ja5sc8ni4ur5ze54-8lta9gj7pot0s9fhhxsbca032 192.168.65.129:2377

To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.

在另一臺linux虛擬機上執行命令

docker swarm join --token SWMTKN-1-2fl56eq1fov04ftmzsaayrybz92mrc2c90ja5sc8ni4ur5ze54-8lta9gj7pot0s9fhhxsbca032 192.168.65.129:2377

這樣就創建了一個Worker的節點,即將當前虛擬機節點關聯到Manager節點

輸入命令

docker info

在兩臺虛擬機上分別查看Manager和Worker兩個節點的信息情況

Worker節點
Manager節點

查看當前虛擬機節點的node信息

docker node ls

只有Manager管理節點虛擬機上該命令才可用

如果在Worker工作節點上執行命令,則會出現錯誤信息提示

Error response from daemon: This node is not a swarm manager. Worker nodes can't be used to view or modify cluster state. Please run this command on a manager node or promote the current node to a manager.

接下來我們通過命令創建一個服務

docker service create --name weatherservice -p 8008:80 at.microservice

通過命令

docker service ls

查看當前虛擬機下的服務列表(注意:只能在Manager管理機器上執行,Worker工作機上是沒有執行權限的)

通過以下命令查看某個服務下的容器信息

docker service ps weatherservice

通過命令

docker ps -a

查看docker下的所有容器信息,其中就包括了上面剛創建的service服務

我們通過瀏覽器訪問埠,可以看到接口的返回信息

我們還可以對創建的Service再指定對外暴露的埠,可以使用以下命令

docker service update --publish-add 8009:80 weatherservice

通過命令docker service ls 查看,可以看到8008 和 8009兩個埠都可以訪問服務接口地址

docker動態伸縮,快速啟動多個服務實例(使用的是一致性哈希算法,還有一些其他算法,比如輪詢算法)

docker service scale weatherservice=5

查看5個不同的容器運行在不同的虛擬機節點上

docker service ps weatherservice

動態查看服務的負載均衡分布情況

docker service logs -f weatherservice

相關焦點

  • 開源電商系統mall-swarm後端docker搭建過程記錄
    背景1、基於docker進行本地後端的搭建,docker未建私服,直接使用docker-hub;2、部分基礎組件在虛已經擬機上面通過非docker鏡像方式安裝:具體涉及MySQL、Redis、Mongo、Elasticsearch3、下載源碼:
  • 雲計算核心技術Docker教程:docker Stack介紹
    Docker在進行多服務部署和管理時通常會使用Docker Stack來解決大規模部署管理問題,Docker引擎在1.12 版本集成了Docker Swarm, 內置新的容器編排工具docker stack,通過提供期望狀態、滾動升級、簡單易用、擴縮容、健康檢查等特性簡化了應用的管理
  • 如何使用Elasticsearch和cAdvisor監控Docker容器
    你需要監控下面的參數: 容器的數量和狀態。 一臺容器是否已經移到另一個節點了,如果是,那是在什麼時候,移動到哪個節點? 給定節點上運行著的容器數量。 一段時間內的通信峰值。 孤兒卷和網絡(LCTT 譯註:孤兒卷就是當你刪除容器時忘記刪除它的卷,這個卷就不會再被使用,但會一直佔用資源)。
  • Docker系列教程01-使用Docker鏡像
    如果只要其中一項內容時,可使用-f指定,例如,獲取鏡像的創建時間:3)使用history命令查看鏡像歷史docker pull 下載鏡像時也我們發現了鏡像文件由多個層組成,可以使用history子命令列出各層的創建信息。
  • Docker集群管理之Docker Compose
    前言:在上一篇《Docker集群管理之Docker Machine》中,我們通過源碼分析了解了Docker Machine的工作原理,使用者可以通過Docker Machine的一條命令在任意支持的平臺創建一個Docker主機,並能集中管理這些主機。Docker主機創建好之後,接下來就該考慮Docker容器部署的問題了。
  • Docker v1.12.1 發布
    官方發行說明:https://github.com/docker/docker/releases/tag/v1.12.1 下載地址:部分更新內容:ClientAdd Joined at information in node inspect --pretty #25512
  • 雲計算核心技術Docker教程:Docker容器使用
    例如我們要查看 docker stats 指令的具體使用方法:命令如下:$ docker stats --help如果我們本地沒有 ubuntu 鏡像,我們可以使用 docker pull 命令來載入 ubuntu 鏡像:
  • Docker問答錄系列——Docker引擎相關問題(一)
    Docker引擎相關問題宿主如果和容器系統不同的話,那不是和虛擬機一樣,一層層的調用,那麼 Docker 和虛擬機還有什麼差別? 要把 Windows 和 Linux 分清楚,更要把內核(kernel)和用戶空間(userland)分清楚。
  • 雲計算核心技術Docker教程:Docker鏡像使用
    當運行容器時,使用的鏡像如果在本地中不存在,docker 就會自動從 docker 鏡像倉庫中下載,默認是從 Docker Hub 公共鏡像源下載。我們可以使用 docker images 來列出本地主機上的鏡像。
  • docker-4:mac使用docker部署開發用rocketmq
    為了開發方便,有時需要在本地部署rocketmq,使用docker是一個高性價比的方式,故有此文。目錄:(1).mac本地docker化rocketmq(2).mac本地docker化rocketmq-console(3).測試(1).mac本地docker化rocketmq現在官方rocketmq-docker:git clone https://github.com/apache/rocketmq-docker
  • 雲計算核心技術Docker教程:Docker Machine 使用 - TechWeb
    Docker Machine 是一個工具,它允許你在虛擬宿主機上安裝Docker,並使用docker-machine命令管理這個宿主機,可以使用Docker Machine在本地的MAC或者windows box、公司網絡,數據中心或者AWS這樣的雲提供商上創建docker。
  • K8S棄用Docker了?Docker 不能用了?別逗了!
    近幾年,Kubernetes 已經成為自有機房、雲上廣泛使用的容器編排方案,最廣泛的使用方式是 Kubernetes+Docker。從 DevOps 人員的角度,一面用 kubctl 命令、k8s API 來操作集群,一面在單機用 Docker 命令來管理鏡像、運行鏡像。
  • Docker再體驗之Docker Compose,及它與Kubernetes的區別
    安裝Docker Compose接上一篇的例子,安裝Docker Compose,並進行賦權和檢驗。[53396] Cannot open self /usr/local/bin/docker-compose or archive /usr/local/bin/docker-compose.pkg。刪除掉/usr/local/bin/docker-compose,重新下載一下,可能是網絡原因下載有中斷情況,而這個文件又仍然會生成。
  • 「走進k8s」Docker 簡介和安裝(一)
    ,前端時間將原來的java的一些知識回顧和學習了,這次又要開啟k8s之旅了,加油吧老鐵們!(三)docker和虛擬機的區別vm與docker框架,直觀上來講vm多了一層guest OS,同時Hypervisor會對硬體資源進行虛擬化,docker直接使用硬體資源,所以資源利用率相對docker低也是比較容易理解的。
  • Docker Network—Bridge 模式
    您還可以使用 overlay 網絡來實現 swarm 集群和獨立容器之間的通信,或者不同 Docker 守護進程上的兩個獨立容器之間的通信。該策略實現了在這些容器之間進行作業系統級別路由的需求。macvlan:Macvlan 網絡允許為容器分配 MAC 地址,使其顯示為網絡上的物理設備。 Docker 守護進程通過其 MAC 地址將流量路由到容器。
  • Docker系列教程02-操作Docker容器
    t分配一個tty偽終端,支持終端登錄2)啟動容器使用docker create命令新建的容器處理停止狀態,可使用docker start啟動它。進入容器後,我們可以進行操作,比如創建文件和列出當前運行進程:
  • 【Docker】系列教程02-操作Docker容器
    參數說明:保持標準輸入打開,用於控制臺交互分配一個tty偽終端,支持終端登錄2、啟動容器使用docker create命令新建的容器處理停止狀態,可使用docker start啟動它。1、導出容器將容器導出到一個文件中,可以使用docker export,命令格式如下:
  • docker的/var/run/docker.sock參數
    歡迎訪問我的GitHub這裡分類和匯總了欣宸的全部原創(含配套源碼):https://github.com/zq2599/blog_demos關於/var/run/docker.sock參數在創建docker容器時,有時會用到/var/run/docker.sock這樣的數據卷參數,例如以下docker-compose.yml
  • 如何開始docker - docker架構及創建容器
    安裝docker很簡單,啟動服務以後要怎麼開始使用呢?docker的組成docker是採用C/S模式,使用遠程API來管理創建docker。在CentOS7上使用systemd管理服務即可。>systemctl restart docker 設置開機啟動systemctl enable docker 2、docker客戶端docker這個命令就是docker的客戶端,當然也有其他工具
  • Docker 創建你自己的橋接網絡
    下面的例子顯示了如何創建一個橋接網絡: $ docker network create -d bridge my_bridge 參數 -d 用於告訴 Docker 在新的網絡中使用 橋接(bridge) 驅動。