我们的许多客户拥有大量服务器实例(包括不同类型的副本),数千名用户使用各种客户端应用程序(均来自Perforce和第三方)。升级到新服务器版本时,可能会带来一定的复杂度。

但是,定期更新Helix Core服务器可以带来好处。处于最新版本是技术支持的关键要求。此外,每个Helix Core版本都有许多小的增强功能和问题的解决。根据您所使用的版本,您可能会遗漏许多有用的新功能。最重要的是,Perforce不断提高性能。开发人员的工作效率和高性能自动化是充分利用Helix Core的关键。

大多数Helix Core安装对我们的客户来说都是关键任务,它们涉及许多带有集成,工具和环境设置的移动部件。因此,对于单个服务器之外的任何安装,考虑进行服务器升级需要进行规划。通过正确的计划,可以消除意外因素。

我们将重点关注具有更复杂环境的大型企业客户的技巧。对于较小的团队,您可能不需要遵循所有这些提示,但您可能会从中受益。

为何需要等待服务器升级

Helix Core的实际软件元数据版本升级平均需要不到30秒才能在单个服务器上完成。步骤包括:

停止服务。

交换新版本的二进制文件。

执行类似于p4d -r $ P4ROOT -J $ P4JOURNAL -xu的命令  (具有P4ROOT和P4JOURNAL的适当值)。

重启服务。

对于拥有多台服务器的客户,可以快速更新整个基础架构。许多客户使用Ansible,Puppet和Chef等工具来加速部署。

推出服务器升级很容易。它确保其他一切仍然可以使事情变得复杂。但通过准备,可以避免问题。要成功升级,我们建议您审核,测试和配置系统,以满足当前和未来的需求。

第1步:映射拓扑

如果您还没有,请清点整个开发环境。首先,按位置在电子表格中记录所有内容的配置和版本。检查您的许可证。用户和自动化的客户端是什么,它们在哪里以及它们在做什么?哪些对您的组织最重要?

您想查看活动发生的位置。检查正在与谁进行交互以及与哪些服务器,副本服务器,边缘服务器或代理进行交互。

例如,Linux上的以下命令分析不同客户端版本的标准服务器日志:

grep -a -A1“Perforce服务器信息:”log | grep -a -vE“Perforce服务器信息:| ^ \ - \ - $ | \ t \ S + \ S + pid [0-9] +(计算结束|完成)”| perl -ne'print'$ 1 \ n“if / ^ [^ \ [] + \ [(。+)\] /'| sort | uniq -c | sort -k 1,1 -n

示例输出:

218 p4/2016.2/LINUX26X86_64/1468155

276 CommitTrigger/v81

376 P4V/NTX64/2017.3/1590419/v83

481 unknown/1.50.6550.21600

1681 P4VS/2017.2.159.0319

1743 Builder/1.0.0.0

1789 SWARM/2017.1/1517929

2242 Pipeline.Automation/1.0.0.0

我们可以在组织中看到一些标准的Helix客户端程序和带有版本字符串的自定义工具,例如“Builder”和“Pipeline.Automation”。很容易找到IP地址,从而找出运行它们的机器。

跟踪服务器交互可以帮助您确定需要测试的内容。它有助于确保您不会遗漏任何组件。您可以使用此信息来映射您的环境。

这需要一些时间和计划,但这是顺利进行的重要一步。一旦了解了相关内容,就可以开始决定如何升级。

显然,如果您正在监视事物,检查日志和/或使用仪表板,您已经了解了很多正在发生的事情。与您的基础架构团队共享此信息。它对于在操作期间解决问题非常有用,也是与Perforce支持交互所必需的。

第2步:使用Helix Core测试客户端和集成

大多数升级问题往往发生在自定义客户端程序和与Helix Core服务器交互的其他系统上。例如,当自定义客户端,触发器或工具运行命令并且不返回它所期望的数据时,可能会出现问题。

例如,由于服务器增强,命令输出中可能存在新字段。有时,即使像服务器和API之间的版本不匹配这样的简单事情也可能导致自动化中断。有时,稍微被忽略的系统上的旧安装的p4客户端可能是安装的服务器后面的许多版本。

环境越复杂,客户问题的风险就越大。虽然这种类型的问题很少见并且通常很容易修复,但也很容易避免。

拥有服务器的测试实例可以检查升级之间的集成是否兼容。为安装服务器而安装的自定义内置集成可能需要与Helix Core一起更新。

要执行测试:

复制生产检查点并还原到测试实例。

根据测试升级所需的多个软件仓库/存档文件进行复制(通常是完整存储库的一小部分)。

测试各种工具和集成,包括自定义配置。这应包括触发器和其他工作流程增强功能。

如果需要,请在继续升级之前修复客户端程序中的问题。

测试新版本可让您发现较小规模的问题。因此,当您升级时,您将避免出现一些意外,这意味着您的团队可能出现的停机时间最短。

步骤3:使用服务器部署包(SDP)自动执行服务器升级

映射环境并测试客户端和集成后,您应该已准备好继续升级。

但是,还有一处值得你去了解的地方。为了帮助各种规模的企业有效地升级和最小化服务器停机时间,Perforce提供了开源服务器部署包(SDP)。SDP包括管理员使用的一组标准脚本,它可以帮助提供跨所有实例和服务器的管理一致性。

一旦安装和配置,它还允许企业轻松升级。这可以自动升级多个服务器。传统的建议是从环境的外边开始并向内工作(在掌握之前复制)。但我们现在建议同时升级所有内容。

SDP如何运作?

使用SDP Package进行升级时,只需在计算机上为实例完成两个步骤:

下载P4和P4D的新版本。

运行upgrade.sh <instance>,例如

/p4/common/bin/upgrade.sh 1

在后台,SDP完成了这项工作。它会停止服务器,通过日志轮换提供干净的“升级点”,更新实时和脱机目录上的数据库,然后重新启动服务器。

但升级只是SDP的一个方面。

使用Perforce规划您的未来

一些客户是最“先进”的使用者,他们的服务始终保持在最新版本。其他客户太忙了,他们每隔几年更新一次。对于这两种企业而言,SDP可以成为您解决方案中不可或缺的一部分。

SDP提供经过验证的基本管理和最佳实践功能,包括init脚本和检查点脚本。该套餐包括:

用于规划,部署和管理复杂拓扑的资源。

开发自定义触发器的标准。

最佳实践配置和其他产品设置。

壳环境管理标准。

管理员的补充维护脚本 - 包括清理任务,删除旧的/未使用的工作空间以及删除标签。

正确的安装可以成为任何规模的实时产品和eval / PoC部署的差异化因素。SDP非常成熟,足以满足许多苛刻环境的复杂需求,无需定制。它提供了一个扩展框架,有助于控制自定义部署的复杂性。

改善您的环境; 使您的服务器升级变得容易

更频繁地升级,同时需要每年两次分配时间进行重大升级,这意味着每个实例的变化和变量的幅度都会更小。此外,保持当前服务器使用率(例如,使用的各种自定义客户端)并运行标准测试安装,使升级成为低风险活动。

随着技术的变化,SDP也在发生变化。我们鼓励Perforce社区进行沟通和变更。它不断接收和整合Perforce Consulting,Support和Engineering的意见。

现在您已准备好开始制定升级计划。最新版本的Helix Core,功能包括:

利用WAN加速技术更好地支持远程团队。

通过在负载下提高服务器弹性,提高并行同步性能。

改进了故障转移。一个命令替换了多个触发器

加强安全性(包括多因素身份验证和SAML 2.0身份验证)。

原文链接:https://www.perforce.com/blog/vcs/how-plan-easy-server-upgrade