• 同一个Docker swarm集群中部署多版本的测试环境


    先介绍下用到的技术

    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
            
    1. 修改本机host文件,把www.vnext.quanqiuzhu.com和www.master.quanqiuzhu.com的域名指向manager对应的机器ip
             如果上一步使用的image不同的话,就可以看到不同分支对应的效果了
        
  • 相关阅读:
    django继承User表导致的问题
    Sublime Text 3 鼠标右键快捷选项 简单且高效
    php所有版本
    windows 安装redis
    php玩弄redis基本操作
    PHP 实现文件下载
    PHP 获取客户端的真实IP
    根据标签内个数,显示隐藏《加载更多》
    ubuntu 安装nginx+php+mysql+phpadmin环境
    面试总结
  • 原文地址:https://www.cnblogs.com/xiao123/p/7074819.html
Copyright © 2020-2023  润新知