docker1.12版本的swarm集群特性

简介:

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


环境:

        manager/node1  :  swarm_node1

                       node2  :   swarm_node2


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

1
2
3
# curl -fsSL https://test.docker.com/ | sh
# docker -v
Docker version 1.12.0-rc4, build e4a0dbc


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

   swarm_node1:

1
2
3
4
5
6
7
8
[root@swarm_node1 ~] # docker swarm init
No --secret provided. Generated random secret:
         dm18yjza2eb00wsbbk1hleq8q
Swarm initialized: current node (4abdf6see9vqr83emyhdf529s) is now a manager.
To add a worker to this swarm, run the following  command :
         docker swarm  join  --secret dm18yjza2eb00wsbbk1hleq8q \
         --ca- hash  sha256:cda112fa02a5c17850852b4d65366bb8484bcb204a46ae97063648b5545e277d \
         192.168.1.131:2377


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

    swarm_node2:

1
2
[root@swarm_node2 ~] #  docker swarm join --secret dm18yjza2eb00wsbbk1hleq8q --ca-hash sha256:cda112fa02a5c17850852b4d65366bb8484bcb204a46ae97063648b5545e277d  192.168.1.131:2377
This node joined a Swarm as a worker.

    提示节点添加成功。


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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
[root@swarm_node1 ~] # docker swarm inspect
[
{
"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 ~] # docker node ls
ID                            HOSTNAME      MEMBERSHIP  STATUS    AVAILABILITY   MANAGER   STATUS
4abdf6see9vqr83emyhdf529s *   swarm_node1   Accepted    Ready     Active         Leader
cs95yh0c4c0fo892996m5wozk     swarm_node2   Accepted    Ready     Active

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


5:service管理

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

1
2
3
4
5
6
7
8
9
10
11
[root@swarm_node1 ~] # docker service create --name test --replicas 2 centos ping 127.0.0.1
bgach5ib1uoubo2ljarrx48xu
[root@swarm_node1 ~] # docker service ls
ID NAME REPLICAS IMAGE COMMAND
bgach5ib1uou  test  0 /2  centos  ping  127.0.0.1
  
   
[root@swarm_node1 ~] # docker service tasks test
ID NAME SERVICE IMAGE LAST STATE DESIRED STATE NODE
5rw3fr6xdl3kojhh28qzg8yos  test .1  test  centos Preparing 21 seconds ago Running swarm_node1
1l9siyzbflljowd543c5ehdil  test .2  test  centos Preparing 21 seconds ago Running swarm_node2

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


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

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

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

1
2
[root@swarm_node2 ~] # docker swarm leave
Node left the swarm.

   再查看test服务:

1
2
3
4
[root@swarm_node1 ~] # docker service tasks test
ID NAME SERVICE IMAGE LAST STATE DESIRED STATE NODE
5rw3fr6xdl3kojhh28qzg8yos  test .1  test  centos Preparing 5 minutes ago Running swarm_node1
9pzt555uzeswik14lj6bp96hf  test .2  test  centos Preparing about a minute ago Running swarm_node1

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










本文转自 icenycmh 51CTO博客,原文链接:http://blog.51cto.com/icenycmh/1834643,如需转载请自行联系原作者
目录
相关文章
|
22小时前
|
前端开发 jenkins 持续交付
新的centos7.9安装docker版本的jenkins2.436.1最新版本-前端项目发布(五)
新的centos7.9安装docker版本的jenkins2.436.1最新版本-前端项目发布(五)
17 1
|
22小时前
|
jenkins 网络安全 持续交付
新的centos7.9安装docker版本的jenkins2.436.1最新版本-后端项目发布(四)
新的centos7.9安装docker版本的jenkins2.436.1最新版本-后端项目发布(四)
13 3
|
22小时前
|
存储 Kubernetes C++
【专栏】Kubernetes VS Docker Swarm了解两者特点,助力选取合适容器编排工具
【4月更文挑战第27天】对比Kubernetes和Docker Swarm:K8s在可扩展性和自动化方面出色,有强大社区支持;Swarm以简易用著称,适合初学者。选择取决于项目需求、团队技能和预期收益。高度复杂项目推荐Kubernetes,快速上手小项目则选Docker Swarm。了解两者特点,助力选取合适容器编排工具。
|
22小时前
|
Java 开发工具 git
新的centos7.9安装docker版本的jenkins2.436.1最新版本-项目发布(三)
新的centos7.9安装docker版本的jenkins2.436.1最新版本-项目发布(三)
11 4
|
22小时前
|
监控 Docker 容器
【Docker 专栏】Docker Swarm 集群的扩展与缩容策略
【5月更文挑战第8天】本文探讨了Docker Swarm集群的扩展与缩容策略。集群扩展可提高性能、增强可用性和适应业务发展,可通过手动或自动方式实现。缩容则需考虑业务需求、资源利用率和节点状态,可手动或按策略执行。关键步骤包括添加/移除节点及任务迁移。注意数据同步、监控评估和测试验证。案例分析和总结强调了灵活管理对保持集群最佳状态的重要性。
【Docker 专栏】Docker Swarm 集群的扩展与缩容策略
|
22小时前
|
Kubernetes 负载均衡 调度
【Docker 专栏】Docker Swarm 与 Kubernetes 的选型指南
【5月更文挑战第8天】Docker Swarm 和 Kubernetes 是两大容器编排工具,各有优势。Docker Swarm 简单易用,适合小到中型规模,与 Docker 生态系统集成紧密;而 Kubernetes 功能强大,扩展性好,适用于大规模、复杂场景。选择时需考虑团队技术能力、应用需求及现有技术栈。Kubernetes 学习曲线较陡,Docker Swarm 则较平缓。
【Docker 专栏】Docker Swarm 与 Kubernetes 的选型指南
|
22小时前
|
负载均衡 安全 数据安全/隐私保护
【Docker专栏】Docker Swarm集群管理详解
【5月更文挑战第7天】Docker Swarm是Docker的原生集群管理工具,用于将多个Docker主机整合为虚拟主机。其主要特点是服务发现、负载均衡、自动恢复和扩展性。Swarm由Manager(负责管理与控制)和Worker(运行服务)节点组成。创建Swarm集群涉及初始化、添加Worker节点及查看集群状态。服务部署包括创建、更新、扩展和缩减。Swarm还支持滚动更新、健康检查、网络管理和安全加密。本文概述了Swarm的基本功能,鼓励读者进一步探索其高级特性。
【Docker专栏】Docker Swarm集群管理详解
|
22小时前
|
算法 Nacos Docker
docker部署nacos集群
docker部署nacos集群
28 0
|
22小时前
|
NoSQL Redis Docker
使用Docker搭建Redis主从集群
使用Docker搭建Redis主从集群
32 1
|
22小时前
|
Kubernetes Ubuntu Docker
Kubernetes(K8S v1.1版本) 集群管理Docker容器之部署篇
Kubernetes(K8S v1.1版本) 集群管理Docker容器之部署篇

热门文章

最新文章