中文字幕精品亚洲无线码二区,国产黄a三级三级三级看三级,亚洲七七久久桃花影院,丰满少妇被猛烈进入,国产小视频在线观看网站

docker~swarm搭建docker高可(ke)用集群

回到目錄

Swarm概念

  Swarm是Docker公司推出的用來管理docker集群,它將一群Docker宿主機變成一個單一的,虛擬的主機。Swarm使用標準的Docker API接口作為其前端訪問入口,換言之,各種形式的Docker Client(docker client in Go, docker_py, docker等)均可以直接與Swarm通信。Swarm幾乎全部用go語言來完成開發,Swarm0.2發布,相比0.1版本,0.2版本增加了一個新的策略來調度集群中的容器,使得在可用的節點上傳播它們,以及支持更多的Docker命令以及集群驅動。
  Swarm deamon只(zhi)是一個調(diao)度器(qi)(Scheduler)加路由器(qi)(router),Swarm自己不(bu)運行(xing)容器(qi),它只(zhi)是接受docker客戶端發送過來的(de)請(qing)求,調(diao)度適合的(de)節(jie)點來運行(xing)容器(qi),這(zhe)意(yi)味著,即(ji)使Swarm由于某些原因(yin)掛掉了(le),集(ji)群中的(de)節(jie)點也(ye)會照常運行(xing),當Swarm重新(xin)恢(hui)復運行(xing)之后,它會收(shou)集(ji)重建集(ji)群信(xin)息.

Swarm結構圖

Swarm的基本命令

docker node 用來顯示集群的節點,默認(ren)建立時只有一(yi)個(ge)節點,當然也(ye)就談不上高可(ke)用了,可(ke)以使用docker node --help來查看所有node參(can)數

集群初始(shi)化 docker swarm init 

當已經被初始(shi)化后,就不能重(zhong)新執(zhi)行這個操作了,使用docker node ls 來查看(kan)剛建立的集群(qun)

集群中的管(guan)理節(jie)點(dian)和工作節(jie)點(dian)功能圖(tu)

 

添加(jia)管理(li)節點 docker swarm join

Docker Swarm 命(ming)令中還需要添(tian)加一些選項(xiang):

* join:表明(ming)一(yi)個新的節點將被添加進 Swarm

* –manager:表明節點(dian)的性質(zhi)(manager vs worker)

* –listen-addr:讓一(yi)個(ge)新添加的(de)節(jie)點可以訪問(wen) Swarm 內的(de)其他節(jie)點

* 最后(hou)的(de)參數(shu)就是第(di)一(yi)管理節點的(de)地址(即這一(yi)命令將(jiang)被送到(dao)的(de)那個節點)

注意:由于 –auto-accept manager 選項會在 Swarm 初始化的過程中被提供,所以第二管理節點會被自動接受。如果沒有這一選項,那么第二管理節點需要被第一管理節點手動接受。

$ MANAGER2_IP=$(docker-machine ip manager2)
docker-machine ssh manager2 docker swarm join --manager --listen-addr $MANAGER2_IP:2377 $MANAGER1_IP:2377

Swarn部署時使用的(de)腳本,來自網(wang)絡

下面是一小段用來創建 Docker 主機并部署 Swarm 的 Shell 腳本。當然了,管理/工作節點的數字都是可以隨意改動的。
注意:創建兩個管(guan)理節點和(he)兩個工(gong)作(zuo)節點,僅僅是用(yong)來作(zuo)示范。在工(gong)業生產中(zhong),我們可能需要在集群(qun)里搭建 3 個管(guan)理節點和(he) 5 個工(gong)作(zuo)節點。

# Define the number of managers/workers
MANAGER=3
WORKER=5

# Create the Docker hosts
for i in $(seq 1 $MANAGER); do docker-machine create --driver virtualbox manager$i; done
for i in $(seq 1 $WORKER); do docker-machine create --driver virtualbox worker$i; done

# Init the swarm
docker-machine ssh manager1 docker swarm init --auto-accept manager --auto-accept worker --listen-addr $(docker-machine ip manager1):2377

# Add additional manager(s)
for i in $(seq 2 $MANAGER); do docker-machine ssh manager$i docker swarm join --manager --listen-addr $(docker-machine ip manager$i):2377 $(docker-machine ip manager1):2377; done

# Add workers
for i in $(seq 1 $WORKER); do docker-machine ssh worker$i docker swarm join --listen-addr $(docker-machine ip worker$i):2377 $(docker-machine ip manager1):2377; done

對于上面文章(zhang)中,只提到(dao)了集群,而沒有談到(dao)如何去使用,在建立集群后,服(fu)務的部(bu)署我們可以用

docker stack deploy  -c test.yml test

下(xia)面給出(chu)自(zi)己寫的一個(ge)服務,版本(ben)3的

version: "3"

services:
  loggerapi:
    image: logger.api
    build:
      context: ./src/Logger.Api
      dockerfile: Dockerfile
    ports:
      - "5000:80"
    networks:
      - ingress

 loggermanager:
    image: logger.manager
    build:
      context: ./src/Logger.Manager
      dockerfile: Dockerfile
    ports:
      - "5050:80"
    networks:
      - ingress

networks:
  ingress:

這里有個服務要注意,服務的名稱一定不能有點,如logger.manager這是錯誤的!

來建(jian)立一個服(fu)務,同時可以(yi)使用docker service來查看(kan)已(yi)經運行(xing)的服(fu)務!

還有一點要注意,yml在進行(xing)(xing)v3版后,不(bu)再支持build,也就是說,你需(xu)要先把鏡像建立好才行(xing)(xing)!

 

回到目錄

 

posted @ 2017-07-27 10:12  張占嶺  閱讀(8140)  評論(0)    收藏  舉報