lunes, 21 de diciembre de 2009

Reporting Service 2005 integrado con MOSS 2007, sobre Windows 2008 R2

Si bien la instalación de Reporting Service 2005 integrado con MOSS 2007 es relativamente sencilla, su implementación sobre sistema operativo Windows Server 2008 puede tener algunas complicaciones que a más de uno les dará un buen dolor de cabeza.


El escenario en el que me tocó trabajar es el siguiente:
Granja Sharepoint de 3 servidores (1 servidor de aplicaciones y 2 Web Front-End) y un Cluster SQL Server 2005, todo ejecutandose sobre Windows Server 2008 R2.

Para la instalación de Reporting Service en un ambiente distribuido, se deben usar cuentas de dominio para su configuración, en vez de la utilización de la cuenta Network Service u otra similar, esto sobre Windows 2003 no implica problema alguno, sin embargo en Windows 2008 es un poco más complejo.

A continuación detallaré los pasos para instalar y configurar Reporting Service 2005 integrado con Sharepoint 2007, sobre sistema operativo Windows 2008 (valido también para la versión R2):

Instalación pre-requisitos:

Antes de instalar SSRS 2005 se deben instalar algunos roles y características de Windows:
Rol de Web Sever (IIS) con las siguientes características:
- Herramientas de Administración
- IIS 6 WMI Compatibility
- IIS 6 Metabase Compatibility
- ASP .Net
- Extensiones ISAPI
- Filtros ISAPI
- Default Document
- Directory Browsing
- HTTP Errors
- HTTP Redirections
- Static Content

Para datos adicionales pueden ingresar en el siguiente link: http://support.microsoft.com/kb/934164

Instalación SQL Server 2005 Reporting Service

Reporting Service se debe instalar sobre los servidores que actuan como Web Front End en la granja Sharepoint.  Se debe instalar solo el rol de Reporting Service:





Se utiliza una cuenta de dominio para ejecutar el servicio, en mi caso use la cuenta moss_apppools:



Esto se instala en cada uno de los Web Front End de la granja Sharepoint.  Luego de esto se debe instalar el ultimo Service Pack disponible para SQL.

Crear sitio para Reporting Services

En cada servidor Web Front-End se debe crear un sitio para Reporting Services y un Application Pool.  El sitio debe apuntar un directorio X (en mi caso C:\RS) utilizando un puerto a elección (en mi caso el 8080).  
En caso de estar instalando sobre Windows Server 2003, el sitio además debe configurarse para no aceptar conexiones anónimas.  Adicionalmente, el sitio debe tener permisos de Script Only en la seccion "Home Directory -> Application Settings" de las propiedades del sitio.





El Application Pool debe ejecutarse utilizando una cuenta de dominio, sin embargo en este punto y como configuración temporal utilizaremos la cuenta Network Service para la creación del Application Pool.  Esto aplica solo en la instalación sobre Windows Server 2008.  Al utilizar Windows Server 2003, el Application Pool se configura directamente para usar una cuenta de dominio.




Adicionalmente, el Application Pool debe configurarse para usar .Net Framework 2.0 y utilizar el Managed Pipeline Mode en Classic.




Adicionalmente, la cuenta utilizada para el servicio Reporting Service debe agregarse al grupo local SQLServer2005ReportingServicesWebServiceUser$SERVIDOR$MSSQLSERVER en cada uno de los servidores para Reporting Services.


Configurar para Reporting Services

Una vez completados los pasos anteriores, estamos en condiciones de configurar Reporting Services.  En cada uno de los servidores para Reporting Service se debe ingresar a "Reporting Service Configuration"



Se debe crear el Report Server Virtual Directory dentro del sitio creado anteriormente en IIS:



Luego se configura Report Manager Virtual Directory (este punto queda deshabilitado una vez que SSRS se integra con Sharepoint):



La seccion Windows Service Identity utiliza la cuenta especificada al instalar Reporting Service en el servidor.  DOMINIO\moss_apppools.  El servicio Report Server realiza la inicialización, encriptación reversible, tareas de mantención de base de datos, etc.  Este servicio se ejecuta en segundo plano y realiza el procesamiento end-to-end para los reportes que se ejecutan en forma programada.


Debido a que el servicio Report Server realiza todas las operaciones de encriptación, debe estar ejecutandose cada vez que se especifique o se utilicen valores encriptados.  Especificar credenciales almacenadas, ejecutar un reporte que utiliza credenciales almacenadas y publicando un reporte al servidor de reportes (la informacion del Data Source esta encriptada), son todas operaciones que requieren el servicio Report server



Luego procedemos a configurar la sección Web Service Identity, utilizando los Virtual Directories creados anteriormente.  Si la cuenta del Application Pool es una cuenta de dominio se generará el siguiente error:



Debido a que en puntos anteriores configuramos el Application Pool con la cuenta Network Service, la configuración pasará sin problemas.


Recordar que esta cuenta será modificada luego manualmente por una cuenta de dominio.  En mi caso se utiliza la misma cuenta del servicio Report Server, DOMINIO\moss_apppools.  El Report server Web Service realiza el procesamiento end-to-end para reportes que se ejecuten on-demand.  Además provee con la interfaz de programación principal para aplicaciones que se integran con un Report Server.





Luego continuamos con la configuración de la Base de Datos, nos conectamos al servidor de Bases de Datos donde alojaremos la data de Reporting Services.  La cuenta de usuario utilizada en el Application Pool debe tener seleccionado el rol RSExecRole en SQL para funcionar apropiadamente:




Una vez conectados procedemos con la creación de la base de datos, la cual se debe crear en modo integrado con Sharepoint.  En este punto le asignamos un nombre a la base de datos:




NOTA: Solo el servidor de reportes se conecta con la base de datos de reportes.  Las instancias Sharepoint que están integradas con un servidor de reportes nunca se conectarán u obtendrán data desde la base de datos de reporte directamente.

Una vez creada la base de datos se debe aplicar la configuración, obteniendo el siguiente resultado:



En este punto ya tenemos configurado Reporting Service e integrado con Sharepoint, sin embargo al intentar ingresar al sitio de Report Server (http://localhost:8080/reportserver) se obtiene el siguiente error:


Esto se produce debido a que el Application Pool está configurado con la cuenta Network Service.  Nos vamos entonces al IIS y configuramos la cuenta de ejecución del Application Pool para utilizar una cuenta de dominio:




Al hacer este cambio, se debe reconfigurar Reporting Service, pero esta vez de forma manual siguiendo los siguientes pasos:
  • Actualizar el archivo RSReportServer.config desde la carpeta SQLRSInstall\Microsoft SQL Server\ MSSQL.X \Reporting Services\ReportServer.  Se debe actualizar la linea WebServiceAccount para utilizar la cuenta de dominio especificada en el Application Pool.
  • Luego se realizan los siguientes cambios en el registro en la siguiente ubicacion (HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL.X\Setup):   
             -  Las entradas ApplicationPoolConfigured_RM y ApplicationPoolConfigured_RS deben estar configuradas para utilizar el Application Pool creado anteriormente.
             -  Las entradas ReportManagerIdentityConfigured y WebServiceIdentityConfigured deben modificarse para utilizar la cuenta de dominio especificada en el Application Pool.
             -  Si alguna de estas entradas no existe, debe crearse como tipo String
  • Finalmente se reinicia el servidor Reporting Service para que tome los cambios.
La configuración de Reporting Service se verá de la siguiente forma:



Y al ingresar al sitio de Report Server se verá de la siguiente forma:


Con esto el servicio Reporting Service queda funcionando satisfactoriamente.


Instalar Reporting Services Add-In

Una vez que tenemos Reporting Service instalado y configurado, debemos instalar el Add-in de Reporting Service para Sharepoint de la siguiente manera:

-  Via linea de comando se debe ejecutar el instalador con el parametro SKIPCA=1
-  Se ingresa a la siguiente carpeta C:\Users\nombre_usuario\AppData\Local\Temp
-  Se ejecuta el siguiente comando rsCustomAction.exe /i

NOTA: El Reporting Services Add-In se instala en cada Web Front-End y en el servidores que hospeda la Administración Central.




Configuraciones Adicionales Sharepoint

Luego de instalado y configurado SSRS 2005 y el Add-In, se debe configurar Sharepoint para utilizar reporting Services:

-  Se ingresa a la Administración Central, en la seccion Application Management.



-  En la seccion Reporting Service se ingresa a Manage Integration Settings y se ingresa la dirección del sitio de Reporting Service creado anteriormente.  Si se usa NLB, la dirección debe apuntar a un FQDN que apunte a la IP virtual del NLB, en mi caso MOSSNLBDMZ.  
Se debe seleccionar el modo de autenticación "Trusted Account".  Este modo tiene que ser utilizado si Kerberos no está habilitado.


-  En la seccion Grant Database Access se ingresa el nombre del servidor de Reporting Service, luego de lo cual se debe ingresar una cuenta de dominio que pertenezca al grupo Farm Administrator, en mi caso DOMINIO\moss_setup, que es la cuenta con la que se instaló y configuró Sharepoint:







-  Finalmente se ingresa a la seccion Set Server Defaults y se deja todo por defecto para luego aceptar los cambios (estos parametros se pueden personalizar segun lo que se requiera).
-  Estos ultimos 2 puntos se deben repetir por cada servidor de Reporting Services, en caso de que exista más de un Web Front End actuando como servidor de reportes.




Solucion de Problemas

En situaciones donde se trabaje con más de un servidor Front End actuando como servidor de reportes, y utilizando Windows Network Load Balancing (NLB), es posible que se presenten problemas en la integración de Reporting Service.  

Específicamente al tratar de ingresar al sitio ReportServer via web, apuntando al FQDN del NLB (http://fqdnnlb:8080/reportserver) en vez de apuntar directamente a uno de los servidores de reportes, se pueden presentar problemas de autenticación que finalmente redundan en un error 401.1 del IIS.

Para solucionar esta situación, se debe crear una entrada en el registro de windows en cada Front End. Se debe ingresar a regedit y buscar la llave HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa.  Una vez aquí, se debe crear una nueva entrada DWORD con nombre "DisableLoopbackCheck".  Una vez creada, se debe configurar su valor en 1 y hacer click en OK.

Finalmente se reinician los servidores luego de lo cual el servicio funciona correctamente, permitiendo la conexión utilizando el NLB.


NOTA: En ocasiones será necesario además asociar un SPN con las cuentas utilizadas por el servicio Reporting Service.  Estos SPN se configuran en uno de los Domain Controllers del dominio en el que se implementó la plataforma, con los siguientes comandos:



  • setspn.exe -S http/IIS_computer's_NetBIOS_name DomainName\UserName
  • setspn.exe -S http/IIS_computer's_FQDN DomainName\UserName





Conclusión
Una vez completados todos estos pasos, tendremos un servicio de Reporting Services completamente funcional en nuestras plataformas.

En mi caso he realizado esta configuración tanto en ambientes con Windows 2008 y 2003 con buenos resultados.  Espero que les sea de utilidad.  Si necesitan mayor ayuda no duden en escribir.

0 comentarios:

Publicar un comentario