【问题标题】:Continuous Integration Server Setup: From Dev to Production持续集成服务器设置:从开发到生产
【发布时间】:2009-05-16 01:50:21
【问题描述】:

我们正在重新配置我们的服务器环境,从开发到生产。所有服务器都将是作为 VM 运行的 Windows 2008 服务器。我们将使用 TeamCity 进行持续集成,并使用 SubVersion 作为我们的版本控制系统。

在阅读了一些建议之后,这是我目前计划采取的措施(不包括任何冗余、灾难恢复等...):

  • 生产: (1) Web 服务器 + (1) DB 服务器
  • 暂存: (1) Web 服务器 + (1) DB 服务器
  • 构建: (1) SVN + TeamCity Web&DB + (1) TeamCity 代理
  • 开发: (1) Web/DB 服务器

所以总共 2 个生产 + 2 个暂存 + 2-3 个构建 + 1 个开发 = 7-8 个服务器

我的问题是:

  1. SVN 应该放在专用服务器上,还是可以放在开发服务器上?

    答案:到目前为止,似乎一致认为 SVN 不应该在开发服务器上。它应该是独立的,或者可以与 TeamCity 在同一台服务器上配对。

  2. TeamCity 应该在专用服务器上,还是可以在 SVN 服务器上运行?

    答案:目前的共识是,TeamCity可以与 SVN 位于同一服务器上,特别是如果 TeamCity 代理和 SQL DB 位于不同的服务器上。

  3. 还有其他建议和最佳做法吗?

    答案:TeamCity 应拆分为 3 个服务器实例:一个用于 TeamCity Web,一个用于 TeamCity Agents,一个用于 TeamCity SQL DB。

我正在尝试进行可靠的最佳实践设置,同时尽量减少服务器蔓延。

【问题讨论】:

  • Nitpick:“并为我们的 SVN 存储库使用 SubVersion” - SVN 是 subversion 的缩写。“为我们的 SCM 使用 subversion”会更有意义..
  • 将 SVN 更改为修订控制系统。 :)

标签: deployment continuous-integration installation teamcity


【解决方案1】:

回答您的问题:

  • 我会将 SVN 放在与开发服务器不同的服务器上。 开发服务器上通常会安装各种垃圾。
  • TeamCity 可以与 SVN 服务器在同一台服务器上。 (将其称为您的构建服务器)
  • 您的生产系统中没有内置任何弹性。
    我建议至少再拥有两台服务器,另一台 Web 服务器和一台从您的实时数据库服务器镜像的热备用数据库服务器。
    这些不应与您的其他服务器位于同一数据中心,并且应使用其他网关连接到互联网。

【讨论】:

  • 关于故障转移的要点。目前我们在 VMWare 环境中运行,依赖于 VMotion 等 VMWare High-Availabilty 功能……但是,如果整个 DataCenter 出现故障,我们就完蛋了。但这将是我们服务器重新配置项目的第二阶段。
【解决方案2】:

我刚刚使用 SQL Server DB 和我们在 Tomcat 上运行的 webapp 实例设置了 TeamCity,所有这些都在同一个 Windows VM 上。

  • TeamCity Web 服务器在 Tomcat本身,并使用了很多 内存(与任何 Tomcat 应用程序一样)。
  • TeamCity Build 代理,因为他们 编译,使用大量内存。
  • SQL Server 是内存大户。

JetBrains 提到构建代理不应该与 Web 服务器运行在同一台服务器上。我建议也将数据库分开(在物理机上,而不仅仅是 VM),以便 CI 设置本身使用 3 个系统(TeamCity Web 服务器、TeamCity 数据库、TeamCity 构建代理)。如果您的构建需要超过几分钟的时间,我会添加另一个构建代理服务器,这样开发人员就不会在提交时排队,特别是如果您使用的是来自 IDEA 或 Eclipse 的 TeamCity 的远程运行/个人构建功能。

将 SVN 服务器与 TeamCity Web 服务器放在同一系统上不会有问题。

请记住,编译是一项通常受 CPU 限制或磁盘访问限制的活动。构建代理将受益于分离到单独的 CPU 和/或磁盘上。但是,由于多个 VM 的开销,位于共享磁盘和 CPU 的单独 VM 上可能浪费多于帮助。

【讨论】:

  • 所以我想问题变成了,TeamCity 可以/应该使用现有的 SQL 服务器之一作为它的数据库吗? (即:开发服务器或暂存数据库服务器)。只为 TeamCity 数据库专用一个单独的服务器似乎是一种耻辱。
  • 它可能不需要。但是,例如,拥有开发数据库服务器作为 TeamCity 数据库的双重职责也会给您带来问题吗?当 dev 运行缓慢时,您是否必须决定是否应归咎于 TeamCity?我的猜测是否定的,尤其是在开发实例上,但您必须为自己的项目做出决定,权衡减少一台服务器的便利性与潜在的资源争用。
  • 说 SQL Server 是内存大户是错误的描述,但它确实倾向于消耗所有 可用 内存。如果对其内存分配设置了限制,那么它通常会很高兴地生活在其中。根据对服务器的要求,这个限制实际上可能非常低,我已经看到限制为 70Mb 的 SQL 实例运行得非常愉快,并且完成了他们设计的工作。不受限制的 SQL 服务器只会消耗内存,直到其他应用程序尝试分配它,此时它将释放内存。
猜你喜欢
  • 2016-07-16
  • 2014-01-12
  • 1970-01-01
  • 2012-02-29
  • 2010-09-15
  • 1970-01-01
  • 2015-10-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多