频道栏目
首页 > 资讯 > 其他 > 正文

docker1.12版本的swarm集群特性

16-08-10        来源:[db:作者]  
收藏   我要投稿

docker1.12版本之后集成了swarm模块,直接使用dokcer-engin就能很方便地创建一个docker集群,不用再像以前那样第三方配置。

环境:

manager/node1 : swarm_node1

node2 : swarm_node2

1:首先在各节点上安装最新版dokcer

#curl-fsSLhttps://test.docker.com/|sh
#docker-v
Dockerversion1.12.0-rc4,builde4a0dbc

2:在node1上初始化一个swarm集群

swarm_node1:

[root@swarm_node1~]#dockerswarminit
No--secretprovided.Generatedrandomsecret:
dm18yjza2eb00wsbbk1hleq8q
Swarminitialized:currentnode(4abdf6see9vqr83emyhdf529s)isnowamanager.
Toaddaworkertothisswarm,runthefollowingcommand:
dockerswarmjoin--secretdm18yjza2eb00wsbbk1hleq8q\
--ca-hashsha256:cda112fa02a5c17850852b4d65366bb8484bcb204a46ae97063648b5545e277d\
192.168.1.131:2377

3:根据提示,把node2添加进swarm集群

swarm_node2:

[root@swarm_node2~]#dockerswarmjoin--secretdm18yjza2eb00wsbbk1hleq8q--ca-hashsha256:cda112fa02a5c17850852b4d65366bb8484bcb204a46ae97063648b5545e277d192.168.1.131:2377
ThisnodejoinedaSwarmasaworker.

提示节点添加成功。

4:查看集群状态,需在管理节点node1上:

[root@swarm_node1~]#dockerswarminspect
[
{
"ID":"0kx8spry37citf16ty448y65e",
"Version":{
"Index":11
},
"CreatedAt":"2016-08-05T02:09:17.248225691Z",
"UpdatedAt":"2016-08-05T02:09:17.861408652Z",
"Spec":{
"Name":"default",
"AcceptancePolicy":{
"Policies":[
{
"Role":"worker",
"Autoaccept":true,
"Secret":"$2a$10$oqvNfMPFiKIrEvYrZENRGOxsJly8.QnzNZ7XDKkP20MN8027N3gxm"
},
{
"Role":"manager",
"Autoaccept":false,
"Secret":"$2a$10$oqvNfMPFiKIrEvYrZENRGOxsJly8.QnzNZ7XDKkP20MN8027N3gxm"
}
]
},
"Orchestration":{
"TaskHistoryRetentionLimit":10
},
"Raft":{
"SnapshotInterval":10000,
"LogEntriesForSlowFollowers":500,
"HeartbeatTick":1,
"ElectionTick":3
},
"Dispatcher":{
"HeartbeatPeriod":5000000000
},
"CAConfig":{
"NodeCertExpiry":7776000000000000
}
}
}
]
[root@swarm_node1~]#dockernodels
IDHOSTNAMEMEMBERSHIPSTATUSAVAILABILITYMANAGERSTATUS
4abdf6see9vqr83emyhdf529s*swarm_node1AcceptedReadyActiveLeader
cs95yh0c4c0fo892996m5wozkswarm_node2AcceptedReadyActive

可以看到各节点的状态(Active)和角色(Leader)等。

5:service管理

1.12新增了service命令,用于管理一个服务。例如我们需要一个test的服务,需要两个容器,运行ping的命令:

[root@swarm_node1~]#dockerservicecreate--nametest--replicas2centosping127.0.0.1
bgach5ib1uoubo2ljarrx48xu
[root@swarm_node1~]#dockerservicels
IDNAMEREPLICASIMAGECOMMAND
bgach5ib1uoutest0/2centosping127.0.0.1
[root@swarm_node1~]#dockerservicetaskstest
IDNAMESERVICEIMAGELASTSTATEDESIREDSTATENODE
5rw3fr6xdl3kojhh28qzg8yostest.1testcentosPreparing21secondsagoRunningswarm_node1
1l9siyzbflljowd543c5ehdiltest.2testcentosPreparing21secondsagoRunningswarm_node2

--repicas 2指定了服务的个数为2,可以看到在node1,node2上分别跑了一个容器,组成了一个test的服务。

6:service的错误恢复与容器迁移。

service的新特性最大的亮点是错误迁移与恢复的机制,如果某一个节点上的docker服务下线了,或者服务器出现故障,swarm集群会检测service是否发生变动,如果发现某个节点故障,会在另外的节点恢复容器,以保证service的完整。

比如,这时,我让swarm_node2退出swarm集群:

[root@swarm_node2~]#dockerswarmleave
Nodelefttheswarm.

再查看test服务:

[root@swarm_node1~]#dockerservicetaskstest
IDNAMESERVICEIMAGELASTSTATEDESIREDSTATENODE
5rw3fr6xdl3kojhh28qzg8yostest.1testcentosPreparing5minutesagoRunningswarm_node1
9pzt555uzeswik14lj6bp96hftest.2testcentosPreparingaboutaminuteagoRunningswarm_node1

可以看到test这个服务依旧保持了2个容器,而且由于node2已经下线,容器全部迁移到了node1。

相关TAG标签
上一篇:源码更新curl后报CRYPTO_set_locking_callback错误
下一篇:Linux 下Shell脚本回滚删除数据
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站