SSRS 2008 R2, ферма - балансировка нагрузки и состояние HTTP 401: неавторизовано

В моей компании есть среда SQL Server Reporting Services 2008 R2.

2 сервера Windows 2008 R2: PRERPSW01 и PRERPSW02, в домене DOMAIN_Company NLB имя: PRERPS

IP-адрес (я получаю с помощью команды ping):

PRERPSW01   192.168.110.41
prerps      192.168.90.92

файл hosts на сервере PRERPSW01

192.168.110.41  prerps

На серверах PRERPSW01 и PRERPSW02 есть такая конфигурация:

Config Report Server: C:\Program Files\Microsoft SQL Server\MSRS10_50.REPORTING\Reporting Services\ReportServer\rsreportserver.config
HostName: PRERPS. 
UrlRoot: http://PRERPS/ReportServer

В PRERPSW01 я использую учетные данные PRERPSW01\installerUser

Откройте IE с http://PRERPS/ReportServer/ReportService2005.asmx и я не могу получить доступ

Откройте IE с http://PRERPSW01/ReportServer/ReportService2005.asmx и я могу получить доступ

У меня есть скрипт Poweshell для развертывания файлов RDL с использованием URI http://PRERPS/ReportServer/ReportService2005.asmx

Но я получаю ошибку

Сбой запроса с состоянием HTTP 401: неавторизован.

На моем ПК с учетными данными DOMAIN_Company \ My_user,

Откройте IE с http://PRECASRPS/ReportServer/ReportService2005.asmx и я могу получить доступ

Какие-либо предложения?

обновленный

Теперь я использую учетные данные DOMAIN_Company\PreRPSAdministrator, Та же конфигурация для rsreportserver.config.

Тест в PRERPSW01 в порядке
Тест в PRERPSW02 - это КО

Журнал _ReportServerService__09_22_2015_13_58_31.log_ для теста PRERPSW02:

library!WindowsService_0!9cc!09/22/2015-14:38:48:: i INFO: Call to CleanBatch()
library!WindowsService_0!9cc!09/22/2015-14:38:48:: i INFO: Cleaned 0 batch records, 0 policies, 0 sessions, 0 cache entries, 0 snapshots, 0 chunks, 0 running jobs, 0 persisted streams, 0 segments, 0 segment mappings, 0 edit sessions.
library!WindowsService_0!9cc!09/22/2015-14:38:48:: i INFO: Call to CleanBatch() ends
ui!ReportManager_0-1!fa8!09/22/2015-14:39:44:: e ERROR: System.Net.WebException: The request failed with HTTP status 401: Unauthorized.
   at Microsoft.SqlServer.ReportingServices2010.RSConnection2010.SetConnectionProtocol()
   at Microsoft.SqlServer.ReportingServices2010.RSConnection2010.SoapMethodWrapper`1.ExecuteMethod(Boolean setConnectionProtocol)
   at Microsoft.SqlServer.ReportingServices2010.RSConnection2010.SoapMethodWrapper`1.ExecuteMethod()
   at Microsoft.SqlServer.ReportingServices2010.RSConnection2010.ListItemTypes()
   at Microsoft.ReportingServices.UI.Global.SecureAllAPI()
   at Microsoft.ReportingServices.UI.GlobalLinks.Control_Init(Object sender, EventArgs args)
ui!ReportManager_0-1!fa8!09/22/2015-14:39:44:: e ERROR: HTTP status code --> 500
-------Details--------
System.Net.WebException: The request failed with HTTP status 401: Unauthorized.

   at Microsoft.SqlServer.ReportingServices2010.RSConnection2010.SetConnectionProtocol()

   at Microsoft.SqlServer.ReportingServices2010.RSConnection2010.SoapMethodWrapper`1.ExecuteMethod(Boolean setConnectionProtocol)

   at Microsoft.SqlServer.ReportingServices2010.RSConnection2010.SoapMethodWrapper`1.ExecuteMethod()

   at Microsoft.SqlServer.ReportingServices2010.RSConnection2010.ListItemTypes()

   at Microsoft.ReportingServices.UI.Global.SecureAllAPI()

   at Microsoft.ReportingServices.UI.ReportingPage.EnsureHttpsLevel()

   at Microsoft.ReportingServices.UI.ReportingPage.ReportingPage_Init(Object sender, EventArgs args)

   at System.EventHandler.Invoke(Object sender, EventArgs e)

   at System.Web.UI.Control.OnInit(EventArgs e)

   at System.Web.UI.Page.OnInit(EventArgs e)

   at System.Web.UI.Control.InitRecursive(Control namingContainer)

   at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
ui!ReportManager_0-1!e70!09/22/2015-14:39:50:: e ERROR: System.Net.WebException: The request failed with HTTP status 401: Unauthorized.
   at Microsoft.SqlServer.ReportingServices2010.RSConnection2010.SetConnectionProtocol()
   at Microsoft.SqlServer.ReportingServices2010.RSConnection2010.SoapMethodWrapper`1.ExecuteMethod(Boolean setConnectionProtocol)
   at Microsoft.SqlServer.ReportingServices2010.RSConnection2010.SoapMethodWrapper`1.ExecuteMethod()
   at Microsoft.SqlServer.ReportingServices2010.RSConnection2010.ListItemTypes()
   at Microsoft.ReportingServices.UI.Global.SecureAllAPI()
   at Microsoft.ReportingServices.UI.ReportingPage.EnsureHttpsLevel()
   at Microsoft.ReportingServices.UI.ReportingPage.ReportingPage_Init(Object sender, EventArgs args)
   at System.EventHandler.Invoke(Object sender, EventArgs e)
   at System.Web.UI.Control.OnInit(EventArgs e)
   at System.Web.UI.Page.OnInit(EventArgs e)
   at System.Web.UI.Control.InitRecursive(Control namingContainer)
   at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
ui!ReportManager_0-1!c4c!09/22/2015-14:39:51:: e ERROR: System.Net.WebException: The request failed with HTTP status 401: Unauthorized.
   at Microsoft.SqlServer.ReportingServices2010.RSConnection2010.SetConnectionProtocol()
   at Microsoft.SqlServer.ReportingServices2010.RSConnection2010.SoapMethodWrapper`1.ExecuteMethod(Boolean setConnectionProtocol)
   at Microsoft.SqlServer.ReportingServices2010.RSConnection2010.SoapMethodWrapper`1.ExecuteMethod()
   at Microsoft.SqlServer.ReportingServices2010.RSConnection2010.ListItemTypes()
   at Microsoft.ReportingServices.UI.Global.SecureAllAPI()
   at Microsoft.ReportingServices.UI.ReportingPage.EnsureHttpsLevel()
   at Microsoft.ReportingServices.UI.ReportingPage.ReportingPage_Init(Object sender, EventArgs args)
   at System.EventHandler.Invoke(Object sender, EventArgs e)
   at System.Web.UI.Control.OnInit(EventArgs e)
   at System.Web.UI.Page.OnInit(EventArgs e)
   at System.Web.UI.Control.InitRecursive(Control namingContainer)
   at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)

1 ответ

Локальные учетные записи + NLB = предсказуемый сбой. Либо используйте учетную запись домена для доступа к имени виртуального сервера, либо, если вы собираетесь запускать задачи на локальных полях с локальными учетными записями, затем настройте запись hosts, чтобы имя виртуального сервера использовало исключительно локальную машину. NLB часто кэшируют маршруты по IP-адресу (а не чисто циклической балансировке), что может привести к сценарию "но локальная учетная запись работает иногда". Но если вы перенаправлены на другие узлы в NLB, локальная учетная запись не удастся.

Другие вопросы по тегам