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

2020-12-24 資料庫及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 Swarm 使用
    Docker Swarm 提供了標準的 Docker API,所有任何已經與 Docker 守護程序通信的工具都可以使用 Swarm 輕鬆地擴展到多個主機。如下圖所示,swarm 集群由管理節點(manager)和工作節點(work node)構成。
  • 雲計算核心技術Docker教程:Docker容器使用
    例如我們要查看 docker stats 指令的具體使用方法:命令如下:$ docker stats --help如果我們本地沒有 ubuntu 鏡像,我們可以使用 docker pull 命令來載入 ubuntu 鏡像:
  • Docker 入門教程
    它能讓你將運行環境和配置放在代碼匯總然後部署, 同一個Docker的配置可以在不同的環境環境中使用, 這樣就降低了硬體要求和應用環境之間耦合度.2.代碼流水線管理代碼從開發者的機器到最終在生產環境上的部署, 需要經過很多的中堅環境.
  • Swarm容器編排1:Swarm基礎介紹及Demo演示
    本文是Swarm容器編排開篇之文,主要了解一些Swarm的基本知識,並分別利用standalone Swarm(Swarm v1)和Swarm mode(Swarm v2)進行Demo演示學習。實驗證明生產環境可用開箱即用,用戶不需要專門修改Docker的鏡像和配置就可以直接大規模部署易於搭建和使用活躍的社區Swarm
  • 智匯華雲|Docker容器網絡解析
    作為最常規的模式,bridge模式已經可以滿足Docker容器最基本的使用需求了。然而其與外界通信使用NAT,增加了通信的複雜性,在複雜場景下使用會有諸多限制。Docker容器中的進程處於宿主機的網絡環境中,相當於Docker容器和宿主機共同用一個network namespace,使用宿主機的網卡、IP和埠等信息。但是,容器其他方面,如文件系統、進程列表等還是和宿主機隔離的。host模式很好地解決了容器與外界通信的地址轉換問題,可以直接使用宿主機的IP進行通信,不存在虛擬化網絡帶來的額外性能負擔。
  • 雲計算核心技術Docker教程:Docker多階段構建
    多階段構建是一項新功能,需要守護程序和客戶端上使用Docker 17.05或更高版本。多級構建對於在優化Dockerfile的同時使其易於閱讀和維護的任何人都非常有用。
  • 30分鐘帶你了解Web工程師必知的Docker知識
    本文主要會介紹Docker的基礎知識和應用領域,並通過實際部署一個web項目來帶大家了解Docker的使用方式。作為一名前端工程師,為什麼要學習Docker呢?做過B端系統或有Saas系統開發經驗的朋友也許會清楚其中的繁瑣,為了客戶安全和私有化往往需要研發人員給企業配置和部署獨立的Web應用,如果你有上百家客戶上千家客戶,我們一個個部署顯然是效率極低的,而且不能保證環境的一致性和穩定性,因為一旦我們的Web系統使用的環境或者包更新了,應用很可能不能正常Work,這種情況下採用Docker容器化技術可以很好的解決這一問題。
  • 雲計算核心技術Docker教程:Docker容器中開啟SSH服務
    在docker容器中我們不止需要通過宿主機進行登錄對容器進行修改,我還有事還希望直接通過SSH登錄到docker容器中進行一些修改,這樣的話我們需要將容器中ssh埠映射到宿主機,然後再容器中安裝openssh服務。
  • Inko 現在已支持在 Docker Hub 使用
    Inko現在可在Docker Hub上使用發表於: 2020年10月25日
  • 雲計算核心技術Docker教程:Docker 守護進程dockerd默認的CGROUP父級
    如果未設置此選項,則默認為/docker對於fs cgroup驅動程序和system.slicesystemd cgroup驅動程序。如果cgroup的前導斜槓(/),則在根cgroup下創建cgroup,否則在守護程序cgroup下創建cgroup。
  • 推薦給IT新手的11個Docker免費上手項目
    容器是完全使用沙箱機制,相互之間不會有任何接口。該項目基於 Docker 鏡像發布部署,方便安裝和升級。支持運維常見功能:主機管理、任務計劃管理、發布部署、監控告警等使用該工具可以方便的通過界面管理 docker 不用再記那些命令。安裝命令:
  • 雲計算核心技術Docker教程: events/inspect命令詳解
    在docker客戶端命令行中我們可以使用events命令從伺服器獲取實時事件便於查找調試問題,使用inspect命令獲取容器或鏡像的元數據。示例docker events : 從伺服器獲取實時事件語法docker events [OPTIONS]OPTIONS說明:-f :根據條件過濾事件;--since :從指定的時間戳後顯示所有事件;--until :流水時間顯示到指定的時間為止;例如,顯示docker 2020
  • 雲計算核心技術Docker教程:events/inspect命令詳解
    在docker客戶端命令行中我們可以使用events命令從伺服器獲取實時事件便於查找調試問題,使用inspect命令獲取容器或鏡像的元數據。示例docker events : 從伺服器獲取實時事件語法docker events [OPTIONS]OPTIONS說明:-f :根據條件過濾事件;
  • 不用Docker也能構建容器的4種方法
    Podman和buildah組合——由RedHat/IBM使用他們自己的OSS工具鏈來生成OCI鏡像。Podman是無守護進程和無根的,但最後仍然需要掛載文件系統以及使用UNIX套接字。pouch——來自阿里巴巴,被標榜為「高效的企業級容器引擎」。
  • Docker命令行入門大全:這18條,你不得不知
    舉個例子,docker container run my_app 是用於構建和運行名為my_app的容器的命令。在本文示例中,我將使用名稱my_container來引用通用容器。同理,my_image、my_tag也是如此。我將單獨提供命令和通用標誌。前面有兩個破折號的標誌是標誌的全名。帶有一個破折號的標誌是完整標誌名稱的縮寫。
  • .Net 微服務實戰之 CI/CD,看這一篇就夠了
    一共三臺伺服器,每臺伺服器都裝了 Docker,Server B 是docker swarm的Manger角色,A和C 是worker。編輯所有需要 docker registry 使用的節點的 daemon.json 文件,確保能正常訪問。
  • 利用雲伺服器搭建解鎖免費聽網易雲灰歌曲的代理-docker版
    註:本教程僅作為學習參考使用,請支持正版一、最近在GitHub上發現一個有趣的項目:UnblockNeteaseMusic,可以解鎖網易雲灰色歌曲,利用docker超簡單搭建。二、搭建步驟1、 yum install docker -y ###安裝docker2 、 systemctl start docker ####啟動docker3、systemctl enable docker #########默認開啟
  • 【GITC】搜狐雲臺陳偉:基於docker的自動化運維管理架構與實踐
    4. docker的資源控制和自包含性綜合起來,成為了一個很有前景的功能,更加適合使用動態的資源調度的方式來部署服務。  Docker帶來曙光的同時,陳偉表示,docker作為一個新的技術,仍然存在以下問題:  1. 目前還沒看到十分令人滿意的網絡模式  2. 傳統應用不一定能很好地遷移到docker中  3.
  • Kubernetes決定棄用Docker,到底會影響到誰?
    開發者和企業會受到什麼樣到影響?近幾年,Kubernetes 已經成為自有機房、雲上廣泛使用的容器編排方案,最廣泛的使用方式是 Kubernetes+Docker。從 DevOps 人員的角度,一面用 kubctl 命令、k8s API 來操作集群,一面在單機用 Docker 命令來管理鏡像、運行鏡像。
  • docker-9:使用ambari-2.7.3部署大數據集群—兩節點demo
    >(6).資源耗費附錄1.ambari相關的yum repo附錄2.參考文章(1).docker部署ambarigit clone https://github.com/hepyu/docker-ambari-2.7.git