Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1150598
  • 博文数量: 188
  • 博客积分: 2267
  • 博客等级: 大尉
  • 技术积分: 1907
  • 用 户 组: 普通用户
  • 注册时间: 2011-08-01 11:17
文章分类

全部博文(188)

文章存档

2016年(16)

2015年(16)

2014年(12)

2013年(32)

2012年(45)

2011年(67)

分类: 系统运维

2016-05-10 10:11:04

Docker Swarm 是 Docker公司官方发布的一套管理 Docker 集群的工具

主机 ip 角色
dc01 192.168.234.139 swarm manager
dc02
192.168.234.140 swarm
dc03
192.168.234.141 swarm

I. swarm安装使用
1. 安装swarm
  docker pull swarm
2. 查看swarm 版本
  docker run --rm swarm -v
  swarm version 1.2.1 (9a968f5)
3. 修改3台docker主机的启动文件,设定一个集群监听端口
 vim /lib/systemd/system/docker.service
 ExecStart=/usr/bin/docker -b=br0 daemon -H 0.0.0.0:2375 -H fd://

4. 在三台主机上配置防火墙,保证2375端口可以访问(也可以关闭firewalld)
5. 在任意docker 主机上创建一个token,作为swarm集群的唯一标识验证
 docker run --rm swarm create
  4e58e8fc16302295d96518c67cc09351
6. 在三台机器上分别执行以下命令,加入swarm集群
 docker run -d swarm join --addr=192.168.234.139:2375 token://4e58e8fc16302295d96518c67cc09351
 docker run -d swarm join --addr=192.168.234.140:2375 token://4e58e8fc16302295d96518c67cc09351
 docker run -d swarm join --addr=192.168.234.141:2375 token://4e58e8fc16302295d96518c67cc09351
7. 在dc01主机上启动swarm manage
 docker run -d -p 2376:2375 swarm manage token://4e58e8fc16302295d96518c67cc09351
8. 可以在任意主机上查看docker集群主机列表
 docker run --rm swarm list token://4e58e8fc16302295d96518c67cc09351

9. 查看docker 集群相信信息
 



10. 我们还可以使用文件来启动一个swarm集群,不用再每台主机上join
>1 cat /mnt/cluster
    192.168.234.140:2375
    192.168.234.141:2375
    192.168.234.139:2375
>2 启动集群,后边不需要跟token
  docker run -d -p 2376:2375 -v /mnt/cluster:/tmp/cluster swarm manage file:///tmp/cluster
>3 查看集群状态
 docker run --rm -v /mnt/cluster:/tmp/cluster swarm list file:///tmp/cluster 

>4 查看集群信息
 docker -H 192.168.234.139:2376 info

11.我们在集群上启动一个容器测试
docker -H 192.168.234.139:2376 run --name web1 -d nginx 
我们通过docker ps命令,在dc02 上看到启动了一台nginx容器


II. 调度


swarm 调度策略

swarm支持多种调度策略来选择节点。每次在swarm启动container的时候,swarm会根据选择的调度策略来选择节点运行container。目前支持的有:spread,binpack和random。

在执行swarm manage命令启动 swarm 集群的时候可以通过 --strategy 参数来指定,默认的是spread。

spread和binpack策略会根据每台节点的可用CPU,内存以及正在运行的containers的数量来给各个节点分级,而random策略,顾名思义,他不会做任何的计算,只是单纯的随机选择一个节点来启动container。这种策略一般只做调试用。

使用spread策略,swarm会选择一个正在运行的container的数量最少的那个节点来运行container。这种情况会导致启动的container会尽可能的分布在不同的机器上运行,这样的好处就是如果有节点坏掉的时候不会损失太多的container。

binpack 则相反,这种情况下,swarm会尽可能的把所有的容器放在一台节点上面运行。这种策略会避免容器碎片化,因为他会把未使用的机器分配给更大的容器,带来的好处就是swarm会使用最少的节点运行最多的容器。

docker run -d -p 2376:2375 -v /mnt/cluster:/tmp/cluster swarm manage --strategy=binpack file:///tmp/cluster

III. 过滤器
Constraint Filter  配置容器运行在哪台host上
Affinity Filter  没看懂
Port Filter   配置端口;只要被占用了,其他需要此端口的容器就会启动失败


参考:http://blog.csdn.net/wangtaoking1/article/details/46731913
阅读(1418) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~