同一个Docker swarm集群中部署多版本的测试环境
2017-06-24 23:27
1476 查看
先介绍下用到的技术
Docker swarm: Docker官方的集群管理工具,相比kubernetes更加简单,容易入门。https://docs.docker.com/engine/swarm/
Traefik: 一个现代化的反向代理工具,原生支持Docker swarm模式,可以实现swarm的动态代理。https://docs.traefik.io/user-guide/swarm-mode/
下图展示主要的思路:
在Docker swarm中创建某个测试版本service时,通过设置service的Label来指定该版本监听的域名如master分支下设置Host:master.quanqiuzhu.com vNext分支下设置Host:vnext.quanqiuzhu.com
Traefik通过监听swarm中docker container(service)的创建、关闭事件,并根据container(service)中label的设定来动态实现代理。
实战:
1. 准备docker swarm测试环境
docker swarm init 初始化一个swarm集群, 并把当前主机设置为swarm manager。如果想让其它机器加入该集群,可以执行以下命令
docker swarm join-toker worker 可以输出加入该集群并作为worker角色的命令,如下:
可以在另外一个安装了docker的物理机(或虚拟机)上执行以上命令,就会加入该集群。
在该示例中,不要求必须是两台或以上的机器组成的集群,只有一台manager机器也可以。
2. 创建一个docker swarm network, traefik反向代理和我们web服务都要用这个network
docker network create --driver=overlay test-traefik network的名字是test-traefik
3. 创建trafik反向代理service
在swarm的manager机器上执行以下命令
docker service create \
--name traefik \
--constraint=node.role==manager \
--publish 80:80 --publish 8080:8080 \
--mount type=bind,source=/var/run/docker.sock,target=/var/run/docker.sock \
--network test-traefik \
traefik \
--docker \
--docker.swarmmode \
--docker.domain=traefik \
--docker.watch \
--web
启动后,可以通过http://{manager-ip}:8080/来访问trafik的web监控界面,可以动态看到反向代理的配置
4. 在swarm中创建我们自己的应用程序service, 运行不同分支(master/vnext)打包镜像的应用程序,实现在同一套swarm集群中部署不同分支的测试环境。
下面演示运行master和vnext分支的应用程序。
我这里有一个web和grpcservice程序, web 程序需要调用grpcservice。所以有两个image web和grpcservice
下面基于docker-compose文件来部署我们的web和service的image,如下分别是master分支和vnext分支对应的部署compose文件,通过label指定监听的域名。
下图示例用了相同的image,实际上应该是master使用master分支对应的image, vnext使用vnext分支的image
修改本机host文件,把www.vnext.quanqiuzhu.com和www.master.quanqiuzhu.com的域名指向manager对应的机器ip
如果上一步使用的image不同的话,就可以看到不同分支对应的效果了
Docker swarm: Docker官方的集群管理工具,相比kubernetes更加简单,容易入门。https://docs.docker.com/engine/swarm/
Traefik: 一个现代化的反向代理工具,原生支持Docker swarm模式,可以实现swarm的动态代理。https://docs.traefik.io/user-guide/swarm-mode/
下图展示主要的思路:
在Docker swarm中创建某个测试版本service时,通过设置service的Label来指定该版本监听的域名如master分支下设置Host:master.quanqiuzhu.com vNext分支下设置Host:vnext.quanqiuzhu.com
Traefik通过监听swarm中docker container(service)的创建、关闭事件,并根据container(service)中label的设定来动态实现代理。
实战:
1. 准备docker swarm测试环境
docker swarm init 初始化一个swarm集群, 并把当前主机设置为swarm manager。如果想让其它机器加入该集群,可以执行以下命令
docker swarm join-toker worker 可以输出加入该集群并作为worker角色的命令,如下:
可以在另外一个安装了docker的物理机(或虚拟机)上执行以上命令,就会加入该集群。
在该示例中,不要求必须是两台或以上的机器组成的集群,只有一台manager机器也可以。
2. 创建一个docker swarm network, traefik反向代理和我们web服务都要用这个network
docker network create --driver=overlay test-traefik network的名字是test-traefik
3. 创建trafik反向代理service
在swarm的manager机器上执行以下命令
docker service create \
--name traefik \
--constraint=node.role==manager \
--publish 80:80 --publish 8080:8080 \
--mount type=bind,source=/var/run/docker.sock,target=/var/run/docker.sock \
--network test-traefik \
traefik \
--docker \
--docker.swarmmode \
--docker.domain=traefik \
--docker.watch \
--web
启动后,可以通过http://{manager-ip}:8080/来访问trafik的web监控界面,可以动态看到反向代理的配置
4. 在swarm中创建我们自己的应用程序service, 运行不同分支(master/vnext)打包镜像的应用程序,实现在同一套swarm集群中部署不同分支的测试环境。
下面演示运行master和vnext分支的应用程序。
我这里有一个web和grpcservice程序, web 程序需要调用grpcservice。所以有两个image web和grpcservice
下面基于docker-compose文件来部署我们的web和service的image,如下分别是master分支和vnext分支对应的部署compose文件,通过label指定监听的域名。
下图示例用了相同的image,实际上应该是master使用master分支对应的image, vnext使用vnext分支的image
修改本机host文件,把www.vnext.quanqiuzhu.com和www.master.quanqiuzhu.com的域名指向manager对应的机器ip
如果上一步使用的image不同的话,就可以看到不同分支对应的效果了
相关文章推荐
- 手把手教你用Docker部署一个MongoDB集群
- Docker集群实验环境布署--swarm【7 让docker客户端支持docker-compose】
- Docker集群实验环境布署--swarm【3 注册服务监控与自动发现组件--consul】
- docker搭建linux集群,搭建mpi环境,并使用MTT benchmark测试集群性能
- Docker全新的容器集群项目——SwarmKit初步测试
- 基于Swarm Docker虚拟化技术的集群环境分析_20170110
- 使用Docker镜像搭建consul和swarm集群基础环境及overlay网络
- Docker集群实验环境布署--swarm【6 配置上层Nginx代理,让任意Docker client访问得到高可用的管理API】
- 如何使用Docker Machine部署Swarm集群
- Docker Swarm搭建生产环境的集群
- MQ集群测试环境搭建(多节点负载均衡,共享一个kahaDB文件(nas方式))
- Docker集群实验环境布署--swarm【1 架构说明】
- 手把手教你用Docker部署一个MongoDB集群
- ubuntu12上docker部署hadoop集群环境
- Docker学习二(部署一个可以自由获取环境变量的SpringWeb)
- jenkins集群测试环境原理、部署及常见问题解决
- Docker集群实验环境布署--swarm【4 管理组件--manager】
- Docker集群实验环境布署--swarm【2 搭建本地镜像仓库】