SWARM部署DOCKER集群
1. 简介............................................................................................................................ 3
2. 部署准备..................................................................................................................... 3
2.1. 系统组网图........................................................................................................ 3
2.2. 系统业务逻辑流程.............................................................................................. 4
2.3. 部署机器准备..................................................................................................... 4
3. 部署步骤..................................................................................................................... 4
3.1. DOCKER ENGINE的安装(本文中使用root用户进行安装).................................. 4
3.2. 设置网络使DOCKER ENGINE支持远程访问,以下操作每个DOCKER SERVER都要做 4
3.3. 配置swarm manager........................................................................................... 4
3.4. 配置swarm node................................................................................................ 5
3.5. 安装docker register, 登录到docker_machine服务器做如下操作.......................... 5
3.6. 安装SHIPYARD,配置DOCKER SWARM MANAGE,登录到docker manager服务器做如下操作(通过配置文件来实现节点发现功能) 5
4. 验证............................................................................................................................ 5
5. 管理相关..................................................................................................................... 6
5.1. SWARM 管理命令介绍........................................................................................ 6
本文主要介绍如何用利用docker swarm+shipyard来实现一个docker集群的部署,该方案适用于测试和开发环境,要求docker engine版本>=1.12.0。Docker Engine在1.12.0版本后自带了Docker SWARM
(注:后文中红色部分的字体请根据实际情况修改)
模块 |
作用 |
SWARM MANAGE |
提供API接口将SHIPYARD发过来的请求,转发到对应的DOCKER SERVER,并返回结果给SHIPYARD |
DOCKER ENGINE |
提供 docker daemon进程来处理DOCKER SWARM MANAGE发过来的请求,并且返回结果 |
SWARM NODE |
SWARM的WORKER节点主要用于为业务容器提供运行环境 |
本文中部署使用两台机器作为事例,如果要多台机器部署以此类推即可,下表格中的IP请根据具体情况修改(注:请保证下面的机器能访问外网,并且能使用DNS服务)
机器名 |
IP |
安装模块 |
操作系统 |
Docker_1 |
1.1.1.1 |
DOCKER ENGINE |
CENTOS7 |
Docker_2 |
1.1.1.2 |
DOCKER ENGINE DOCKER REGISTRY |
CENTOS7 |
Docker_3 |
1.1.1.3 |
DOCKER ENGINE |
CENTOS7 |
参考:Install Docker Engine | Docker Docs,根据操作系统选择对应的安装方法
1登录DOCKER服务器,执行
cd /usr/lib/systemd/system
2编辑docker.service文件,找到如下行做如下修改,并保存
修改前:ExecStart=/usr/bin/dockerd
修改后:ExecStart=/usr/bin/dockerd --insecure-registry [docker_registry_addr]
3在防火墙中做如下配置,打开对2377端口的限制和对docker0端口的限制
firewall-cmd --permanent --zone=public --add-port=2377/tcp
firewall-cmd --permanent --zone=trusted --add-interface=docker0
firewall-cmd --reload
登录到swarm manage的机器上,执行
docker swarm init --advertise-addr [swarm_manager_ip]
执行后会得到类似如下信息
Swarm initialized: current node (dxn1zf6l61qsb1josjja83ngz) is now a manager.
To add a worker to this swarm, run the following command:
docker swarm join \
--token SWMTKN-1-49nj1cmql0jkz5s954yi3oex3nedyz0fb0xx14ie39trti4wxv-8vxv8rssmk743ojnwacrr2e7c \
192.168.99.100:2377
To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.
登录到docker-machine的机器上,执行上一步喜欢建SWARM MANAGER时候提示的加入NODE的语句
docker swarm join \
--token SWMTKN-1-49nj1cmql0jkz5s954yi3oex3nedyz0fb0xx14ie39trti4wxv-8vxv8rssmk743ojnwacrr2e7c \
192.168.99.100:2377
如果记不到语句了可以使用如下命令来查看加入语句:
docker swarm join-token worker
1 在要安装registry的机器上的/tmp/registry目录下增加配置文件config.yml内容如下(请严格按照格式缩进):
log:
fields:
service: registry
storage:
cache:
blobdescriptor: inmemory
filesystem:
rootdirectory: /var/lib/registry
delete:
enabled: true
http:
addr: :5000
headers:
X-Content-Type-Options: [nosniff]
health:
storagedriver:
enabled: true
interval: 10s
threshold: 3
2 进入docker环境,输入如下命令
docker run -d -p 5000:5000 --restart=always --name registry -v /tmp/registry/config.yml:/etc/docker/registry/config.yml registry:2
(参考URL:https://docs.docker.com/engine/swarm/swarm-tutorial/)
docker swarm: 用于创建加入swarm node和swarm manager
docker info: 查看当前SWARM集群信息
docker node ls:查看当前SWARM 节点信息
docker service:用于操作当前swarm中的service