Docker swarm 集群快速安裝

wuxqing 8年前發布 | 17K 次閱讀 Docker Swarm

一、集群機器準備

1、本文采用了4臺服務器

安裝swarm集群對服務器沒要求,如果只是做練習虛擬機也行。

2、ip地址規劃

192.168.56.101(主節點) 
192.168.56.102 
192.168.56.103 
192.168.56.104

3、系統要求

本文采用CentOS 7.2(CentOS 6估計要升級內核),其他發行版也可以。

三、配置docker

在使用 swarm 管理集群前,需要讓集群中所有的節點的 docker 服務支持遠程訪問。

修改/usr/lib/systemd/system/docker.service 
在ExecStart=/usr/bin/docker daemon后邊加上

-H 0.0.0.0:2375 -H unix:///var/run/docker.sock –bip=172.11.0.1/24’

注意: 
每臺docker節點的–bip要不一樣。

四、安裝與配置Consul

Consul是一個支持多數據中心分布式高可用的服務發現和配置共享的服務軟件,本文用于保存集群中的一些配置信息。

1、主節點啟動Consul服務

docker run -d \
    -p 8300:8300 \
    -p 8301:8301 \
    -p 8301:8301/udp \
    -p 8302:8302 \
    -p 8302:8302/udp \
    -p 8400:8400 \
    -p 8500:8500 \
    -p 53:53 \
    -p 53:53/udp \
    -h consul-server \
    --restart=always \
    --name=consul_server progrium/consul -server -bootstrap -ui-dir=/ui -advertise 192.168.56.101 -client 0.0.0.0

參數解釋:

-p 8400:8400 映射 consul的 rpc 端口 
-p 8500:8500 映射consul的 UI管理端口,這樣方便我們使用 UI 界面. 
-p 53:53/udp 綁定udp 端口(53是默認 DNS端口)在 docker0 bridge 地址上. 
-advertise 192.168.56.101 服務對外公布的 IP,必須設置為主機ip 
-client 0.0.0.0 consul 監聽的地址,缺省是localhost.

2、從節點啟動Consul

每個從節點執行以下命令 
注意: 
每個主機僅1條(ip地址不同)

docker run -d \
   -p 8300:8300 \
   -p 8301:8301 \
   -p 8301:8301/udp \
   -p 8302:8302 \
   -p 8302:8302/udp \
   -p 8400:8400 \
   -p 8500:8500 \
   -h consul-node-102 \
    --restart=always \
   --name=consul progrium/consul -server -join 192.168.56.101 -advertise 192.168.56.102 -client 0.0.0.0
docker run -d \
   -p 8300:8300 \
   -p 8301:8301 \
   -p 8301:8301/udp \
   -p 8302:8302 \
   -p 8302:8302/udp \
   -p 8400:8400 \
   -p 8500:8500 \
   -h consul-node-103 \
    --restart=always \
   --name=consul progrium/consul -server -join 192.168.56.101 -advertise 192.168.56.103 -client 0.0.0.0
docker run -d \
   -p 8300:8300 \
   -p 8301:8301 \
   -p 8301:8301/udp \
   -p 8302:8302 \
   -p 8302:8302/udp \
   -p 8400:8400 \
   -p 8500:8500 \
   -h consul-node-104 \
    --restart=always \
   --name=consul progrium/consul -server -join 192.168.56.101 -advertise 192.168.56.104 -client 0.0.0.0

五、安裝與配置docker swarm集群

1、主節點啟動swarm manage

docker run -d -p 2376:2375 --restart=always --name swarm-manager swarm:latest manage consul://192.168.56.101:8500

2、在每臺需要加入swarm集群的docker主機中運行swarm agent

每個從節點執行以下命令 
注意: 
每個主機僅1條(ip地址不同)

docker run -d --restart=always --name swarm-agent swarm:latest join --addr 192.168.56.102:2375  consul://192.168.56.101:8500
docker run -d --restart=always --name swarm-agent swarm:latest join --addr 192.168.56.103:2375  consul://192.168.56.101:8500
docker run -d --restart=always --name swarm-agent swarm:latest join --addr 192.168.56.104:2375  consul://192.168.56.101:8500

3、查看集群信息

docker -H 192.168.56.101:2376 info 
以下是示例數據,每個集群的信息會不一樣。

Containers: 22
 Running: 11
 Paused: 0
 Stopped: 11
Images: 21
Server Version: swarm/1.2.2
Role: primary
Strategy: spread
Filters: health, port, containerslots, dependency, affinity, constraint
Nodes: 3
 centos72-2: 192.168.56.102:2375
  └ ID: HV4M:QDFT:IMN2:KJWG:B64L:V5H3:F53E:DM2N:32AD:KU4M:2SRX:ZNKG
  └ Status: Healthy
  └ Containers: 4
  └ Reserved CPUs: 0 / 1
  └ Reserved Memory: 0 B / 1.017 GiB
  └ Labels: executiondriver=, kernelversion=4.4.10-1.el7.elrepo.x86_64, operatingsystem=CentOS Linux 7 (Core), storagedriver=devicemapper
  └ Error: (none)
  └ UpdatedAt: 2016-09-21T01:58:50Z
  └ ServerVersion: 1.11.1
 centos72-3: 192.168.56.103:2375
  └ ID: OI3A:J7D3:5RBL:ELDG:PK6T:BDYV:G76M:WTVI:XCG5:D27F:3MT5:MLGS
  └ Status: Healthy
  └ Containers: 8
  └ Reserved CPUs: 0 / 1
  └ Reserved Memory: 0 B / 1.017 GiB
  └ Labels: executiondriver=, kernelversion=4.4.10-1.el7.elrepo.x86_64, operatingsystem=CentOS Linux 7 (Core), storagedriver=devicemapper
  └ Error: (none)
  └ UpdatedAt: 2016-09-21T01:59:10Z
  └ ServerVersion: 1.11.1
 centos72-4: 192.168.56.104:2375
  └ ID: RZXT:JDJM:NZJC:QVCP:MTWQ:JMXX:2FD6:SZBO:WNYK:AWNY:YRHY:ITCV
  └ Status: Healthy
  └ Containers: 10
  └ Reserved CPUs: 0 / 1
  └ Reserved Memory: 0 B / 1.017 GiB
  └ Labels: executiondriver=, kernelversion=4.4.10-1.el7.elrepo.x86_64, operatingsystem=CentOS Linux 7 (Core), storagedriver=devicemapper
  └ Error: (none)
  └ UpdatedAt: 2016-09-21T01:58:57Z
  └ ServerVersion: 1.11.1
Plugins: 
 Volume: 
 Network: 
Kernel Version: 4.4.10-1.el7.elrepo.x86_64
Operating System: linux
Architecture: amd64
Number of Docker Hooks: 0
CPUs: 3
Total Memory: 3.052 GiB
Name: 2f1bb563a4de
Registries: 

4、如果docker info 出現Error: ID duplicated.

刪掉/etc/docker/key.json文件,然后重啟docker服務。虛擬機里面做測試,如果虛擬機鏡像是復制的,一般就會出現這個問題

5、查看集群內的容器

docker -H 192.168.56.101:2376 ps -a

六、安裝shipyard(可選)

shipyard是一個開源的docker管理平臺,支持docker集群管理

1、主節點啟動rethinkdb

docker run -d --restart=always --name shipyard-rethinkdb rethinkdb

2、主節點啟動shipyard

docker run -d --restart=always --name shipyard --link shipyard-rethinkdb:rethinkdb --link swarm-manager:swarm -p 8080:8080 shipyard/shipyard:latest server --rethinkdb-addr rethinkdb:28015 -d tcp://swarm:2375

3、默認賬戶:admin, 密碼:shipyard

七、安裝Registrator(可選)

registrator 是基于 docker 的 sock 文件來做服務發現的一個第三方的方案

每個從節點執行以下命令 
注意: 
每個主機僅1條(ip地址不同)

docker run -d --restart=always --privileged=true --name=registrator --net=host -v /var/run/docker.sock:/tmp/docker.sock gliderlabs/registrator -ip 192.168.56.102 consul://192.168.56.101:8500
docker run -d --restart=always --privileged=true --name=registrator --net=host -v /var/run/docker.sock:/tmp/docker.sock gliderlabs/registrator -ip 192.168.56.103 consul://192.168.56.101:8500
docker run -d --restart=always --privileged=true --name=registrator --net=host -v /var/run/docker.sock:/tmp/docker.sock gliderlabs/registrator -ip 192.168.56.104 consul://192.168.56.101:8500

參數解釋:

-v /var/run/docker.sock:/tmp/docker.sock 映射 docker 的 socket 到 container 中的對應位置, 這樣 registration 就能監控有哪些服務啟動了。 
-ip registration 所屬的主機 IP, 一定要設置此屬性, 否則服務IP會顯示為127.0.0.1 
consul://192.168.56.101:8500 consul 服務的地址

本站原創,轉載時保留以下信息:

本文轉自:深度開源(open-open.com)

原文標題:Docker swarm 集群快速安裝

原文地址:http://www.baiduhome.net/lib/view/open1474425365773.html

 本文由用戶 wuxqing 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!