阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

通过Swarm搭建Docker集群

232次阅读
没有评论

共计 3217 个字符,预计需要花费 9 分钟才能阅读完成。

Swarm 介绍

Docker自诞生以来,其容器特性以及镜像特性给 DevOps 爱好者带来了诸多方便。然而在很长的一段时间内,Docker只能在单 host 上运行,其 跨 host的部署、运行与管理能力颇受外界诟病。跨 host 能力的薄弱,直接导致 Docker 容器与 host 的紧耦合,这种情况下,Docker容器的灵活性很难令人满意,容器的迁移、分组等都成为很难实现的功能点。

Swarm是 Docker 公司在 2014 年 12 月初新发布的容器管理工具。和 Swarm 一起发布的 Docker 管理工具还有 Machine 以及 Compose。

Swarm是一套较为简单的工具,用以管理 Docker 集群,使得 Docker 集群暴露给用户时相当于一个虚拟的整体。Swarm 使用标准的 Docker API 接口作为其前端访问入口,换言之,各种形式的 Docker Client(dockerclient in go, docker_py, docker 等)均可以直接与 Swarm 通信。Swarm 几乎全部用 Go 语言来完成开发,并且还处于一个 Alpha 版本,目前在 github 上发布的版本仅有 v0.1.0-rc1。然而 Swarm 的发展十分快速,功能和特性的变更迭代还非常频繁。因此,可以说 Swarm 还不推荐被用于生产环境中,但可以肯定的是 Swarm 是一项很有前途的技术。

端口监听

Swarm是通过监听 2375 端口进行通信的,所以在使用 Swarm 进行集群管理之前,需要设置一下 2375 端口的监听。这里有两种方法,一种是通过修改 docker 配置文件方式,另一种是通过一个轻量级的代理容器进行监听。

修改配置文件修改监听端口(推荐)

由于我是使用 CentOS7 安装的 docker,所以下面的配置是适用于Centos7 的。
打开配置文件/etc/sysconfig/docker

 vim /etc/sysconfig/docker

修改配置项 OPTIONS 中的值,若 OPTIONS 中没有值,则直接添加-H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock,否则在已有参数后面添加,比如下面这样:

OPTIONS='--selinux-enabled --log-driver=journald 
    --signature-verification=false  
    -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock'

修改完之后保存文件,然后重启 docker 服务

systemctl restart docker

注意:需要对所有要加入集群的 docker 节点都进行上面的修改配置文件的操作。

使用 docker-proxy 代理服务

默认情况下,Docker引擎只侦听套接字。我们可以重新配置引擎以使用 TLS,或者您可以使用代理容器。这是一个非常轻量级的容器,它只是将请求从TCP 转发到 Docker 监听的Unix 套接字

先通过 docker pull 命令下载镜像

docker pull docker.io/shipyard/docker-proxy

然后启动容器:

docker run -ti -d -p 2375:2375 \
    --restart=always \
    --hostname=$HOSTNAME \
    --name shipyard-proxy \
    -v /var/run/docker.sock:/var/run/docker.sock \
    -e PORT=2375 \
    docker.io/shipyard/docker-proxy:latest

注意:该代理服务容器也需要在每个要加入集群的 docker 节点上启动,同时要保证该容器的正常运行,如果容器停止则无法发现节点。

搭建 Docker 集群

拉取 Swarm 镜像

docker pull docker.io/swarm

生成唯一 token

在任意的 docker 节点创建一个全世界唯一的 token(集群 ID), 记住这个token 后面需要用到。(这里用的发现服务是 dockhub 内置的,当然还有其他的比如 etcd、consul 等。)

docker run --rm swarm create

rw4d3ac32aa6a86b341e3asd69e2cd0b

执行上面的命令之后,会生成一个 token。

启动 Swarn Manager

docker run -ti -d -p 2376:2375 \
    --restart=always \
    --name shipyard-swarm-manager \
    docker.io/swarm:latest \
    manage --host tcp://0.0.0.0:2375 \
    token://rw4d3ac32aa6a86b341e3asd69e2cd0b

Swarn Manager 只需要启动一个,所以可选取一个 docker 节点进行启动,我这里是在我这块的主机 10.0.11.150 上启动的。

启动 Swarm Agent

启动 Swarm agent,将当前docker 节点加入到集群中,Swarm Agent需要在每一个要加入到集群中的 docker 节点上启动。

docker run -ti -d \
    --restart=always \
    --name shipyard-swarm-agent \
    docker.io/swarm:latest \
    join --addr [docker node ip]:2375 \
    token://rw4d3ac32aa6a86b341e3asd69e2cd0b

注:上面这条命令中的 [docker node ip] 项需要更换为要加入集群的 docker 节点的真实 IP。

查看 docker 节点情况

可以使用命令查看 docker 节点情况(任意 docker 节点上都可以执行):

docker run --rm swarm list token://rw4d3ac32aa6a86b341e3asd69e2cd0b

查看 docker 集群详情

可以使用命令查看 docker 集群的详情(可在任意 docker 节点上执行,IP 地址是装了 Swarm Master 主机的 IP):

docker -H 10.0.11.150:2376 info

更多 Docker 相关教程见以下内容

Docker 安装应用(CentOS 6.5_x64) http://www.linuxidc.com/Linux/2014-07/104595.htm 

Ubuntu 16.04 服务器上配置使用 Docker  http://www.linuxidc.com/Linux/2017-06/145176.htm 

Ubuntu 15.04 下安装 Docker  http://www.linuxidc.com/Linux/2015-07/120444.htm 

Docker 安装实例 http://www.linuxidc.com/Linux/2017-04/142666.htm 

Docker 创建基础镜像  http://www.linuxidc.com/Linux/2017-05/144112.htm 

在 Ubuntu 15.04 上如何安装 Docker 及基本用法 http://www.linuxidc.com/Linux/2015-09/122885.htm 

Ubuntu 16.04 上 Docker 使用手记 http://www.linuxidc.com/Linux/2016-12/138490.htm 

使用 Docker 分分钟启动常用应用  http://www.linuxidc.com/Linux/2017-04/142649.htm 

Ubuntu 16.04 下 Docker 修改配置文件不生效解决办法  http://www.linuxidc.com/Linux/2017-05/143862.htm 

Docker 的详细介绍:请点这里
Docker 的下载地址:请点这里

本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-12/149579.htm

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计3217字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中