【问题标题】:Connection Strings in the Code and Continuous Deployment代码中的连接字符串和持续部署
【发布时间】:2017-07-04 20:45:07
【问题描述】:

我正在尝试设置连接字符串是我的 Azure 资源部署项目。这将通过 Octopus 触发。我们希望每次部署都有一个干净的系统。我们要完成持续部署。项目应该应对变化。系统应该为蓝绿色部署做好准备?

我在考虑

  • I. 使用负载平衡器,配置指向负载平衡器和连接字符串。
  • II.在每次部署时使用不同的数据库名称,因此每次资源都是唯一的。

我会面临哪些挑战?我是否必须拥有像 ZooKeeper 这样的工具?

使用 Azure 资源项目按类型划分的项目结构

参数和变量集中于保持小于 20

【问题讨论】:

    标签: azure continuous-integration apache-zookeeper continuous-deployment azure-resource-manager


    【解决方案1】:

    我建议在这种情况下使用 Jenkins 来实现持续部署。我已经成功实现了。

    有一个称为轮询 SCM 的功能。当您有新的提交时,这将导致构建。

    构建完成后,您可以使用工具 octo.exe 创建一个版本并将该版本部署到您的特定环境。

    我使用以下代码来创建和部署版本:

    创建发布:

    octo.exe create-release --project=%Environment% --server %Server% --apiKey %APIKEY% --version %version% --packageversion %version%
    

    我的变量在更高级别定义以提供松散耦合:

    %Environment%:章鱼环境 %Server%: 八达通服务器 %APIKEY%:API 密钥 %Timeout%:超时到期

    部署发布:

    octo.exe deploy-release --project %Environment% --releaseNumber %version% --deployto %Environment% --server %Server% --apiKey %APIKEY% --progress --deploymenttimeout %Timeout%
    

    Jenkins 非常灵活,对持续部署有很大帮助。你可以有不同的工作:

    一个绿色,一个蓝色

    绿色完成后,可以触发一个蓝色。至于数据库更改,您可以使用 powershell 和 sql cmd 来更改您的数据库和/或执行脚本。

    【讨论】:

      【解决方案2】:

      在您的场景中,您可以创建部署槽并使用自动交换功能。这将减少停机时间和风险。有关更多详细信息,请参见: Configure Auto Swap

      另外,对于第一个问题,您可以创建 2 个数据库,一个用于生产,一个用于暂存。您可以使用如下所示的粘性设置将数据库粘贴到特定插槽。看到这个:Configuration for deployment slots

      此外,您还可以预热插槽,以便在交换之前准备好处理请求。

      HTH!

      【讨论】:

      • 网络应用和部署槽的问题并不稳定。他们生活在相同的资源上。我希望每次部署时都有一个干净的系统。
      • 你说的不稳定是什么意思?你能详细说明一下吗?
      • 他们生活在同一个资源上。如果其中一个给出 stackoverflow 错误。该资源上的所有应用程序都已死!
      • 这是不正确的。 Web 应用程序和插槽在 2 个单独的进程中运行,并且彼此不依赖。
      • 它们依赖于机器(资源)。资源是有限的……试试看……
      猜你喜欢
      • 1970-01-01
      • 2013-04-05
      • 2014-09-07
      • 2010-10-19
      • 1970-01-01
      • 1970-01-01
      • 2015-10-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多