您的位置:首页 > 运维架构 > Docker

在ubuntu上使用swarm搭建docker集群

2016-08-22 09:05 1171 查看
操作系统:Ubuntu 16.04 LTS

swarm manager: 192.168.2.46 swarm集群的管理机, 简称管理机

swarm node1: 192.168.2.47 swarm集群的节点机1, 简称节点机1

swarm node2: 192.168.2.48 swarm集群的节点机2, 简称节点机2

swarm node3: 192.168.2.49 swarm集群的节点机3, 简称节点机3

注意: 必须确保节点机的hostname不相同。

一、安装docker

1、添加gpg公钥

$ sudo apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys F76221572C52609D

2、添加docker源

$ sudo sh -c "echo deb https://apt.dockerproject.org/repo ubuntu-xenial main > /etc/apt/sources.list.d/docker.list"

3、更新并安装

$sudo apt update

$sudo apt install docker-engine

4、查看docker版本,检查是否正确安装

$docker --version

显示如下信息,说明安装正确。版本号会有不同。

Docker version 1.11.1, build 5604cbe

5、配置docker并重启

把集群中所有的节点的 docker daemon 的监听方式更改为0.0.0.0:2375。

$sudo vim /lib/systemd/system/docker.service

修改ExecStart项为如下:

ExecStart=/usr/bin/docker daemon -H 0.0.0.0:2375 -H unix:///var/run/docker.sock

重新载入配置,使修改生效。

$sudo systemctl daemon-reload

重启docker。

$sudo systemctl restart docker

查看是否修改成功。

$ps aux | grep "docker"

出现如下信息,表明修改成功。

root 2854 2.8 0.1 561364 38104 ? Ssl 19:15 0:00 /usr/bin/docker daemon -H 0.0.0.0:2375 -H unix:///var/run/docker.sock

二、安装swarm

1、拉取swarm镜像

$ docker pull swarm

显示如下信息,说明拉取成功。(查看最后一行)

Using default tag: latest

latest: Pulling from library/swarm

dd2ca02feeef: Pull complete 

8e8ea52d4475: Pull complete 

397cd9ffad59: Pull complete 

a3ed95caeb02: Pull complete 

Digest: sha256:69363272443f4080e0623e78ced41bf38273535ee7f422b26bbc555db2b5d4a4

Status: Downloaded newer image for swarm:latest

三、搭建集群

1、创建集群token

在任何一台机器上执行,获取全球唯一的 token,作为集群唯一标识。

$docker run --rm swarm create

ae44ab899a758522cf267c0e7904f4ab

记住这个token。

2、加入集群

在节点机1上执行:

$docker run -d swarm join -addr=192.168.2.47:2375 token://ae44ab899a758522cf267c0e7904f4ab

在节点机2上执行:

$docker run -d swarm join -addr=192.168.2.48:2375 token://ae44ab899a758522cf267c0e7904f4ab

在节点机3上执行:

$docker run -d swarm join -addr=192.168.2.49:2375 token://ae44ab899a758522cf267c0e7904f4ab

3、启动管理机

在管理机上执行:

$docker run -d -p 2376:2375 swarm manage token://ae44ab899a758522cf267c0e7904f4ab

4、确认集群搭建是否成功

在管理机上执行:

$docker ps -a

显示如下信息,表明管理机启动成功。

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

2f34818bb03f swarm "/swarm manage token:" 2 minutes ago Up 2 minutes 0.0.0.0:2376->2375/tcp backstabbing_goldberg

在节点机上执行:

$docker ps -a

显示如下信息,表明节点机启动成功。

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

d0104264c0f3 swarm "/swarm join -addr=19" 5 minutes ago Up 5 minutes 2375/tcp jovial_lumiere

查看集群所有节点信息。在任何一台机器上执行:

$docker run --rm swarm list token://ae44ab899a758522cf267c0e7904f4ab

显示如下信息,表明集群创建成功。

192.168.2.49:2375

192.168.2.48:2375

192.168.2.47:2375

查看集群详细信息。在任何一台机器上执行:

$docker -H 192.168.2.46:2376 info

显示如下信息:

Containers: 3

Running: 3

Paused: 0

Stopped: 0

Images: 3

Server Version: swarm/1.2.1

Role: primary

Strategy: spread

Filters: health, port, containerslots, dependency, affinity, constraint

Nodes: 3

docker006: 192.168.2.47:2375

└ ID: 2LQB:JOJN:NOJ6:2EDA:WEZL:RZZ7:J4Z5:IWKD:HAO4:PHIO:SS67:6N6M

└ Status: Healthy

└ Containers: 1

└ Reserved CPUs: 0 / 4

└ Reserved Memory: 0 B / 20.59 GiB

└ Labels: executiondriver=, kernelversion=4.4.0-21-generic, operatingsystem=Ubuntu 16.04 LTS, storagedriver=aufs

└ Error: (none)

└ UpdatedAt: 2016-05-06T11:28:06Z

└ ServerVersion: 1.11.1

docker007: 192.168.2.48:2375

└ ID: FDND:TTAN:2LPV:D2EW:R4AQ:7VWV:CLBX:7MWH:2553:XCK7:Z26X:T4JK

└ Status: Healthy

└ Containers: 1

└ Reserved CPUs: 0 / 4

└ Reserved Memory: 0 B / 20.59 GiB

└ Labels: executiondriver=, kernelversion=4.4.0-21-generic, operatingsystem=Ubuntu 16.04 LTS, storagedriver=aufs

└ Error: (none)

└ UpdatedAt: 2016-05-06T11:28:20Z

└ ServerVersion: 1.11.1

docker008: 192.168.2.49:2375

└ ID: HRVI:Y7NS:ZKAX:3EP3:REQR:YKTM:BDYD:76OK:WMCI:MCX7:4C3C:64JA

└ Status: Healthy

└ Containers: 1

└ Reserved CPUs: 0 / 4

└ Reserved Memory: 0 B / 20.59 GiB

└ Labels: executiondriver=, kernelversion=4.4.0-21-generic, operatingsystem=Ubuntu 16.04 LTS, storagedriver=aufs

└ Error: (none)

└ UpdatedAt: 2016-05-06T11:28:22Z

└ ServerVersion: 1.11.1

Plugins: 

Volume: 

Network: 

Kernel Version: 4.4.0-21-generic

Operating System: linux

Architecture: amd64

CPUs: 12

Total Memory: 61.77 GiB

Name: 2f34818bb03f

Docker Root Dir: 

Debug mode (client): false

Debug mode (server): false

WARNING: No kernel memory limit support

解读:有三个节点。列出了每个节点名、配置信息等。

至此,在ubuntu16.04上,通过swarm搭建docker集群完成!

四、参考资料

1、https://docs.docker.com/engine/admin/systemd/

2、https://yeasy.gitbooks.io/docker_practice/content/swarm/usage.html

3、https://blog.docker.com/2015/07/new-apt-and-yum-repos/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: