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

2020-12-10 資料庫及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

相關焦點

  • 使用Docker和Docker Compose改善Node.js的開發
    遵循"Coding到老,學習到老,折騰到老"的宗旨,本文我們將介紹將如何結合Node.js與Docker開改善開發人員體驗,包括使用docker build和利用Docker Compose來實現無縫的本地前端開發環境。
  • Docker 入門教程
    它能讓你將運行環境和配置放在代碼匯總然後部署, 同一個Docker的配置可以在不同的環境環境中使用, 這樣就降低了硬體要求和應用環境之間耦合度.2.代碼流水線管理代碼從開發者的機器到最終在生產環境上的部署, 需要經過很多的中堅環境.
  • 雲計算核心技術Docker教程:Docker Compose的restart和rm命令詳解
    Docker-Compose restart命令可以重新啟動所有已停止並正在運行的服務,Docker-Compose rm命令可以刪除已經停止的容器,如果服務在運行,需要先docker-compose stop 停止容器。
  • 數人云勇奪Docker官方組織hackthon比賽第一名
    Docker Hack Day參賽團隊人數為1-3人,需要一起基於Docker相關項目來開發。數人云分布式架構工程師張明鋒、姚雲參加比賽,業務能力極為出眾、經驗非常豐富的他們憑藉自己出色的創意和卓越的實力取得了第一名的好成績。本次活動有11支團隊到達現場(有兩支團隊不辭辛勞特地從上海飛來)。
  • 雲計算核心技術Docker教程:Docker 守護進程dockerd的LCOW選項
    可以使用帶有--storage-opt標誌指定的選項來配置特定的存儲驅動程序 。lcow.globalmode指定守護程序是根據需要實例化實用程序VM實例(建議使用默認值,如果省略則默認),還是使用單個全局實用程序VM(性能更好,但具有安全隱患,不建議用於生產部署)。
  • 雲計算核心技術Docker教程:Docker多階段構建
    多階段構建是一項新功能,需要守護程序和客戶端上使用Docker 17.05或更高版本。多級構建對於在優化Dockerfile的同時使其易於閱讀和維護的任何人都非常有用。
  • 30分鐘帶你了解Web工程師必知的Docker知識
    本文主要會介紹Docker的基礎知識和應用領域,並通過實際部署一個web項目來帶大家了解Docker的使用方式。作為一名前端工程師,為什麼要學習Docker呢?做過B端系統或有Saas系統開發經驗的朋友也許會清楚其中的繁瑣,為了客戶安全和私有化往往需要研發人員給企業配置和部署獨立的Web應用,如果你有上百家客戶上千家客戶,我們一個個部署顯然是效率極低的,而且不能保證環境的一致性和穩定性,因為一旦我們的Web系統使用的環境或者包更新了,應用很可能不能正常Work,這種情況下採用Docker容器化技術可以很好的解決這一問題。
  • 用Jenkins、Docker部署 Serverless
    近日,使用 Serverless 開發了一個應用。其中 CI/CD,是需要考慮的一個問題。這裡用到了 Jenkins 和 Docker。並且 Jenkins Pipeline 運行在容器中。本文將介紹如何使用 Jenkins 和 Docker 構建並部署 Serverless 應用。
  • Docker常用命令就該這麼學!
    容器是完全使用沙箱機制,相互之間不會有任何接口。Docker 是一個用於開發,交付和運行應用程式的開放平臺。Docker 使您能夠將應用程式與基礎架構分開,從而可以快速交付軟體。 藉助 Docker,您可以與管理應用程式相同的方式來管理基礎架構。通過利用 Docker 的方法來快速交付,測試和部署代碼,您可以大大減少編寫代碼和在生產環境中運行代碼之間的延遲。
  • jenkins 容器版安裝docker命令
    jenkins容器版裡docker自動安裝一直沒有成功,也可能是網絡原因,只能手動安裝docker命令,不然無法build和push。由於docker容器內的進程是以普通用戶啟動的,所以進入容器要指定root,不然無法安裝程序。
  • 雲計算核心技術Docker教程:Docker 守護進程dockerd節點發現
    dockerd --cluster-advertise選項指定 此特定守護程序實例在向集群發布自身時應使用的host:port或interface:port組合。遠程主機通過該值訪問守護程序。如果指定接口,請確保它包含實際Docker主機的IP位址。
  • Docker容器固定IP分配詳解
    2021-01-12 11:28:51 來源: 西崑雲 舉報   我們在使用
  • SpringBoot+GitLab+Docker+Jenkins實現持續集成上
    概述本文主要介紹持續集成的搭建方式,採用Docker的方式去搭建Jenkins環境,另外會涉及到SpringBoot和Git等技術。2.類似GitHub,能夠瀏覽原始碼,管理缺陷和注釋,可以管理團隊對倉庫的訪問。4.1.
  • 通過Docker安裝谷歌足球遊戲環境
    開發者在筆記本上編譯測試通過的容器可以批量地在生產環境中部署,包括VMs(虛擬機)、bare metal、OpenStack 集群和其他的基礎應用平臺。簡單來說,谷歌提供了包含安裝足球環境所需的必要環境在一個Docker配置文件中,安裝好Docker後,一條命令就可以創建包含足球環境的整套配置的Docker容器。通過容器可以直接進入安裝好足球環境的「虛擬」系統中。
  • 雲計算核心技術Docker教程:rm/rmi命令詳解
    在docker客戶端命令行中我們可以使用rm刪除一個或多個容器,使用rmi刪除本地一個或多少鏡像。示例:docker rm :刪除一個或多個容器。例如,強制刪除容器 db01、db02,命令如下:$ docker rm -f db01 db02移除容器 nginx01 對容器 db01 的連接,連接名 db:$ docker rm -l db刪除容器
  • 不用Docker也能構建容器的4種方法
    Podman和buildah組合——由RedHat/IBM使用他們自己的OSS工具鏈來生成OCI鏡像。Podman是無守護進程和無根的,但最後仍然需要掛載文件系統以及使用UNIX套接字。pouch——來自阿里巴巴,被標榜為「高效的企業級容器引擎」。
  • NET微服務在Docker下打包部署及運行
    本文將和大家介紹利用ASP.NET Core 3.1搭建的WebAPI服務站點如何使用Docker打包,運行容器並提供外網訪問。六、創建Docker鏡像使用cmd命令提示符運行以下命令docker build -t microservice .
  • 快速製作Redis Docker鏡像
    在國內的鏡像源直接下載壓縮包即可:https://mirrors.aliyun.com/alpine/v3.12/releases/x86_64/alpine-minirootfs-3.12.1-x86_64.tar.gz 當然docker
  • SpringBoot+GitLab+Docker+Jenkins實現持續集成下
    該框架使用了特定的方式來進行配置,從而使開發人員不再需要定義樣板化的配置。通過這種方式,Spring Boot致力於在蓬勃發展的快速應用開發領域(rapid application development)成為領導者。接下來我們來編寫一個最簡單的SpringBoot入門項目。<?
  • 「Mysql」資料庫主從搭建-基於docker
    主從搭建的世界 :)通過Docker搭建主從伺服器首先我們需要拉取docker鏡像,我們使用5.7版本的MySQL:docker pull mysql:5.7然後使用此鏡像啟動容器,這裡需要分別啟動主從兩個容器創建Master(主資料庫):docker run