关于docker swarm有满满干货的一篇文章,讲了如何用service来作nginx负责proxy已级无缝升级策略-阿里云开发者社区

开发者社区> 天飞> 正文

关于docker swarm有满满干货的一篇文章,讲了如何用service来作nginx负责proxy已级无缝升级策略

简介: http://www.cnblogs.com/atuotuo/p/6260591.html ================================= $docker network create -d overlay test   然后在同一个网络上分别吧应用容器和http服务容器...
+关注继续查看

http://www.cnblogs.com/atuotuo/p/6260591.html

=================================

$docker network create -d overlay test

 

然后在同一个网络上分别吧应用容器和http服务容器起来:

$ docker service create --name test -p 5000:5000 --replicas 6 –network test demo python env.py

$ docker service create --name nginx --replicas 3 --network test -p 80:80 nginx-2

Nginx容器的default.conf配置如下,其中test:5000对应之前由docker service create出来的test任务,docker 引擎已经将task name对应的ip关系映射成内部的DNS解析。

server {

listen 80;

server_name localhost;

access_log /var/log/nginx/log/host.access.log main;

location / {

# root /usr/share/nginx/html;

# index index.html index.htm;

proxy_pass http://test:5000;#这里这个服务,是可以用这种方式实现内部负责调用。外部调用的话,可能还是得固定IP或DNS?

}

error_page 500 502 503 504 /50x.html;

location = /50x.html {

root /usr/share/nginx/html;

}

}

至此全部操作完成,当浏览器访问http://node2后,http请求根据VIP负载均衡算法均匀的分配至3个swarm cluster node上的6个python容器去响应请求,并且无论哪个后端容器挂了,只要三台docker swarm cluster的节点不同时出事,都不会影响正常 的网站服务。

对于上述的VIP负载均衡算法做下补充说明:docker1.12使用的是linux自身的IPVS作为负载均衡方式。IPVS实则linux内核中一个叫做ip_vs的负载均衡模块。不同于DNS负载均衡将IP列表顺序轮询,IPVS会将负载均匀的分发到每个容器。IPVS是四层的转发者,能够转发TCP、UDP、DNS并且支持八种负载均衡算法。

 

=================================

滚动部署

从前docker的旧版本下,容器必须手动蓝绿部署,或者手写脚本实现滚动升级。1.12有了滚动更新以后,我们就不需要把更新规则写成脚本去实现透明部署。Swarm mode中,服务可以更新逐步节点,并且控制服务的部署之间的延迟到不同的节点集合。如果出现任何错误,能够马上回滚上一个任务,回到先前版本的服务。

当现在要更新test这个task所引用的镜像时,可以这么操作:

$docker service update --update-parallelism 2 --image demo:2.0 --update-delay 10s test

其中--update-parallelism参数用来指定最大同步更新任务数。这意味着我们可以安全透明的更新容器副本。关于透明,当然要确保你的容器是向后兼容的,否则最好销毁旧的容器,再去更新所有的容器。

然后容器就会每隔10秒跟新2个容器,直至30秒后此次更新操作完毕。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
阿里云服务器怎么设置密码?怎么停机?怎么重启服务器?
如果在创建实例时没有设置密码,或者密码丢失,您可以在控制台上重新设置实例的登录密码。本文仅描述如何在 ECS 管理控制台上修改实例登录密码。
10076 0
【URLOS应用开发基础】10分钟制作一个nginx静态网站环境应用
URLOS开发者功能已上线有一段时间了,目前通过部分开发者的使用体验来看,不得不说URLOS在服务器软件开发效率方面确实有着得天独厚的优势,凭借docker容器技术与其良好的应用生态环境,URLOS必将迅速成为软件开发者的新宠儿。
1133 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,阿里云优惠总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系.
13884 0
容器常用操作 - 每天5分钟玩转 Docker 容器技术(25)
前面讨论了如何运行容器,本节学习容器的其他常用操作。 stop/start/restart 容器 通过 docker stop 可以停止运行的容器。 容器在 docker host 中实际上是一个进程,docker stop 命令本质上是向该进程发送一个 SIGTERM 信号。
902 0
阿里云ECS云服务器初始化设置教程方法
阿里云ECS云服务器初始化是指将云服务器系统恢复到最初状态的过程,阿里云的服务器初始化是通过更换系统盘来实现的,是免费的,阿里云百科网分享服务器初始化教程: 服务器初始化教程方法 本文的服务器初始化是指将ECS云服务器系统恢复到最初状态,服务器中的数据也会被清空,所以初始化之前一定要先备份好。
11889 0
利用colinux制作tinycolinx,在ecs上打造server farm和vps iaas环境代替docker
本文关键字:将tinycorelinux装在硬盘上,custom tinycore linux kernel,tcl3安装使用方法,tcl安装到硬盘,自定义linux rootfs,利用colinux代替docker组建容器。单机端口反代重用技术,内网转发复用端口
100 0
使用NGINX作为HTTPS正向代理服务器
NGINX主要设计作为反向代理服务器,但随着NGINX的发展,它同样能作为正向代理的选项之一。正向代理本身并不复杂,而如何代理加密的HTTPS流量是正向代理需要解决的主要问题。本文将介绍利用NGINX来正向代理HTTPS流量两种方案,及其使用场景和主要问题。
12727 0
阿里云ECS云服务器初始化设置教程方法
阿里云ECS云服务器初始化是指将云服务器系统恢复到最初状态的过程,阿里云的服务器初始化是通过更换系统盘来实现的,是免费的,阿里云百科网分享服务器初始化教程: 服务器初始化教程方法 本文的服务器初始化是指将ECS云服务器系统恢复到最初状态,服务器中的数据也会被清空,所以初始化之前一定要先备份好。
7365 0
+关注
天飞
一个运维老同志
1512
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载