我们的数据仓库有一个 2 节点集群 SQL Server 2014 Enterprise 环境。存储、网络和服务器都是高性能的(1tb 内存,每个节点 32 核 CPU,所有 SSD)
我们正试图想出将 SSIS 本身放在哪里。根据 Microsoft 文档,不建议将其集群化,因此不应在 2 个节点上(尽管我确实将其与实例一起安装,但我们不必使用 if 从那里可以禁用服务。)另一方面,我们真的不想花钱购买 8 个 vCPU 的许可,以将其放在同一生态系统中的可用服务器上(用于供应商的专有 ETL。)
关于如何/在何处为群集 SQL Server 数据库环境安装 SSIS 的最佳做法和建议是什么?
谢谢你,韦斯
编辑:微软在这里讨论这个问题:https ://learn.microsoft.com/en-us/sql/integration-services/service/integration-services-ssis-in-a-cluster但没有将推荐的方法作为选择。
SSIS 目录和 SQL Server 代理都是故障转移群集实例的一部分,并且在故障转移群集实例发生故障转移时进行故障转移。所以我的建议是将所有包存储在 SSIS 目录中,并使用 SQL Agent 安排它们。并完全忽略 SSIS 服务。
请参阅“本节中的主题讨论 Integration Services 服务,这是一种用于管理 Integration Services 包的 Windows 服务。创建、保存和运行 Integration Services 包不需要此服务。SQL Server 2012 支持 Integration Services 服务以向后兼容集成服务的早期版本。” https://learn.microsoft.com/en-us/sql/integration-services/service/integration-services-service-ssis-service
我们能够让 SSIS 在集群中工作。我们将 SSIS 资源放在与 SQL Server 相同的集群中,添加了 DCOM 权限,一切顺利。唯一剩下的一项是,当在 SSMS 中时,我们不能扩展 MSDB。这似乎是双跳身份验证问题,指出“用户‘NT Authroity\Anonymous Logon’登录失败”
虽然没有得到官方支持,但 Matt Masson 发布了一个在 SQL 2012 或 2014 alwayson 环境中使用 SSIS 的好方法。
https://blogs.msdn.microsoft.com/mattm/2012/09/19/ssis-with-alwayson/
总结一下他的观点:SSISDB 数据库可以在没有修改的情况下很好地进行故障转移,但是一旦在新节点上,由于错误的服务主密钥设置了加密,将无法运行包。
使用作业自动检测故障转移,然后重新加密数据库可以很好地保持 SSISDB 与工作主数据库的连接。
这种方法有一些注意事项。也就是说,在打补丁时,您必须从 AG 中删除 SSISDB 并将其从辅助节点中完全删除(不要只是将其保留在恢复状态,否则系统数据库升级脚本将失败并使您的实例处于难以恢复的位置)。修补完成后,您可以将其重新添加到 AG。
在过去的 3 年里,我一直在一个多子网 alwayson 可用性组中使用这种方法,并且没有遇到任何问题。
SQL Server 2016 允许您将 SSISDB 放入 AlwaysOn 可用性组。