Escalado horizontal del servidor de informes de PowerBI con NLB: solicitud incorrecta al abrir o cargar el informe de PowerBI

Un usuario Pregunto ✅

JulesE

He configurado 2 servidores de informes PowerBI en una implementación escalada con un NLB (https://docs.microsoft.com/en-us/sql/reporting-services/report-server/configure-a-report-server-on -a…)

Al abrir la URL del balanceador de carga, puedo iniciar sesión, crear carpetas y asignar permisos. Pero cuando intento abrir un informe de Powerbi o intento cargar un informe, se produce un error.

PortalErrorMessage.png

En RSPortal.log encuentro el siguiente error:

2019-09-25 17:52:47.1644|ERROR|41|El servidor remoto devolvió un error: (400) Solicitud incorrecta.| ID de solicitud = s_c1a68a9f-38c0-4e89-ab27-045f4ca39fbe

Estoy usando Microsoft Power BI Report Server – Mayo de 2019.

Al crear un informe con PowerBI Desktop para Reporting Services (también versión de mayo de 2019) e intentar guardar ese informe en el servidor de informes, aparece el siguiente mensaje de error:

Error de escritorio de PowerBI.png

Me alegraría si alguien puede ayudar.

Gracias,

JE

MariusD

En respuesta a hassam11dic

Hola,

¿Ha configurado también ReportServerURL en el archivo rsreportserver.config? Debería ser similar a esto: https://{Nodo FQDN}/Servidordeinforme . Reemplace {node FQDN} con el nombre de dominio completo del nodo, en cada uno de los nodos.

Saludos,

Mario

JulesE

Sin la configuración de NLB todo funciona bien.

Utilicé el lanzamiento de mayo:

PowerBIReportServerVerison.png


@JulesE escribió:

He configurado 2 servidores de informes PowerBI en una implementación escalada con un NLB (https://docs.microsoft.com/en-us/sql/reporting-services/report-server/configure-a-report-server-on -a…)

Al abrir la URL del balanceador de carga, puedo iniciar sesión, crear carpetas y asignar permisos. Pero cuando intento abrir un informe de Powerbi o intento cargar un informe, se produce un error. En RSPortal.log encuentro el siguiente error:

2019-09-25 12:14:38.6642|ERROR|6|Se produjo una excepción OData: System.Net.WebException: el servidor remoto devolvió un error: (400) Solicitud incorrecta.
en System.Net.HttpWebRequest.GetResponse()
en Microsoft.ReportingServices.Portal.ODataWebApi.Utils.PbixReportHelper.ShouldReShred(entidad PowerBIReport, Uri basePortalUrl, registrador ILogger, IPrincipal userPrincipal, String reportServerHostName)
en Microsoft.ReportingServices.Portal.ODataWebApi.Common.CatalogItemControllerHelper`1.GetItem (clave de cadena)
en Microsoft.ReportingServices.Portal.ODataWebApi.V2.Controllers.CatalogItemsController.GetEntity(String key, String castName)
en Microsoft.ReportingServices.Portal.ODataWebApi.Controllers.Reflection.EntitySetReflectionODataController`1.GetRoot(ODataPath oDataPath, Int32& index)
en Microsoft.ReportingServices.Portal.ODataWebApi.Controllers.Reflection.ReflectionODataController`1.Get(ODataPath oDataPath)
en lambda_method(Cierre, Objeto, Objeto[] )
en System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ActionExecutor.<>c__DisplayClass10. b__9(Instancia de objeto, Objeto[] parámetros del método)
en System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ExecuteAsync(HttpControllerContext controllerContext, argumentos IDictionary`2, CancellationToken cancellationToken)
— Fin del seguimiento de la pila desde la ubicación anterior donde se lanzó la excepción —
en System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
en System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(tarea)
en System.Web.Http.Controllers.ApiControllerActionInvoker. d__0.MoverSiguiente()
— Fin del seguimiento de la pila desde la ubicación anterior donde se lanzó la excepción —
en System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
en System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(tarea)
en System.Web.Http.Filters.ActionFilterAttribute. d__5.MoverSiguiente()
— Fin del seguimiento de la pila desde la ubicación anterior donde se lanzó la excepción —
en System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
en System.Web.Http.Filters.ActionFilterAttribute. d__5.MoverSiguiente()
— Fin del seguimiento de la pila desde la ubicación anterior donde se lanzó la excepción —
en System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
en System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(tarea)
en System.Web.Http.Filters.ActionFilterAttribute. d__0.MoverSiguiente()
— Fin del seguimiento de la pila desde la ubicación anterior donde se lanzó la excepción —
en System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
en System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(tarea)
en System.Web.Http.Controllers.ActionFilterResult. d__2.MoverSiguiente()
— Fin del seguimiento de la pila desde la ubicación anterior donde se lanzó la excepción —
en System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
en System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(tarea)
en System.Web.Http.Controllers.ExceptionFilterResult. d__0.MoverSiguiente().| ID de solicitud = s_283c6c52-ba29-4b6b-b0da-263596ff319c

Me alegraría si alguien puede ayudar.

Gracias,

JE


hassam11dic

En respuesta a JulesE

hola jules

Lo solucionaste tengo el mismo problema

d_gosbell

En respuesta a hassam11dic

Los pasos para configurar Power BI Report Server en un clúster NLB son los mismos que para configurar SSRS en un clúster. El error que está viendo probablemente significa que no hizo el paso 3 de lo siguiente: https://docs.microsoft.com/en-us/sql/reporting-services/report-server/configure-a-report-server-on -a…

Cuando carga un informe o publica uno desde Power BI Desktop, sucede en 2 pasos. El primer paso es que el servidor carga el archivo en una carpeta local temporal, luego procesa el archivo y lo agrega a la base de datos del servidor de informes. Si su configuración BackConnectHostName no está configurada correctamente, el segundo paso puede volver al balanceador de carga y ser redirigido a uno de los otros nodos que no tendrán el archivo pbix en su sistema de archivos local. (Nota: después de cambiar esta configuración, creo que tendrá que reiniciar para que surta efecto)

hassam11dic

En respuesta a d_gosbell

El paso 3 es sencillo, intenté con el mismo error

El ingeniero de MS también se menciona a continuación

Agregue el nombre de Vitrual Server (nombre del servidor vip) y el FQDN del nodo (nodo1/nodo2) en ambos nodos

Para SSL, como discusión previa, considere registrar el Certificado en el nombre del Servidor Virtual correcto (nombre del servidor vip)

Por otro lado, intente actualizar el tipo de autenticación de la siguiente manera:

Copia de seguridad de rsreportserver.config:

Actualizar:
Desde:


A:




hassam11dic

En respuesta a hassam11dic

url ssl: bi.dev.companyname.com.au
Nombre del servidor VIP/Balanceador de carga: bi.int.gslb.dev.companyname.au

BackConnectHostName: bi.int.gslb.dev.companyname.au (línea 1)
server1.com.au (línea 2 FQDN nombre del servidor)
¿También es necesario registrar SSL en el balanceador de carga/VIP?

d_gosbell

En respuesta a hassam11dic


@hassam11dec escribió:

BackConnectHostName: bi.int.gslb.dev.companyname.au (línea 1)
server1.com.au (línea 2 FQDN nombre del servidor)

Esto no está bien. El nombre del equilibrador de carga no es importante. El BackConnectHostname debe ser el FQDN de la URL a la que navegan los usuarios que parece es bi.dev.companyname.com.au. La idea de esta configuración es que si el servidor responde a una solicitud enviada a bi.dev.companyname.com.au, sabe que se trata de una dirección local.


¿También es necesario registrar SSL en el balanceador de carga/VIP?


Depende de cómo tengas configurado tu SSL. Por lo general, puede configurar el balanceador de carga para terminar la conexión SSL. O puede hacer que el balanceador de carga haga transferencia SSL y configurar el certificado para bi.dev.companyname.com.au en ambos nodos. Realmente no soy un experto en equilibradores de carga, pero tenemos nuestra configuración para realizar el paso de SSL, ya que mantiene la conexión cifrada desde el cliente hasta el nodo.

hassam11dic

En respuesta a d_gosbell

Hola

Intenté todo todavía atascado con el problema 400

ssl: bi.dev.companyname.com.au (instalado en ambos nodos)

La única opción 1 adjunta solo funciona si uno de los servidores está activo y el otro detenido (archivo pbix cargado y sin error 400) con el nombre VIP mencionado en BackConnectionHostname (bi.int.gslb…..)

Resto todas las opciones dan error 400

BackConnectionHostNameBackConnectionHostName

d_gosbell

En respuesta a hassam11dic


@hassam11dec escribió:

con el nombre VIP mencionado en BackConnectionHostname (bi.int.gslb…..)


Como mencioné anteriormente, para BackConnectHostName debe usar el nombre de host que sus usuarios ingresan en sus navegadores (probablemente lo que ha enumerado como URL de SSL) no el nombre de su balanceador de carga.

MariusD

En respuesta a hassam11dic

Hola,

¿Ha configurado también ReportServerURL en el archivo rsreportserver.config? Debería ser similar a esto: https://{Nodo FQDN}/Servidordeinforme . Reemplace {node FQDN} con el nombre de dominio completo del nodo, en cada uno de los nodos.

Saludos,

Mario

JulesE

En respuesta a MariusD

Hola Marius,

Gracias. Después de agregar el fqdn correcto en la URL del servidor de informes, puedo publicar informes de Powerbi y puedo crear fuentes de datos.

Es extraño que el artículo de Microsoft notifique explícitamente no cambiar la URL del servidor de informes mientras sea la solución.

https://docs.microsoft.com/en-us/sql/reporting-services/report-server/configure-a-report-server-on-a…

hassam11dic

En respuesta a MariusD

Marius si por supuesto

es el ssl (bi.dev.compname.edu.au) en rsreportserver.config junto con la verificación de la clave de la máquina a continuación


bi.dev.compname.edu.au

https://bi.dev.compname.edu.au/PBIReportServer
…..

…..

JulesE

Cuando elimino la configuración del balanceador de carga, puedo abrir y cargar informes sin errores.

Utilicé el servidor de informes de PowerBI que puede publicar:

PowerBIReportServerVerison.png


@JulesE escribió:

He configurado 2 servidores de informes PowerBI en una implementación escalada con un NLB (https://docs.microsoft.com/en-us/sql/reporting-services/report-server/configure-a-report-server-on -a…)

Al abrir la URL del balanceador de carga, puedo iniciar sesión, crear carpetas y asignar permisos. Pero cuando intento abrir un informe de Powerbi o intento cargar un informe, se produce un error. En RSPortal.log encuentro el siguiente error:

2019-09-25 12:14:38.6642|ERROR|6|Se produjo una excepción OData: System.Net.WebException: el servidor remoto devolvió un error: (400) Solicitud incorrecta.
en System.Net.HttpWebRequest.GetResponse()
en Microsoft.ReportingServices.Portal.ODataWebApi.Utils.PbixReportHelper.ShouldReShred(entidad PowerBIReport, Uri basePortalUrl, registrador ILogger, IPrincipal userPrincipal, String reportServerHostName)
en Microsoft.ReportingServices.Portal.ODataWebApi.Common.CatalogItemControllerHelper`1.GetItem (clave de cadena)
en Microsoft.ReportingServices.Portal.ODataWebApi.V2.Controllers.CatalogItemsController.GetEntity(String key, String castName)
en Microsoft.ReportingServices.Portal.ODataWebApi.Controllers.Reflection.EntitySetReflectionODataController`1.GetRoot(ODataPath oDataPath, Int32& index)
en Microsoft.ReportingServices.Portal.ODataWebApi.Controllers.Reflection.ReflectionODataController`1.Get(ODataPath oDataPath)
en lambda_method(Cierre, Objeto, Objeto[] )
en System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ActionExecutor.<>c__DisplayClass10. b__9(Instancia de objeto, Objeto[] parámetros del método)
en System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ExecuteAsync(HttpControllerContext controllerContext, argumentos IDictionary`2, CancellationToken cancellationToken)
— Fin del seguimiento de la pila desde la ubicación anterior donde se lanzó la excepción —
en System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
en System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(tarea)
en System.Web.Http.Controllers.ApiControllerActionInvoker. d__0.MoverSiguiente()
— Fin del seguimiento de la pila desde la ubicación anterior donde se lanzó la excepción —
en System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
en System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(tarea)
en System.Web.Http.Filters.ActionFilterAttribute. d__5.MoverSiguiente()
— Fin del seguimiento de la pila desde la ubicación anterior donde se lanzó la excepción —
en System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
en System.Web.Http.Filters.ActionFilterAttribute. d__5.MoverSiguiente()
— Fin del seguimiento de la pila desde la ubicación anterior donde se lanzó la excepción —
en System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
en System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(tarea)
en System.Web.Http.Filters.ActionFilterAttribute. d__0.MoverSiguiente()
— Fin del seguimiento de la pila desde la ubicación anterior donde se lanzó la excepción —
en System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
en System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(tarea)
en System.Web.Http.Controllers.ActionFilterResult. d__2.MoverSiguiente()
— Fin del seguimiento de la pila desde la ubicación anterior donde se lanzó la excepción —
en System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
en System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(tarea)
en System.Web.Http.Controllers.ExceptionFilterResult. d__0.MoverSiguiente().| ID de solicitud = s_283c6c52-ba29-4b6b-b0da-263596ff319c

Me alegraría si alguien puede ayudar.

Gracias,

JE


Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *