如何将包含多个组件的应用程序部署到Azure?

时间:2015-05-28 18:08:43

标签: c# asp.net azure devops

所以我的应用程序由一些独立的.NET组件组成,这些组件都在Azure中运行。为了让您了解所涉及的内容:

  • 作为Azure网站运行的主要ASP.NET MVC5 / Web API 2 REST服务(我认为他们将这些服务重命名为Web应用程序?)。
  • 主REST服务使用的SQL数据库。
  • 主要REST服务与Azure网站运行的另一个内部Web API REST服务。
  • 内部Web API REST服务使用的Azure存储表。
  • 3个预定作业(只是.NET exe),它们可以在后台运行,也可以与主SQL数据库通信。

现在,所有这些都在Azure中运行良好。我的问题是自动化部署和配置。

现在一切都是手动的。我右键单击并从Visual Studio发布这两个Web应用程序。我构建并FTP了Web作业。数据库和Azure存储已经存在,因此我不必重新设置它们。

但是说一些不好的事情发生了 - 数据中心发生了故障或其他事情。我希望能够以最小的努力启动我的应用程序的新版本(包含所有这些组件)。

我对Azure世界很陌生,所以我不知道从哪里开始。我有什么选择?

3 个答案:

答案 0 :(得分:1)

您希望在Azure中自动部署。我建议使用ElasticBox来解决它。

要实现自动化,您需要为需要部署的每个不同服务或组件创建一个框(框是抽象单元,用于定义任何云中服务或应用程序部署的安装和配置)。

还可以基于VM实例,VM角色或工作者角色创建框,还可以自动部署Microsoft SQL Server。让我们说出Azure提供的每个选项附近。

然后完成这些框(可以自定义并重复使用之前手动安装中的旧代码),您可以部署多个vms,几乎不需要手动干预,只需单击一下或带有一些参数的命令。

一个框包含部署所需的变量(您可以设置这些变量的默认值)和旧脚本(在本例中可能是PowerShell,但它们可能是bash,python,perl,java或任何其他语言)

部署方框时:

  • 在您选择的位置以及您预配置的Azure配置中创建Cloud Service或VM。它负责在Azure提供商中或在市场中的任何其他云提供商附近提供虚拟机。

  • 使用指定的变量安装,配置文件并执行已定义的SQL或Web服务。

与服务互动的其他方式:

  • Jenkins' Plugin可用于构建CI环境,将您的代码更新或Pull Request与Azure或任何其他公共云中的自动部署相连接。

  • Command line tool,可以对您的盒子进行虚拟机部署,还可以使用它来管理已部署的虚拟机实例。

答案 1 :(得分:1)

Azure Resource Manager(ARM)旨在准确解决您所描述的问题。

基本思想是使用JSON模板来描述您的所有服务。然后,您可以将该模板提供给ARM,它将创建模板中定义的服务。如果您想进行更改,而不是强制执行(通过PowerShell或门户中的手动),只需更新您的模板,将其传递给ARM,它将进行必要的更改,以使服务与您的模板匹配。

一些资源:

答案 2 :(得分:0)

我认为您正在寻找帮助您将handel部署到Windows Azure服务器的东西。如果是这种情况,我建议调查Jenkins CI。在Jenkins和Azure协同工作方面,您可以在线查看许多可用的资源。