最佳实践-分享高可用的docker部署架构


    新技术发展总是有一个过程,有时掌握它并不是那么容易,即使我们可以从课本学习一些知识,但是没有足够的实践经验支撑,往往很难做到精通,docker走进我的视野很久了,有幸能在项目中做到真正的实践。故而想分享给大家在生产中使用docker的一种架构,满足高可用、持续集成。

 

1. 服务架构

DNS  --> traefik集群 --> 业务服务

 

traefik是新型的反向代理工具,跟nginx的反向代理是同一性质的,它比nginx有趣的是比较亲和容器,而且还支持通过给docker容器打上标签来做负载均衡(相比nginx一般用ip,当然traefik也支持用ip),可以在部署服务的时候,给docker容器贴上相同的服务标签,而不是指定ip,总体比较简单;另外它和可以做到服务发现、以及路由规则动态生效(nginx需要重启)。

相关文档可参考:https://docs.traefik.io/

 

2. 部署架构

代码仓库(github、gitee) --> jenkins/pipeline  --> docker集群(swarm、k8s)

 

以上就是整体的部署架构,也非常的简单,那就看看具体是怎么实践的吧,好的思想,不能落地,也是没有意义的。本人是一枚java开发人员,此处的业务服务采用springboot2框架,docker集群为swarm(相比k8s简单、上手快),gitee(支持国产),持续集成工具采用业界知名的jenkins/pipeline(功能确实强大),宿主机操作系统为

ubuntu 18.04。

 

1.  业务服务:springboot2

简单的使用了一下,整体只保留了配置文件(支持多环境)以及控制器,详情可参考代码仓:https://gitee.com/hx-studio/docker-jenkins

其中Jenkinsfile为jenkins pipeline控制脚本,等下会说明如何使用

dockerfile为该服务的镜像构建配置文件

docker-stack为该服务的swarm集群部署脚本

 

2. 部署traefik

参考项目目录下的docker-traefik.yml

记得把本例域名app.winter.com指向swarm manager节点ip(192.168.0.104),修改/etc/hosts

 

2. 持续构建使用

关于jenkins搭建,网上很多,这里就略过了,在jenkins里面新创建pipeline的item,按下图填入git仓库地址,并指定Jenkinsfile相对路径,整个流水线就创建完毕了(是不是很简单,真正做到代码即部署)

 

 

 

 

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM