部署应用程序架构
- Azure应用程序服务App Service
-
- 对APP启用诊断日志记录 Enable diagnostics logging for apps in Azure App Service
- 预配应用服务 Web 应用来托管 docker 映像并将自定义域映射到应用服务 Web 应用
- Azure应用服务计划
- 蓝绿部署
- 灰度发布
- Azure应用部署槽
- Azure逻辑应用Logic Apps
-
- Azure 逻辑应用连接到本地数据源
-
- 先决条件
- 创建 Azure 网关资源
- 连接到本地数据
- 编辑连接
- Azure 函数Functions
-
- Azure Functions有三种定价计划:
-
- 消耗计划Consumption plan
- 高级计划 Premium plan
- 专用托管计划Dedicated hosting plans
- HTTP 常用 Method
- 比较Azure Functions和 Azure逻辑应用
- WebJobs
-
- 创建一个基于容器的网络应用
- 创建和管理部署槽
- VNet集成
- 访问控制
- 混合连接
- CDN
Azure应用程序服务App Service
Azure应用服务是一项基于HTTP的服务,用于托管Web应用程序、REST API和移动后端。可以使用.NET、NET Core,Java、Ruby、Node,js、PHP或Python等偏好的语言进行开发。在基于Windows和Linux的环境中,应用程序都可以轻松地运行和缩放。
应用服务不仅可将 Microsoft Azure的强大功能(例如安全性、负载均衡、自动缩放和自动管理)添加到应用程序。你还
可以利用其DevOps 功能,例如,从Azure DevOps、GitHub、Docker Hub和其他源进行持续部署,包管理,过渡环境,自定义域和TLS/SSL 证书。
使用应用服务时,需要支付 Azure计算资源的使用费。使用的计算资源量由运行应用的应用服务计划确定。
对APP启用诊断日志记录 Enable diagnostics logging for apps in Azure App Service
- 应用程序服务通过内置诊断(diagnostics)来调试应用程序。
预配应用服务 Web 应用来托管 docker 映像并将自定义域映射到应用服务 Web 应用
- 创建容器并映射网址
- 创建webapp应用服务计划
- 配置webapp名字
-关联起来
Azure应用服务计划
创建应用服务,就要创建应用服务计划
在应用服务(Web应用、API应用或移动应用)中,应用始终在应用服务计划中运行。此外,Azure Functions 也可选择在应用服务计划中运行。应用服务计划为要运行的Web应用定义一组计算资源。这些计算资源类似于传统web 承载中的服务器场。可将一个或多个应用配置为在相同的计算资源中(或相同的应用服务计划中)运行。
在特定的区域(例如"西欧")中创建应用服务计划时,将在该区域中为该计划创建一组计算资源。放入此应用服务计划的任何应用都在应用服务计划定义的这些计算资源中运行。每个应用服务计划定义:
- 区域(美国西部、美国东部,等等)
- VM实例数
- VM实例大小(“小型”、“中型”、“大型")
- 定价层(免费、共享、基本、标准、高级、高级V2、独立)
应用服务计划的定价层确定了所提供的应用服务功能和计划费用。定价层有以下几个类别:
- 共享计算:“免费"和"共享”,这两个基本层在其他应用服务应用(包括其他客户的应用)所在的同一个 Azure VM上运行应用。这些层为共享资源中运行的每个应用分配 CPU 配额,且资源不可横向扩展。
- 专用计算:“基本"、“标准"”、“高级"和’高级V2"层在专用的Azure VM上运行应用。只有同一应用服务计划中的应用可以共享相同的计算资源。层越高,可用于横向扩展的M实例就越多。
- 隔离:此层级在专用 Azure 虚拟网络上运行专用 Azure VM。它在计算隔离的基础上为应用提供了网络隔离。此层提
供最大的横向扩展能力。
蓝绿部署
在一般情况下,升级服务器端应用,需要将应用源码或程序包上传到服务器,然后停止掉老版本服务,再启动新版本。但是这种简单的发布方式存在两个问题,一方面,在新版本升级过程中,服务是暂时中断的,另一方面,如果新版本有BUG,升级失败,回滚起来也非常麻烦,容易造成更长时间的服务不可用。
所谓蓝绿部署,是指同时运行两个版本的应用,如上图所示,蓝绿部署的时候,并不停止掉老版本,而是直接部署一套新版本,等新版本运行起来后,再将流量切换到新版本上。但是蓝绿部署要求在升级过程中,同时运行两套程序,对硬件的要求就是日常所需的二倍,比如日常运行时,需要10台服务器支撑业务,那么使用蓝绿部署,你就需要购置二十台服务器。
灰度发布
在灰度发布开始后,先启动一个新版本应用,但是并不直接将流量切过来,而是测试人员对新版本进行线上测试,启动的这个新版本应用,就是我们的金丝雀。如果没有问题,那么可以将少量的用户流量导入到新版本上,然后再对新版本做运行状态观察,收集各种运行时数据,如果此时对新旧版本做各种数据对比,就是所谓的A/B测试。
当确认新版本运行良好后,再逐步将更多的流量导入到新版本上,在此期间,还可以不断地调整新旧两个版本的运行的服务器副本数量,以使得新版本能够承受越来越大的流量压力。直到将100%的流量都切换到新版本上,最后关闭剩下的老版本服务,完成灰度发布。
如果在灰度发布过程中(灰度期)发现了新版本有问题就应该立即将流量切回老版本上,这样,就会将负面影响控制在最小范围内。
Azure应用部署槽
将Web 应用、Linux 上的Web 应用、移动后端或API应用部署到Azure应用服务时,如果应用在’标准"、“高级"或“隔离"应用服务计划层中运行,则可以使用单独的部署槽,而不是默认的生产槽.部署槽是具有自身主机名的实时应用。两个部署槽(包括生产槽)之间的应用内容与配置元素可以交换。
将应用程序部署到非生产槽具有以下优点:
- 可以在分阶段部署槽中验证应用更改,并将其与生产槽交换。
- 首先将应用部署到槽,然后将其交换到生产,这确保槽的所有实例都已准备好,然后交换到生产。部署应用时,这样可避免停机。流量重定向是无缝的,且不会因交换操作而删除任何请求。当不需要预交换验证时,可以通过配置自动交换来自动化这整个工作流。
- 交换后,具有以前分阶段应用的槽现在具有以前的生产应用。如果交换到生产槽的更改与预期不同,可以立即执行同一交换来收回“上一已知的良好站点”。
每种应用服务计划层支持不同数量的部署槽。使用部署槽不会产生额外的费用。
Azure逻辑应用Logic Apps
Azure逻辑应用是一项云服务,用于在需要跨企业或组织集成应用、数据、系统和服务时计划、自动执行和协调任务、业务流程和工作流。逻辑应用可简化可缩放解决方案的设计和生成方式,适用于应用集成、数据集成、系统集成、企业应用程序集成(EAl)和企业到企业(B2B)通信,不管是在云中还是在本地。
创建
Azure 逻辑应用连接到本地数据源
官网
https://docs.microsoft.com/en-us/azure/logic-apps/logic-apps-gateway-connection#prerequisites
先决条件
- 已在本地计算机上安装了本地数据网关。必须先存在此网关安装,然后才能创建链接到此安装的网关资源。
- 你具有用于网关安装的相同 Azure 帐户和订阅。此 Azure 帐户只能属于单个 Azure Active Directory (Azure AD) 租户或目录。必须使用相同的 Azure 帐户和订阅才能在 Azure 中创建网关资源,因为只有网关管理员才能在 Azure 中创建网关资源。目前不支持服务主体。
- 逻辑应用和网关资源不必存在于同一 Azure 订阅中。在可以使用网关资源的触发器和操作中,可以选择具有网关资源的其他 Azure 订阅,但前提是该订阅与逻辑应用位于同一 Azure AD 租户或目录中。您还必须对网关具有管理员权限,其他管理员可以为您设置这些权限。
创建 Azure 网关资源
在本地计算机上安装网关后,请为网关创建 Azure 资源。
连接到本地数据
创建网关资源并将 Azure 订阅与此资源关联后,现在可以使用网关在逻辑应用和本地数据源之间创建连接。
- 在 Azure 门户中,在逻辑应用设计器中创建或打开逻辑应用。
- 添加支持本地连接的连接器。如果此连接器同时具有托管版本和内置版本,请确保使用托管版本。
- 选择"通过本地数据网关连接"。
- 在"网关"下,从"订阅"列表中选择包含所需网关资源的 Azure 订阅。
- 逻辑应用和网关资源不必存在于同一 Azure 订阅中。可以从其他 Azure 订阅中进行选择,每个订阅都有一个网关资源,但前提是这些订阅与逻辑应用位于同一 Azure AD 租户或目录中,并且你对网关具有管理员权限(其他管理员可以为你设置该权限)
- 从"连接网关"列表中(显示所选订阅中的可用网关资源),选择所需的网关资源。每个网关资源都链接到单个网关安装。 注意:网关列表包括其他区域中的网关资源,因为逻辑应用的位置可能与网关资源的位置不同。
- 提供唯一的连接名称和其他所需信息,具体取决于要创建的连接。
唯一的连接名称可帮助您以后轻松找到该连接,尤其是在创建多个连接时。如果适用,还要为您的用户名添加符合条件的域名。
下面是一个示例:
编辑连接
- 若要仅查找逻辑应用的所有 API 连接,请在逻辑应用的菜单上的"开发工具"下,选择"API 连接"。
- 选择所需的网关连接,然后选择"编辑 API 连接"。
Azure 函数Functions
Azure Functions 允许你运行小段代码(称为"函数")且不需要担心应用程序基础结构。借助Azure Functions,云基础结构可以提供应用程序保持规模化运行所需的所有最新状态的服务器。
函数由特定类型的事件“触发"”。支持的触发器包括对数据更改做出响应、对消息做出响应、按计划运行,或者生成HTTP请求的结果。
虽然你始终可以直接针对大量服务编写代码,但使用绑定可以简化与其他服务的集成。使用绑定,你能够以声明方式访问各种Azure服务和第三方服务。
Azure Functions的一些主要功能包括:
- 无服务器应用程序:使用Functions,可在 Microsoft Azure上开发无服务器应用程序。
- 语言选择:使用所选的C#、Java、JavaScript、Python和 PowerShell编写函数。
- 按使用付费定价模型:仅为运行代码所用的时间付费。请参阅定价部分中的使用托管计划选项。
- 自带依赖项:Functions 支持NuGet和 NPM,允许你访问你喜欢的库。
- 集成的安全性:使用OAuth提供程序(如Azure Active Directory、Facebook、Google,、Twitter和Mrcrosoft帐户)保护HTTP触发的函数。·简化的集成:轻松与Azure服务和软件即服务(SaaS)产品/服务进行集成。
- 灵活开发:直接在门户中编写函数代码,或者通过 GitHub、Azure DevOps Services.和其他受支持的开发工具设置持续集成和部署代码。有状态无服务器体系结构:使用Durable Functions协调无服务器应用程序。
- 开放源代码:Functions运行时是开源的,可在GitHub上找到。
因为创建的最小的,功能有所阉割
可以在云中创建,也可在本地创建函数应用
上传
测试代码,有问题在本地重新编辑
Azure Functions有三种定价计划:
https://learn.microsoft.com/en-us/azure/azure-functions/consumption-plan
消耗计划Consumption plan
- 消耗计划Consumption plan: 使用消耗计划时,Azure Functions 主机的实例会根据传入事件的数量动态添加和删除。 消费计划是 Azure Functions 的完全无服务器托管选项。
- 好处:消耗计划会自动扩展,即使在高负载期间也是如此。在消耗计划中运行函数时,仅当函数正在运行时,才需要为计算资源付费。在消耗计划中,函数执行在可配置的时间段后超时。
高级计划 Premium plan
-
高级计划:你指定多个预热实例,这些实例始终处于联机状态,并随时可以立即响应。函数运行时,Azure 会提供所需的任何其他计算资源。你需要为持续运行的预热实例以及在 Aure缩放应用时使用的任何其他实例付费。
-
高级计划托管为您的功能提供以下好处:
1:避免冷启动与温热实例。
2:虚拟网络连接。
3:无限执行时间,保证60分钟。
4:选择高级实例大小。
5:与消耗计划相比,定价更可预测。
6:用于具有多个函数应用的计划的高密度应用分配。
使用高级计划时,将根据传入事件的数量添加和删除 Azure 函数主机的实例,就像消耗计划一样。可以将多个函数应用部署到同一高级计划,并且该计划允许你配置计算实例大小、基本计划大小和最大计划大小。
-
专用网络连接:部署到高级计划的函数应用可以利用 Web 应用的 VNet 集成。配置后,应用可以与 VNet 中的资源通信,也可以通过服务终结点进行保护。应用程序上还提供了IP限制来限制传入流量。
专用托管计划Dedicated hosting plans
- 专用托管:将函数像Web应用一样运行。如果已对其他应用程序使用应用服务,可以按相同的计划运行你的函数,不用另外付费。
- 应用服务计划定义一组要运行的应用的计算资源。这些计算资源类似于传统托管中的服务器场。可以将一个或多个函数应用配置为在与其他应用服务应用(如 Web 应用)相同的计算资源(应用服务计划)上运行。这些计划包括基本、标准、高级和隔离 SKU。
- 在以下情况下考虑应用服务计划:
1:你有现有的、未充分利用的 VM,它们已经在运行其他应用服务实例。
2:您想提供一个自定义图像来运行您的函数。
HTTP 常用 Method
- GET:获取资源
- POST:提交,添加资源
- HEAD:获取报头信息,例如检查 cache 是否被修改,是否过期
- OPTIONS:Priflight Request
比较Azure Functions和 Azure逻辑应用
函数和逻辑应用是用于启用无服务器工作负荷的Azure服务。Azure Functions是一种无服务器计算服务,而Azure逻辑应用提供无服务器工作流。两者都可以创建复杂的业务流程。业务流程是函数或步骤(在逻辑应用中称为“操作"”)的集合,将执行这些函数或步骤来完成复杂任务。例如,若要处理一批订单,可以并行执行某个函数的许多实例,等待所有实例完成,然后执行某个函数来计算聚合结果。
对于Azure Functions,通过编写代码并使用Durable Functions扩展来开发业务流程。对于逻辑应用,你通过使用GUI或通过编辑配置文件来创建业务流程。
在构建业务流程、从逻辑应用中调用函数以及从函数中调用逻辑应用时,可以混合使用各种服务。可以根据服务功能或你的个人喜好选择如何构建每个业务流程。
WebJobs
创建一个ASP.NET Web应用程序,添加一个新的WebJob
WebJob是在App Service后台运行的程序。 它与您的Web应用程序在相同的环境中运行,无需额外费用。 也许你需要做一些每小时任务或每天凌晨1点做一些清理工作。 Azure Application Insights使用WebJob报告应用程序的统计信息。
WebJobs可以按小时或每天安排,但也可以触发。 触发器可以是文件上载或队列上的新消息。
WebJobs 对比 Functions
- 在某种程度上,Functions是WebJobs的后继者。 Functions(通常)是在Azure中运行的一小段代码,就像WebJobs一样,在某个事件中触发,包括HTTP触发器。
- Functions通常是WebJobs的一个很好的替代品,但如果你已经有了一个Web应用程序,那么使用WebJob就可以了。 特别是当您想在WebJob和Web应用程序之间共享代码或设置,这也使部署非常容易,因为它们在相同的上下文中运行。
创建一个基于容器的网络应用
选规格,测试环境没有过度槽
创建和管理部署槽
需要P1V2以上才有部署槽
灰度发布
VNet集成
内部虚拟机可以进行访问,控制分配,上传等
访问控制
类似安全组
混合连接
本地数据库到云端之间的连接
性能不好,网络费用较高,通过公网连接不安全,不推荐混合连接
CDN
- 比如在中国创建个网站,美国用户想要访问网站的静态内容,通过CDN技术,在美国创建CDN节点,用户第一次访问是CDN节点从中国网站获取,第二次之后访问是直接访问的CDN缓存,不直接访问中国网站,加快了网页响应时间
- 静态内容是,访问网页直接显示出来,不需要你点击搜索或者其他动作,就可以看到你想要访问的内容
- 动态网页,就是说该网页文件不仅具有HTML标记,而且含有程序代码,用数据库连接,动态网页能根据不同的时间,不同的来访者显示不同的内容,动态网站更新利便,一般在后台直接更新。