Azure Web App (二)使用部署槽切换部署环境
一,引言
前天我们将到使用Azure的 Pass 服务 “Web App” 去部署我们的.NET Core Web项目,也同时有介绍到如何在VS中配置登陆中国区的Azure账号,今天接着讲,我们部署完我们的Web服务,进行完测试后,肯定是要发布到生产环境,但是我们不可能再去创建一个相同的Web App,配置上生产环境的域名,配置上生产环境的数据库连接字符串等等,而 Azure 的 Web App是可以通过自己的一个叫 “Deployment slots(部署槽)”的功能进行切换。我们来看一下微软给出的使用部署槽的优点,以下是微软的官方文档提到的优势
将应用程序部署到非生产槽具有以下优点:
- 可以在分阶段部署槽中验证应用更改,并将其与生产槽交换。
- 首先将应用部署到槽,然后将其交换到生产,这确保槽的所有实例都已准备好,然后交换到生产。 部署应用时,这样可避免停机。 流量重定向是无缝的,且不会因交换操作而删除任何请求。 当不需要预交换验证时,可以通过配置自动交换来自动化这整个工作流。
- 交换后,具有以前分阶段应用的槽现在具有以前的生产应用。 如果交换到生产槽的更改与预期不同,可以立即执行同一交换来收回“上一已知的良好站点”。
下面,我们正式开始今天的分享。
----------我是分割线----------
Azure Web App 部署系列:
1,Azure Web App(一)发布你的Net Core Web 项目
二,正文
1,升级应用服务计划
定价层为 “Free” 的Web App是无法使用 “Deployment slots” 的功能的,我们需要进行将定价层升级到 “Standard” 或者 “premium”
下图中,我们可以看到 Web App 的 “Deployment slots(部署槽)” 都是有自己的主机名的实力应用,你的应用和环境配置可以在两个部署槽位进行交换。
点击 “Upgarte”,选择 “Production”=>"S1",可以看到 "Staging slots" 过渡槽这个功能
点击 “Apply”,升级后,我们继续跳转到 “CnBateWeb” 的 Web App,左侧菜单选择 “Deployment”=>"Deployment slots",目前只有一个默认槽位,并且状态是 “Running” 的
点击 “Add Slot”,
Name 输入 “IntegrationTesting”,克隆设置选择 “cnbateblogweb”,点击 “Apply”
回到的我们的代码中,我们尝试去修改 Index 页面,在 Welcome 的后面追加 “IntegrationTesting”,我们可以把它理解成,我们的 web项目现在新增了一个功能,同时我们需要进行集成测试,测试通过后,需要发布到生产环境中去。
假如我们在本地开发完成后,也进行了简单的测试,现在需要发布到云端,需要QA的集成测试,我们选择刚刚创建好的 “IntegrationTesting”的槽位。进行发布。
回到 Azure Portal 中,我们创建的 "CnBateBloaWeb" 的 Web App,点击部署槽位刚刚创建的 “cnbateblogweb-IntegrationTesting” 的超链进行跳转
选择左侧菜单 "Overview",,点击图中用红色方框圈起来的“Browse”,进行浏览,测试。
bingo,我们可以清楚的看到,"IntegrationTesting" 是我们刚刚为了集成测试,添加的一个标识,作为我们demo项目的 “假功能”
假如我们新发布的项目经过QA的集成测试通过后,我们需要将这一整套的代码发布到我们的生存环境中去,这个时候,我们还像上一篇将的那样在VS中发布选择之前创建的名字叫 “CnBateBlogWeb” 的 Web App? No,No,No,此时,我们已经将开发好的新功能的代码发布到新创建的 “cnbateblogweb-IntegrationTesting” 的部署槽里了,我们只需要将部署槽里的两个槽位进行交换即可快速完成测试环境到生产环境的代码的切换,接下来,我们进行交换 测试/生产 环境的部署槽。
回到 “Deployment Slot” 页面,点击 “Sswap” 进行交互。
源 选择我们集成环境的 “cnbateblogweb-IntegrationTesting”,目标 选择 “cnbateblogweb”,点击 “Swap”.
在 Azure Portal 上这个过程需要等待差不多20多秒,但是其实,它们两个槽位以及进行了无停机的交换了,我们进行拿着生产环境的域名进行访问,可以看到,我们成功的将刚刚加的新功能发布到生产环境上了。
bingo,我们进行的分析到此也就完了。
三,总结
今天我们演示了一下,如何在Web App中创建 “Deployment Slot”进行快速无停机部署新功能代码,也使用VS进行发布到创建的Web App中创建的新的部署槽位中,同时也引出了另外一个问题,环境变量怎么切换,切换槽位后,生产环境的数据库连接字符串怎么办。下一篇文章,我会继续 部署槽,进行配置部署槽设置,同时在交换槽位的时候,测试环境/生产环境都能够准确的连接到对于的数据库
代码继续暂时不上传了,因为没有设计到其他设置,只是简单的修改了主页,下一篇讲解 配置槽设置 的时候再上传代码
作者:Allen
版权:转载请在文章明显位置注明作者及出处。如发现错误,欢迎批评指正。
Azure Web App (二)使用部署槽切换部署环境的更多相关文章
- 【Azure 应用服务】Azure Web App的服务(基于Windows 操作系统部署)在被安全漏洞扫描时发现了TCP timestamps漏洞
问题背景 什么是TCP timestamps(TCP 时间戳)? The remote host implements TCP Timestamps, as defined by RFC1323 (h ...
- Azure Web App (三)切换你的Net Core Web 项目的数据库连接字符串
一,引言 上一篇文章讲到今天我们演示了一下,如何在Web App中创建 “Deployment Slot”进行快速无停机部署新功能代码,也使用VS进行发布到创建的Web App中创建的新的部署槽位中, ...
- Azure Web App (一)发布你的Net Core Web 项目
一,引言 今天我们看一下Azure上的一个服务-----Web 应用,我们都知道云计算的三大模式:Iaas(基础设施即服务),Paas(平台即服务),Saas(软件即服务). Iass,其实就是虚拟主 ...
- 如何用Azure Web App Services接入微信公众号
注:本文提到的代码示例下载地址>如何用Azure Web App Services接入微信公众号 如何用Azure Web App Services接入微信公众号 简介 此示例演示如何创建Azu ...
- 远程调试 Azure Web App
当我们将 Web App 部署在 Azure 上时,如果能够实现远程调试,将会极大的提高我们修复 bug 的效率.Visual Studio 一贯以功能强大.易用著称,当然可以实现基于 Azure 应 ...
- Windows Azure HandBook (7) 基于Azure Web App的企业官网改造
<Windows Azure Platform 系列文章目录> 1.用户场景: C公司是全球大型跨国连锁餐厅,在世界上大约拥有3万间分店.其IT系统主要部署其海外数据中心,或者租用其他ID ...
- Windows Azure Web Site (18) Azure Web App设置MIME
<Windows Azure Platform 系列文章目录> 在笔者之前的文章中,介绍了我们在使用Azure Web App,可以把静态资源保存到Azure Storage中: Wind ...
- VS 远程调试 Azure Web App
如果能够远程调试部署在 Azure 上的 Web App,将会极大的提高我们修复 bug 的效率.Visual Studio 一贯以功能强大.好用著称,当然可以通吃基于 Azure 应用的创建.发布和 ...
- FTP方式部署Azure Web App
创建部署凭据 在仪表盘中创建或重置部署凭据,在凭据中设置用户名和密码. 通过FTP方式打开Web根目录 在本地资源管理器中打开FTP地址(例如:ftp://cnws-prod-sha-001.ftp. ...
随机推荐
- PyQt5常用控件及方法(代码段)
文章目录PyQt5程序基本格式QMainWindow主窗口QLabel标签QTextBrowser文本浏览器QTextEdit文本编辑器QPushButton按键QCheckBox复选框QRadioB ...
- opencv Scalar
template<typename _Tp> class Scalar_ : public Vec<_Tp, 4> { public: //! various construc ...
- 在采用K8S之前您必须了解的5件事情
作者简介 Christopher Tozzi,自2008年来以自由职业者的身份对Linux.虚拟化.容器.数据存储及其相关主题进行报道. 时至今日,Kubernetes已然成为风靡一时的容器编排调度工 ...
- Python函数参数详解
Python函数参数详解 形参与实参 什么是形参 在定义函数阶段定义的参数称之为形式参数,简称形参,相当于变量名. 什么是实参 在调用函数阶段传入的值称为实际参数,简称实参.相当于"变量值& ...
- Java设计模式十九——责任链模式
责任链模式 老李的苦恼 每个人在出生的时候,都早已在暗中被标好了三六九等. 老李是一名建筑工地的木匠,和大多数生活在社会最底层的农民工一样,一辈子老实本分,胆小怕事.在他们的心中,谁当老爷都没有区别, ...
- nginx 注释配置及详解
前言 DMZ(Demilitarized Zone) 非军事区,生产环境 WEB 服务部署的区域,公司的架构为一台nginx 充当 load balance 服务,负载到两台 nginx 上面,反向代 ...
- Centos7安装部署openstack--nova计算服务
一.概述 使用OpenStack计算服务来托管和管理云计算系统.OpenStack计算服务是基础设施即服务(IaaS)系统的主要部分,模块主要由Python实现. OpenStack计算组件请求Ope ...
- 腾讯T8纯手写66个微服务架构设计模式,全部学会真的“变强”了
微服务的概念虽然直观易懂,但“细节是魔鬼”,微服务在实操落地的环节中存在诸多挑战.我们在为企业提供PaaS.人工智能.云原生平台等数字化转型解决方案时也发现,企业实现云原生,并充分利用PaaS能力的第 ...
- 支持十万并发的黑科技-NIO
今天是猿灯塔“365天原创计划”第3天. 今天讲: 支持十万并发的黑科技-NIO 翻译过来就是:Dubbo是阿里巴巴开源的基于 Java 的高性能 RPC(一种远程调用) 分布式服务框架(SOA),致 ...
- elasticsearch集群配置 (Tobe Continue)
elasticsearch集群配置 (Tobe Continue) 准备 首先需要在每个节点有可以正常启动的单节点elasticsearch elasticsearch集群配置仅需要在elas ...