我有以下情况:
两台机器(例如 NODE1 和 NODE2)在故障转移群集(例如 CLUSTER)中安装了 Windows Server 2003。在这个集群上成功安装了 SQL Server 2005,假设虚拟服务器是 DATABASE。然后,SSRS 2005 安装在 NODE1 上。
问题是要使用此设置的应用程序假定报告服务在http://DATABASE/reports上运行,但是,鉴于唯一可能的安装(据我所知),您只能获得http://NODE1 /报告。
应用程序无法修改,正确的方法是什么?
我正在考虑在集群上设置 IIS(并让它作为虚拟数据库服务器运行)并在其上安装报告和报告服务器 webapps,使问题消失,但我不确定这是否真的可行也不是最好的选择。
我考虑过的另一个选择是安装反向代理,但我又不确定如何让它在http://DATABASE/reports上回答,而至少不必先安装 IIS(并采取额外的步骤.)
建议?
我昨天没有意识到的是 DATABASE 还解析到当前活动的节点,而不仅仅是 CLUSTER:
假设 DATABASE 是集群名称,NODE1 和 NODE2 是节点,那么 DATABASE 解析为当前活动节点,因此如果 NODE1 是活动节点,则 DATABASE 解析为 NODE1。
因此,要做的事情是在两个节点中安装报告服务,让它们都指向数据库集群中的同一个 ReportServer 数据库。
假设您已经拥有集群并且已经在集群模式下安装了 SQL Server(要求)。始终使用相同的版本(每个节点中的报告服务之间的 SP 相同。)
然后,这些是要遵循的步骤:
连接到活动节点 (NODE1) 并在其上安装和配置报告服务,在 DATABASE 上创建 ReportServer 数据库(通过数据库设置,向数据库提供适当的凭据),然后在配置中初始化数据库。
然后在被动节点 (NODE2) 上连接、安装和配置报告服务,将数据库设置为 DATABASE 上的现有数据库(您已经创建的数据库,提供相同的凭据以连接到数据库),但不要初始化它现在(在被动节点上)。
连接回主动节点并再次运行报告服务配置,现在在初始化中您将看到被动节点出现,然后您可以从那里对其进行初始化。
然后,您将拥有两个报告服务实例,每个节点上都有一个,并指向同一个数据库。现在,当节点故障转移时,您将使另一个实例正常工作。
到目前为止,我发现的唯一痛苦是,如果您不公开日志,也不能通过 \DATABASE\C$\Program Files\MSSQL...\ReportServer\Logs 访问它们,那么您必须记住哪个是活动的节点去那里查看日志。
这称为“向外扩展 Reporting Services”,仅在企业版(加上开发人员和评估)上受支持
参考:
http://technet.microsoft.com/en-us/library/ms156453(SQL.90).aspx
http://technet.microsoft.com/en-us/library/ms159114(SQL.90).aspx
要升级两个报表服务器: http ://technet.microsoft.com/en-us/library/ms143735(SQL.90).aspx