docker 服务升级
2016-10-11 14:15 微服务专家 阅读(914) 评论(0) 编辑 收藏 举报使用docker大家一般都是微服务部署了。个人的经验是乖乖的用docker自己的注册发现机制。
创建一个overlay类型的network。把所有的微服务加入进去。就可以把service name当作域名互相访问了。
举例来说,你的服务分成三层 database, real-service, gateway
database就是底层存储,gateway是对外部提供服务的,real-service是业务实现
依赖关系 gateway-->real-service-->database
初始都是v1。现在我们修改了real-service,新版本为v2。并且它的接口不向前兼容。如果我们直接对real-service升级,后果是灾难性的
解决的办法是部分的升级和替换
首先,从命名上服务名要带上版本号,gateway没有人依赖它
database-v1, real-service-v1, gateway
我们的依赖关系如下
gateway-->real-service-v1-->database-v1
升级过程中,第一步创建real-service-v2。此时它没有人依赖它。
如果资源紧张可以先把service-v1 scale down
第二步,使用docker service update升级gateway
此时依赖改变为gateway-->real-service-v2-->database-v1
第三步,最后删除服务real-service-v1。升级完成