运维发布的方式

本文介绍了四种常见的软件运维发布方式:蓝绿部署、灰度发布/金丝雀发布、滚动发布和红黑部署。蓝绿部署通过两个集群交替服务,实现快速升级与回退;灰度发布通过逐步增加新版本流量来验证稳定性;滚动发布则按批次更新服务,降低影响;红黑部署简化流程,避免系统过载,但需额外资源。每种方式都有其优缺点,适用于不同场景。
摘要由CSDN通过智能技术生成

运维发布的方式

1.蓝绿部署

蓝绿部署,是采用两个分开的集群对软件版本进行升级的一种方式。它的部署模型中包括一个蓝色集群Goup1和一个绿色集群Group2,在没有新版本上线的情况下,两个集群上运行的版本是一致的,同时对外提供服务。

系统升级时,蓝绿部署的流程是:

  • 从负载均衡器列表中删除集群Group1,让集群Group2单独提供服务。
  • 在集群Group1上部署新版本。
  • 集群Group1升级完毕后,把负载均衡列表全部指向Group1,并删除集群Group2,由Group1单独提供服务。
  • 在集群Group2上部署完新版本后,再把它添加回负戟均衡列表中。这样,就完成了两个集群上所有机器的版本升级。

蓝绿部署的忧点:升级和回退速度非常快

缺点:是全量升级的时候,如果V2版本有问题,对用户影响大再者由于升级过程中会服务器资源会减少一半,有可能产生服务器过载问题,因此这种发布方式也不适用于在业务高峰期使用。这样,就完不成两个集群上所有机器的版本升级。

2.灰度发布/金丝雀发布

灰度发布/金丝雀发布由以下几个步骤组成:
金丝雀发布是灰度发布的一种。灰度发布是指在黑与白之间,能够平滑过渡的一种发布方式。即在发布过程中一部分用户继续使用老版本,一部分用户使用新版本,不断地扩太大新版本的访问流量。最终实现老版本到新版本的过度。由于金丝雀对瓦斯极其敏感,因此以前旷工开矿下矿洞前,先会放一只金丝雀进去探是否有有毒气体,看金丝雀能否活下来,金丝雀发布由此得名。

发布过程中,先发一台或者一小部分比例的机器作为金丝雀,用于流量验证,如果金丝雀验证通过如把剩余机器全部发掉,如果金丝雀验证关败,则直接回退金丝雀。

优点:金丝雀发布的优势在于可以用少量用户来验证新版本功能,这样即使有问题所影响的也是很小的一部分客户。如果对新版本功能或性能缺乏足够信心那么就可以采用这种方式。

缺点:这种方式也有其缺点,金丝雀发布本质上仍然是一次性的全量发布,发布过程中用户体验并不平滑,有些隐藏深处的bug少量用户可能并不能验证出来问题,需要逐步扩大流量才可以。

3.滚动发布(Rolling Update Deployment)

滚动发布是在金丝雀发布基础上进行改进的一种发布方式。相比于金丝雀发布,先发金丝雀,然后全发的方式,滚动发布机是整个发布过程中按批次进行发布。每个批次拉入后都可作为金丝雀进行验证,这样流量逐步放大直至结束。

优点:这种方式的优点就是对用户的影响小,体验平滑。

缺点:首抗就是发布和回退时间慢,其次发布工具复杂,负载均衡设备需要具有平滑的拉入拉出能力,一般公司并没有资源投入研发这种复杂的发布工具。再者发布过程中新老版本同时运行,需要注意兼容性问题。

4.红黑部署(Red-Black Deployment)

与蓝绿部署类似,红黑部署也是通过两个集群完成软件版本的升级。当前提供服务的所有机器都运行在红色集群Group1中,当需要发布新版本的时候,具体流程是这样的:

  • 先申请一个黑色集群Group2,在Group2上部署新版本的服务; 等到Group2升级完成后,我们一次性地把负载均衡全部指向Group2
  • 把 Group1集群从负载均衡列表中删除,并释放集群Group1中所有机器。 这样就完成了一个版本的升级。可以看到。与蓝绿印署相比

优点:红黑部署获得了两个收益:一是,简化了流程;二是,避免了在升级的过程中,由于只有一半的服务器提供服务,而可能导致的系统过载问题。

缺点:但同样也存在全量升级对用户的影响问题,也带来了一个新的问题,就是发布过程中需要两倍的服务器资源。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
运维管理发布系统 Demo 地址: http://demo.hujingguang.cn username: guest 管理系统 password: 123123 #这是一个运维平台,使用bootstrap 和django 框架进行开发。目前实现了项目管理模块,发布Git和SVN代码库的php工程,回滚代码,以及集成Saltstack 进行应用批量部署模块和命令批量执行. 命令审计查询 前端模板下载地址: https://startbootstrap.com/ Docker Image 部署 docker pull hooversa/ops_system:latest docker run --name ops_system --rm -p 80:81 -d hooversa/ops_system 浏览器打开 127.0.0.1 (用户名/密码: admin/helloworld) 服务器部署步骤, 1 :安装python2.7版本,CentOS6.x, django1.9框架 pexpect python模块,svn工具 git工具 Saltstack 自动化工具 2: pip install django==v1.9.0 && pip install pexpect && yum install git subversion -y && pip install salt==v2015.8.13 3: 进入工程根目录,配置好mysql数据库,执行python manage.py test 测试数据库连接 4: 初始化数据库表,python manage.py makemigrations && python manage.py migrate 5: 创建一个管理员账号, python manage.py createsuperuser ,(在该平台里,只有管理员才能发布工程到正式环境) 6: 第一次发布代码,需要初始化发布记录,直接在表ops_deploy_info 插入一条发布记录,版本号根据自己项目而定,发布到相应的环境需要初始换相应的target字段:如测试环境target为test,预生产环境为pre,正式环境target字段为online. 7: 如果发布到正式环境,需配置ssh秘钥登陆,发布密码为管理员密码。发布到测试环境或预发布环境,密码为机器的root密码 8: 运行平台 python manage.py runserver 0.0.0.0:80 9: 如果要进行应用部署,请将项目根目录下的sls目录里面的所有文件拷贝至salt的file_root 下面,一般为/srv/salt 下面。如果要部署tomcat应用,请自行下载jdk源码包,放在/srv/salt/tomcat/files下面,并修改install.sls文件. 10: 要进行应用部署,需要安装minion客户端,并配置好master 和id ,还有必须在grains 添加三个变量:group,area,usage。 这个三个变量信息会在主机信息对应:组,地址,和用途三栏。否则刷新无法获取到主机信息 11: 命令审计模块需要在各个salt-minion端安装agent.py,该文件位于项目下tools文件夹,在salt-master运行 master.py接受来自agent.py的数据。,master.py需要配置数据库连接信息。直接编辑文件添加即可. git clone https://github.com/hujingguang/OpsSystem.git cd OpsSystem && cat INSTALL -----Demo 地址: http://demo.hujingguang.cn username: guest password: 123123
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值