頻道欄目
首頁 > 資訊 > 云計算 > 正文

docker之DockerSwarm的集群環境搭建教程

19-02-19        來源:[db:作者]  
收藏   我要投稿

上次了解了docker Swarm,這次一起動手操作,搭建swarm的集群環境,一起測試下三種環境下的服務發現和負載均衡,一個自定義下的overlay下的網絡發現,一個Ingress下的服務發現,一個是Ingress+link下的,跟上次Mesos一樣我們先建立三臺服務虛擬機。 源碼:https://github.com/limingios/msA-docker swarm分支

『高級篇』docker之DockerSwarm的集群環境搭建(28)

server01

docker運行狀態,切換到root用戶

docker version

『高級篇』docker之DockerSwarm的集群環境搭建(28)

默認情況下network的結構

docker network ls

『高級篇』docker之DockerSwarm的集群環境搭建(28)

查看ip地址

ifconfig

『高級篇』docker之DockerSwarm的集群環境搭建(28)

設置manager,初始化manager節點,添加一個work在swarm上,運行下面的命令可以添加work,加入到這個manage中。

docker swarm init --advertise-addr 192.168.66.101

『高級篇』docker之DockerSwarm的集群環境搭建(28)

server02

執行添加到manager的命令。

『高級篇』docker之DockerSwarm的集群環境搭建(28)

server03

執行添加到manager的命令。

『高級篇』docker之DockerSwarm的集群環境搭建(28)

在server01中添加了server02 和server03的work后,查看網絡

之前是只有三個,一個bridge,一個host,一個none;多了個docker_gwbridge,一個ingress。

ingress的overlay網絡,這個網絡需要借助docker-gwbridge這個網橋進行連接。如果是

docker network ls

『高級篇』docker之DockerSwarm的集群環境搭建(28)

docker swarm的如何高可用

目前的manager只有一個,如果manager節點掛了,這個集群也就掛了。docker swarm 有高可用的狀態,就是將server02 和server03 ,manager節點本身也可以提供服務運行的狀態,即便我們三個節點都是manager也是可以運行服務的,F在把三個節點都變成manager節點試一下。

docker node ls

『高級篇』docker之DockerSwarm的集群環境搭建(28)

升級server02成為manager。變成了Reachable,這個跟zookeeper的原理是一樣的,當一個leader掛了之后,通過選取可以產生一個新的leader。

docker node promote docker-swarm-02
docker node promote docker-swarm-03

『高級篇』docker之DockerSwarm的集群環境搭建(28)

『高級篇』docker之DockerSwarm的集群環境搭建(28)

PS:以上就完成高可用的docker swarm的集群環境,其實真心比其他的簡單。

測試集群環境

小的鏡像測試

創建一個小的鏡像,完成ping www.baidu.com

docker service create --name test1 alpine ping www.baidu.com
docker service ls

『高級篇』docker之DockerSwarm的集群環境搭建(28)

``` 查看日志
docker service logs test1

![](https://upload-images.jianshu.io/upload_images/11223715-f6ac8c36146450df.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

* nginx的環境測試
``` bash
docker service create --name nginx nginx
docker service ls

『高級篇』docker之DockerSwarm的集群環境搭建(28)

曾經有老鐵問我,如果是容器創建了需要修改創建時候的配置怎么辦,我告訴他想給當前容器做個tag打成一個鏡像A,然后通過鏡像A,生成新的一個新的容器在run里增加你的配置,記住前提是要把原來的容器刪除。

對于docker swarm中的service 難道也需要刪除?其實不需要直接通過docker service update來完成。

docker service ls
docker service update --publish-add 8080:80 nginx
docker service ls

『高級篇』docker之DockerSwarm的集群環境搭建(28)

現在的nginx 太少了只有1個,如果掛了,還要打電話讓人解決。其實還是有辦法的。多起幾個?梢远嗟纫粫,時間就不緊急了,吃了飯再過去。

docker service scale nginx=3
docker service ls

『高級篇』docker之DockerSwarm的集群環境搭建(28)

『高級篇』docker之DockerSwarm的集群環境搭建(28)

默認使用的Ingress下的overlay網絡,兩個service之前是無法通過service的名稱進行訪問的?梢栽囋。

自定義網絡添加到docker swarm中。

刪除剛才創建nginx 和test1
docker service rm nginx test1

『高級篇』docker之DockerSwarm的集群環境搭建(28)

創建網絡

docker network create -d overlay idig8-overlay

『高級篇』docker之DockerSwarm的集群環境搭建(28)

創建一個service指定網絡

nginx

docker service create --network idig8-overlay --name nginx -p 8080:80 nginx

alpine

 docker service create --network idig8-overlay --name alpine alpine ping www.baidu.com

『高級篇』docker之DockerSwarm的集群環境搭建(28)

查看alpine所在的機器,進入容器,ping nginx

查看是在server02這臺機器上。

docker service ps alpine

『高級篇』docker之DockerSwarm的集群環境搭建(28)

進入server02機器,ping 容器名稱是nginx的 發現可以ping通

docker ps
docker exec -it 387dd735de74 sh
ping nginx

『高級篇』docker之DockerSwarm的集群環境搭建(28)

『高級篇』docker之DockerSwarm的集群環境搭建(28)

PS:當前的網絡Ingress,容器之間的訪問方式可以通過名字訪問。在自定義的網絡下swarm每個service,都創建一個dnsadress,一定要是自定義的overlay的。

dnsrr的方式

描述是參數不對,在dnsrr下不能開放端口的,他們之間是沖突的。dnsrr是給只通過名字訪問。如果不加入overlay的網絡它就是獨立的。

docker service create --name nginx-b --endpoint-mode dnsrr -p  8090:80 nginx

『高級篇』docker之DockerSwarm的集群環境搭建(28)

如果想dnsrr網絡可以被訪問,可以針對這個service增加overlay的網絡

docker service updata --network-add idig8-overlay nginx-b
docker stack

單機模式下,我們可以使用 Docker Compose 來編排多個服務,而在Docker Swarm 通過 Docker Stack 我們只需對已有的 docker-compose.yml 配置文件稍加改造就可以完成 Docker 集群環境下的多服務編排。

version: "3.4"
services:
  alpine:
    image: alpine
    command:
      - "ping"
      - "www.baidu.com"
    networks:
      - "idig8-overlay"
    deploy:
      replicas: 2
      restart_policy:
        condition: on-failure
      resources:
        limits:
          cpus: "0.1"
          memory: 50M
    depends_on:
      - nginx
  nginx:
    image: nginx
    networks:
      - "idig8-overlay"
    ports:
      - "8080:80"
networks:
  idig8-overlay:
    external: true

『高級篇』docker之DockerSwarm的集群環境搭建(28)

查看stack的命令,上邊走的是vip負載均衡的方式而不是dnsrr的方式。

docker stack ls
# -c 文件名 組名
docker stack deploy -c service.yml  test

『高級篇』docker之DockerSwarm的集群環境搭建(28)

『高級篇』docker之DockerSwarm的集群環境搭建(28)

『高級篇』docker之DockerSwarm的集群環境搭建(28)

PS:dockerSwarm的服務發現,負載均衡。

『高級篇』docker之DockerSwarm的集群環境搭建(28)

相關TAG標簽
上一篇:臺積電:絕大多數7nm客戶都會轉向6nm_IT新聞_博客園
下一篇:最后一頁
相關文章
圖文推薦

關于我們 | 聯系我們 | 廣告服務 | 投資合作 | 版權申明 | 在線幫助 | 網站地圖 | 作品發布 | Vip技術培訓 | 舉報中心

版權所有: 紅黑聯盟--致力于做實用的IT技術學習網站

美女MM131爽爽爽毛片