搭建swarm集群(docker v1.12)-Centos7

目标:在docker v1.12版本搭建swarm集群,熟悉其用法,验证其功能。

环境:

swarm-manager:192.168.12.190,centos7.2

swarm-node01:192.168.12.191,centos7.2

软件版本:

docker:v1.12.0

实施步骤:

1.检查docker版本

#版本要求>= docker v1.12

[root@swarm-manager ~]# docker version

Client:

Version:      1.12.0

API version:  1.24

Go version:  go1.6.3

Git commit:  8eab29e

Built:

OS/Arch:      linux/amd64

Server:

Version:      1.12.0

API version:  1.24

Go version:  go1.6.3

Git commit:  8eab29e

Built:

OS/Arch:      linux/amd64

2.部署swarm

2.1部署manager(12.190)

#初始化manager

[root@swarm-manager ~]# docker swarm init --advertise-addr 192.168.12.190

Swarm initialized: current node (9a8h4zctcf4qb0naylgu5bpf5) is now a manager.

To add a worker to this swarm, run the following command:

docker swarm join \

--token SWMTKN-1-0bm6shp8luiko6yyr8f7g130k5gwfwnynomtu2teer1qhnn1h6-7u6rwvasabu3efhdboo1gxk84 \

192.168.12.190:2377

To add a manager to this swarm, run the following command:

docker swarm join \

--token SWMTKN-1-0bm6shp8luiko6yyr8f7g130k5gwfwnynomtu2teer1qhnn1h6-c0fwiq4dm5x3vgsbsyut2quk7 \

192.168.12.190:2377

#查看

[root@swarm-manager ~]# docker info

....

Swarm: active

NodeID: 9a8h4zctcf4qb0naylgu5bpf5

Is Manager: true

ClusterID: d48nl1v887o9b59b9uoe6hfj1

Managers: 1

Nodes: 1

Orchestration:

Task History Retention Limit: 5

Raft:

Snapshot interval: 10000

Heartbeat tick: 1

Election tick: 3

Dispatcher:

Heartbeat period: 5 seconds

CA configuration:

Expiry duration: 3 months

Node Address: 192.168.12.190

....

[root@swarm-manager ~]# docker node ls

ID                          HOSTNAME      STATUS  AVAILABILITY  MANAGER STATUS

9a8h4zctcf4qb0naylgu5bpf5 *  swarm-manager  Ready  Active        Leader

2.2部署node(12.191)

#添加node

root@swarm-node01 ~]#    docker swarm join \

--token SWMTKN-1-0bm6shp8luiko6yyr8f7g130k5gwfwnynomtu2teer1qhnn1h6-7u6rwvasabu3efhdboo1gxk84 \

192.168.12.190:2377

This node joined a swarm as a worker.

#查看:

[root@swarm-manager ~]# docker node ls

ID                          HOSTNAME      STATUS  AVAILABILITY  MANAGER STATUS

4u80il22c6r9hp9avzqgbe9yf    swarm-node01  Ready  Active

9a8h4zctcf4qb0naylgu5bpf5 *  swarm-manager  Ready  Active        Leader

[root@swarm-manager ~]# docker info

...

Swarm: active

NodeID: 9a8h4zctcf4qb0naylgu5bpf5

Is Manager: true

ClusterID: d48nl1v887o9b59b9uoe6hfj1

Managers: 1

Nodes: 2

....

2.3查看manager和node的token值

可以看到创建manager或者node时需要使用token,使用如下命令可以列出token。

#列出manager的token

[root@swarm-manager ~]# docker swarm join-token manager

To add a manager to this swarm, run the following command:

docker swarm join \

--token SWMTKN-1-0bm6shp8luiko6yyr8f7g130k5gwfwnynomtu2teer1qhnn1h6-c0fwiq4dm5x3vgsbsyut2quk7 \

192.168.12.190:2377

#列出node的token

[root@swarm-manager ~]# docker swarm join-token worker

To add a worker to this swarm, run the following command:

docker swarm join \

--token SWMTKN-1-0bm6shp8luiko6yyr8f7g130k5gwfwnynomtu2teer1qhnn1h6-7u6rwvasabu3efhdboo1gxk84 \

192.168.12.190:2377

3.docker servie的使用

#docker service指令

[root@swarm-manager ~]# docker service -h

....

Commands:

create      Create a new service

inspect    Display detailed information on one or more services

ps          List the tasks of a service

ls          List services

rm          Remove a service

scale      Scale one or multiple services

update      Update a service

#新建nginx

[root@swarm-manager ~]# docker service create --replicas 1 --name nginx00 nginx

b3n4rdl7dctmi99j2bwcr77wx

#查看

[root@swarm-manager ~]# docker service ls

ID            NAME    REPLICAS  IMAGE  COMMAND

b3n4rdl7dctm  nginx00  1/1      nginx

[root@swarm-manager ~]# docker service ps nginx00

ID                        NAME      IMAGE  NODE          DESIRED STATE  CURRENT STATE          ERROR

05488zncdeu4fh4l3partfcjn  nginx00.1  nginx  swarm-node01  Running        Running 3 minutes ago

[root@swarm-node01 ~]# docker ps

CONTAINER ID        IMAGE              COMMAND                  CREATED            STATUS              PORTS              NAMES

342cbfcdfa9b        nginx:latest        "nginx -g 'daemon off"  4 minutes ago      Up 4 minutes        80/tcp, 443/tcp    nginx00.1.05488zncdeu4fh4l3partfcjn

#在线扩容

[root@swarm-manager ~]# docker service scale nginx00=2

nginx00 scaled to 2

[root@swarm-manager ~]# docker service ls

ID            NAME    REPLICAS  IMAGE  COMMAND

b3n4rdl7dctm  nginx00  2/2      nginx

[root@swarm-manager ~]# docker service ps nginx00

ID                        NAME      IMAGE  NODE          DESIRED STATE  CURRENT STATE          ERROR

05488zncdeu4fh4l3partfcjn  nginx00.1  nginx  swarm-node01  Running        Running 11 minutes ago

0m8tj5in3gzzwmkx74chu2u2o  nginx00.2  nginx  swarm-manager  Running        Running 37 seconds ago

#在线缩减

[root@swarm-manager ~]# docker service scale nginx00=0

nginx00 scaled to 0

[root@swarm-manager ~]# docker service ls

ID            NAME    REPLICAS  IMAGE  COMMAND

b3n4rdl7dctm  nginx00  0/0      nginx

[root@swarm-manager ~]# docker service ps nginx00

ID                        NAME      IMAGE  NODE          DESIRED STATE  CURRENT STATE            ERROR

05488zncdeu4fh4l3partfcjn  nginx00.1  nginx  swarm-node01  Shutdown      Shutdown 15 seconds ago

0m8tj5in3gzzwmkx74chu2u2o  nginx00.2  nginx  swarm-manager  Shutdown      Shutdown 14 seconds ago

#删除service

[root@swarm-manager ~]# docker service ls

ID            NAME    REPLICAS  IMAGE  COMMAND

b3n4rdl7dctm  nginx00  1/1      nginx

[root@swarm-manager ~]# docker service rm nginx00

nginx00

[root@swarm-manager ~]# docker service ls

ID  NAME  REPLICAS  IMAGE  COMMAND

#滚动升级

[root@swarm-manager ~]# docker service create --replicas 2 --name tomcat00 tomcat:6

7akh1a171jqdbnumewa8d7iwr

[root@swarm-manager ~]# docker service ls

ID            NAME      REPLICAS  IMAGE    COMMAND

7akh1a171jqd  tomcat00  2/2      tomcat:6

[root@swarm-manager ~]# docker service ps tomcat00

ID                        NAME        IMAGE    NODE          DESIRED STATE  CURRENT STATE              ERROR

dhnfyn0tjjgbi5sefscya6yrc  tomcat00.1  tomcat:6  swarm-manager  Running        Running about a minute ago

0wy7zcpjh17ny1cm7wohx3to6  tomcat00.2  tomcat:6  swarm-node01  Running        Running 20 seconds ago

[root@swarm-manager ~]# docker service update --image tomcat:7 tomcat00

tomcat00

[root@swarm-manager ~]# docker service ls

ID            NAME      REPLICAS  IMAGE    COMMAND

7akh1a171jqd  tomcat00  2/2      tomcat:7

[root@swarm-manager ~]# docker service ps tomcat00

ID                        NAME            IMAGE    NODE          DESIRED STATE  CURRENT STATE                ERROR

cltwnjh8c6l0w5wi8u4rk6pei  tomcat00.1      tomcat:7  swarm-manager  Running        Running 30 seconds ago

dhnfyn0tjjgbi5sefscya6yrc  \_ tomcat00.1  tomcat:6  swarm-manager  Shutdown      Shutdown about a minute ago

bf6l3wi3f3rhj5g59u6zo4n7o  tomcat00.2      tomcat:7  swarm-node01  Running        Running about a minute ago

0wy7zcpjh17ny1cm7wohx3to6  \_ tomcat00.2  tomcat:6  swarm-node01  Shutdown      Shutdown about a minute ago

4.网络

4.1容器间的互通

#默认网桥

[root@swarm-manager ~]# docker network ls

NETWORK ID          NAME                DRIVER              SCOPE

1a7673941702        bridge              bridge              local

6fbc212201c6        docker_gwbridge    bridge              local

f427b46c5246        host                host                local

7fter2mqj5zf        ingress            overlay            swarm

3f067508d7fc        none                null                local

新建service(不带-p参数)使用name=bridge网桥;

新建service(带-p参数)使name=ingress网桥。

容器间互通需使用overlay模式,所以新建一个overlay的网桥。

#新建network[root@swarm-manager ~]# docker network create -d overlay  --subnet 10.254.0.0/16 --gateway  10.254.0.1 test00dvhjl166f2hejlps2rd4a43pq#新建tomcat01和tomcat02[root@swarm-manager ~]# docker service create --replicas 2 --name tomcat01  --network test00 tomcat:72c1qs8gwmlk6w3ujos122m31m[root@swarm-manager ~]# docker service create --replicas 2 --name tomcat02  --network test00 tomcat:77v97krliu5g5lj0awe2kqk2yy[root@swarm-manager ~]# docker service lsID            NAME      REPLICAS  IMAGE    COMMAND2c1qs8gwmlk6  tomcat01  2/2      tomcat:7  7v97krliu5g5  tomcat02  2/2      tomcat:7  [root@swarm-manager ~]# docker service ps tomcat01ID                        NAME        IMAGE    NODE          DESIRED STATE  CURRENT STATE          ERROR69xfelfbq1j684fg3dxhxvbwx  tomcat01.1  tomcat:7  swarm-manager  Running        Running 12 minutes ago  9ul1julgkhox5c00m0dws1adz  tomcat01.2  tomcat:7  swarm-node01  Running        Running 12 minutes ago  [root@swarm-manager ~]# docker service ps tomcat02ID                        NAME        IMAGE    NODE          DESIRED STATE  CURRENT STATE          ERROR1wgmjm1g5lh85yiswwnnvy3i9  tomcat02.1  tomcat:7  swarm-node01  Running        Running 59 seconds ago  6iybysdoove9qtbd0qzgqfnbd  tomcat02.2  tomcat:7  swarm-manager  Running        Running 58 seconds ago  #查看容器信息[root@swarm-manager ~]# docker psCONTAINER ID        IMAGE              COMMAND            CREATED              STATUS              PORTS              NAMESf7468890b410        tomcat:7            "catalina.sh run"  About a minute ago  Up About a minute  8080/tcp            tomcat01.1.69xfelfbq1j684fg3dxhxvbwx[root@swarm-manager ~]# docker exec -ti f7468890b410 bashroot@f7468890b410:/usr/local/tomcat# ip add1: lo:mtu 65536 qdisc noqueue state UNKNOWN group default    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00    inet 127.0.0.1/8 scope host lo      valid_lft forever preferred_lft forever    inet6 ::1/128 scope host        valid_lft forever preferred_lft forever48: eth0@if49:mtu 1450 qdisc noqueue state UP group default    link/ether 02:42:0a:fe:00:03 brd ff:ff:ff:ff:ff:ff    inet 10.254.0.3/16 scope global eth0      valid_lft forever preferred_lft forever    inet 10.254.0.2/32 scope global eth0      valid_lft forever preferred_lft forever    inet6 fe80::42:aff:fefe:3/64 scope link        valid_lft forever preferred_lft forever50: eth1@if51:mtu 1500 qdisc noqueue state UP group default

link/ether 02:42:ac:12:00:03 brd ff:ff:ff:ff:ff:ff

inet 172.18.0.3/16 scope global eth1

valid_lft forever preferred_lft forever

inet6 fe80::42:acff:fe12:3/64 scope link

valid_lft forever preferred_lft forever

root@f7468890b410:/usr/local/tomcat# more /etc/hosts

127.0.0.1      localhost

::1    localhost ip6-localhost ip6-loopback

fe00::0 ip6-localnet

ff00::0 ip6-mcastprefix

ff02::1 ip6-allnodes

ff02::2 ip6-allrouters

10.254.0.3      f7468890b410

172.18.0.3      f7468890b410

root@f7468890b410:/usr/local/tomcat# more /etc/resolv.conf

nameserver 127.0.0.11

options ndots:0

root@f7468890b410:/usr/local/tomcat# ping tomcat01

PING tomcat01 (10.254.0.2): 56 data bytes

64 bytes from 10.254.0.2: icmp_seq=0 ttl=64 time=0.088 ms

root@f7468890b410:/usr/local/tomcat# ping tomcat02

PING tomcat02 (10.254.0.5): 56 data bytes

64 bytes from 10.254.0.5: icmp_seq=0 ttl=64 time=0.259 ms

#swarm集群,使用容器内部的dns解析servie的name

4.2外部访问容器

测试过程中发现,当–replicas=1,只有容器所在宿主机端口可以被访问,不知道是不是swarm集群的bug。

#新建tomcat03 --replicas=1

[root@swarm-manager ~]# docker service ls

ID  NAME  REPLICAS  IMAGE  COMMAND

[root@swarm-manager ~]# docker service create --replicas 1 --name tomcat03 -p 30030:8080 tomcat:7

6yv4xi2pevzn33yiby9l78e7p

[root@swarm-manager ~]# docker service ls

ID            NAME      REPLICAS  IMAGE    COMMAND

6yv4xi2pevzn  tomcat03  1/1      tomcat:7

[root@swarm-manager ~]# docker service ps tomcat03

ID                        NAME        IMAGE    NODE          DESIRED STATE  CURRENT STATE          ERROR

8iox4mb1v0of7igsh631w8v4o  tomcat03.1  tomcat:7  swarm-node01  Running        Running 10 seconds ago

[root@swarm-manager ~]# curl 192.168.12.190:30030

curl: (7) Failed connect to 192.168.12.190:30030; Connection refused

[root@swarm-manager ~]# curl 192.168.12.191:30030

...

....

#scale tomcat03=2,此时因2个宿主机均有容器,测试正常。

[root@swarm-manager ~]# docker service scale tomcat03=2

tomcat03 scaled to 2

[root@swarm-manager ~]# docker service ps tomcat03

ID                        NAME        IMAGE    NODE          DESIRED STATE  CURRENT STATE          ERROR

8iox4mb1v0of7igsh631w8v4o  tomcat03.1  tomcat:7  swarm-node01  Running        Running 5 minutes ago

f3d6n57uyea4vxu4gp6ndgcz8  tomcat03.2  tomcat:7  swarm-manager  Running        Running 29 seconds ago

[root@swarm-manager ~]# curl 192.168.12.190:30030

...

...

[root@swarm-manager ~]# curl 192.168.12.191:30030

...

...

#非swarm主机访问tomcat03,也可以。

[root@k8s-node02 ~]# curl 192.168.12.191:30030

...

...

5.node的管理

#docker node指令

[root@swarm-manager ~]# docker node -h

...

Commands:

demote      Demote a node from manager in the swarm

inspect    Display detailed information on one or more nodes

ls          List nodes in the swarm

promote    Promote a node to a manager in the swarm

rm          Remove a node from the swarm

ps          List tasks running on a node

update      Update a node

5.1node去激活(drain)

#查看状态

[root@swarm-manager ~]# docker node ls

ID                          HOSTNAME      STATUS  AVAILABILITY  MANAGER STATUS

4u80il22c6r9hp9avzqgbe9yf    swarm-node01  Ready  Active

9a8h4zctcf4qb0naylgu5bpf5 *  swarm-manager  Ready  Active        Leader

[root@swarm-manager ~]# docker service ps tomcat03

ID                        NAME        IMAGE    NODE          DESIRED STATE  CURRENT STATE          ERROR

7shjqfybdy385r9jy5i29x8oa  tomcat03.1  tomcat:7  swarm-manager  Running        Running 9 minutes ago

33n5lucts3b3hdyzhfh2pte4i  tomcat03.2  tomcat:7  swarm-node01  Running        Running 1 seconds ago

#node去激活

[root@swarm-manager ~]# docker node update --availability drain swarm-node01

swarm-node01

#去激活后查看状态

[root@swarm-manager ~]# docker node ls

ID                          HOSTNAME      STATUS  AVAILABILITY  MANAGER STATUS

4u80il22c6r9hp9avzqgbe9yf    swarm-node01  Ready  Drain

9a8h4zctcf4qb0naylgu5bpf5 *  swarm-manager  Ready  Active        Leader

[root@swarm-manager ~]# docker service ps tomcat03

ID                        NAME            IMAGE    NODE          DESIRED STATE  CURRENT STATE            ERROR

7shjqfybdy385r9jy5i29x8oa  tomcat03.1      tomcat:7  swarm-manager  Running        Running 11 minutes ago

5f6y6vikdf32kfvgtgibemkwb  tomcat03.2      tomcat:7  swarm-manager  Running        Preparing 9 seconds ago

33n5lucts3b3hdyzhfh2pte4i  \_ tomcat03.2  tomcat:7  swarm-node01  Shutdown      Shutdown 10 seconds ago

#可以看到node01的容器,自动迁移到了manager

#激活node

[root@swarm-manager ~]# docker node update --availability active swarm-node01

swarm-node01

[root@swarm-manager ~]# docker node ls

ID                          HOSTNAME      STATUS  AVAILABILITY  MANAGER STATUS

4u80il22c6r9hp9avzqgbe9yf    swarm-node01  Ready  Active

9a8h4zctcf4qb0naylgu5bpf5 *  swarm-manager  Ready  Active        Leader

5.2node角色的升级和降级(promote/demote)

#查看状态

[root@swarm-manager ~]# docker node ls

ID                          HOSTNAME      STATUS  AVAILABILITY  MANAGER STATUS

4u80il22c6r9hp9avzqgbe9yf    swarm-node01  Ready  Active

9a8h4zctcf4qb0naylgu5bpf5 *  swarm-manager  Ready  Active        Leader

#node角色提升

[root@swarm-manager ~]# docker node promote swarm-node01

Node swarm-node01 promoted to a manager in the swarm.

[root@swarm-manager ~]# docker node ls

ID                          HOSTNAME      STATUS  AVAILABILITY  MANAGER STATUS

4u80il22c6r9hp9avzqgbe9yf    swarm-node01  Ready  Active        Reachable

9a8h4zctcf4qb0naylgu5bpf5 *  swarm-manager  Ready  Active        Leader

#node角色降级

[root@swarm-manager ~]# docker node demote swarm-node01

Manager swarm-node01 demoted in the swarm.

[root@swarm-manager ~]# docker node ls

ID                          HOSTNAME      STATUS  AVAILABILITY  MANAGER STATUS

4u80il22c6r9hp9avzqgbe9yf    swarm-node01  Ready  Active

9a8h4zctcf4qb0naylgu5bpf5 *  swarm-manager  Ready  Active        Leader

via:http://www.pangxie.space/docker/1061

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,839评论 6 482
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,543评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 153,116评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,371评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,384评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,111评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,416评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,053评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,558评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,007评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,117评论 1 334
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,756评论 4 324
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,324评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,315评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,539评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,578评论 2 355
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,877评论 2 345

推荐阅读更多精彩内容

  • 目录 概述 创建和管理Swarm集群 Swarm集群的服务部署实践 1. 概述 Docker Swarm是原生的D...
    garyond阅读 13,169评论 0 23
  • 我家妞妞一岁半左右开始一边玩土一边跟着读简单的唐诗,那时妞妞的积极性可高了,经常一个人自言自语。 悯农 锄禾日当午...
    我家妞妞妈阅读 223评论 0 0
  • 我以前从稻盛和夫的活法里面学到,需要把事情考虑得万全才能下手去做,而更多的书却讲有7成把握就去做。所以我经常用这两...
    佐江阅读 269评论 0 0
  • 虽然纽约有各式各样的派对、活动、戏剧、书籍、餐厅,可它也许是世界上最令人感到孤独的地方。 ...
    简故说阅读 385评论 0 3