swarm初探

swarm 是一套 Docker 集群管理工具。
通过 swarm 的管理,可以把整个集群看成一个单一的机器。
swarm 使用标准的 Docker API 接口作为其访问入口,可以用标准的 Docker 命令来管理集群,比如 docker ps 等,完全没有学习成本。还有一个优点,swarm 节点挂掉不会影响现有集群节点。

Prerequisites

在使用 swarm 管理集群前,需要把集群中所有节点的 docker daemon 的监听方式更改为 0.0.0.0:2375

编辑文件/etc/sysconfig/docker

other_args="--insecure-registry docker.adm.com:50000  -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock"  

重启docker进程

Discovery backends

Docker 集群管理需要使用服务发现功能,Swarm支持以下几种方式:DockerHub 提供的服务发现功能,本地文件,etcdconsulzookeeper.

  • 强烈不建议使用 DockerHub 提供的服务发现功能,因为总是timeout
  • 建议使用本地文件方式,比较简单
  • etcd 参考 swarm与etcd

先讲讲如何使用本地文件: 新建一个文件 cluster,内容如下: $ cat /opt/cluster

10.10.30.126:2375  
10.10.30.127:2375  
10.10.30.128:2375  

Range pattern for IP addresses

The file and nodes discoveries support a range pattern to specify IP addresses, i.e., 10.0.0.[10:200] will be a list of nodes starting from
10.0.0.10 to 10.0.0.200.

启动 swarm 服务

docker run -d  --net host --name swarm -v /opt/cluster:/tmp/cluster  swarm  manage  file:///tmp/cluster  

swarm 默认使用 2375 端口

docker -H 127.0.0.1:2375 ps 就可以列出所有容器和机器