Ошибка the server pool does not match the rd connection brokers that are in it. errors
Добрый день! Уважаемые читатели и гости IT блога Pyatilistnik.org. Не так давно у нас с вами была интересная тема посвященная системам хранения данных. Двигаемся дальше и сегодня пост будет вновь на тему RDS фермы, она прямо не устает пополнять контент на моем блоге и опыт траблшутинга. Открываю я оснастку управления и что я вижу, ошибку "The server pool does not match the rd connection brokers that are in it. errors". Давайте разбираться в чем дело и как выкручиваться из данной ситуации.
🆘Описание ошибки
Я разворачивал месяц назад Remote Desktop Services High Availability на Windows Server 2022. Все успешно работало. Просыпаюсь я с утра и вижу интересную картину, что при попытке войти в оснастку управления RDS я получаю ошибку:
По сути вам сообщают, что ваш посредник подключений. уже не брокер, что очень смущает😂.
Или еще вот такую:
To manage a deployment, you must add all the servers it the deploment to the server pool.
To create a new deployment, run the Add Roles and Features Wizard and select the Remote Services installation option.
Как устранять ошибку "The RD Connection Broker server is not in the server pool but is part ot the cluster"
Первое, что вы должны сделать, это проверить есть ли на вашем сбойном RDCB хосте в логах, события, что он все же обрабатывает подключения, или же там много ошибок. Для этого я выкладывал статью "Скрипты RDS" и там приводил вот такой скрипт PowerShell.
#Скрипт с сайта разработал Иван Сёмин, разрешается его копировать на другие сайты только с указанием активной ссылки на источник
$Servers = Get-Content "C:\Temp\rds\servers.txt" #Тут поместите имя вашего сервера
$Events = @()
ForEach ($Server in $Servers) {
$EventLog = Get-WinEvent -LogName Microsoft-Windows-TerminalServices-SessionBroker-Client/Operational -ComputerName $Server -MaxEvents 100 -ErrorAction SilentlyContinue |
Where-Object {$_.TimeCreated -ge [datetime]::Now.AddMinutes(-60)} #За последние 60 минут
ForEach ($Event in $EventLog) {
$Events += [PSCustomObject]@{
Server = $Server
EventID = $Event.Id
Time = $Event.TimeCreated
Message = $Event.Message
}
}
}
#$Events | Format-Table Server, EventID, Time, Message | Out-File "C:\Temp\ntlm.txt"
$Events | Format-Table Server, EventID, Time, Message -AutoSize
#$Events | export-csv "C:\Temp\ntlm.csv" -Append
На выходе вы увидите кучу ошибок, и будите их изучать, или как в моем случае, вы увидите, что брокер подключений активно и успешно перенаправляет пользователей на RDSH хосты.
Далее я вам советую проверить настройки RDS HA. Для этого в PowerShell в режиме администратора введите:
Не забудьте только подставить вашего брокера подключений. В итоге я вижу, что мой текущий сбойный брокер является активным держателем настроек.
Это еще раз подтверждает, что данная ситуация просто неприятный глюк системы. Давайте искать в чем дело, первое на что требуется обратить внимание, это обновления системы. И правда у меня ночью на моем хосте Windows Server 2022 произошла установка обновлений KB5023705, но перезагрузки не было так как на хосте RDCM была активная сессия.
Так же если вы делали по моей инструкции RDS HA, то должны были воспользоваться SQL Native Client. Запустите его через окно "Выполнить", введя там:
На сбойном хосте справа не видно общей базы данных, на втором хосте она есть. Проверьте что у сбойного хоста RDCB есть права на общую базу данных с настройками. Если нет, выдайте их.
Если по правам все в порядке, то я вам предлагаю в вечернее время просто произвести перезагрузку системы, главное не забудьте переключить в настройках RDS HA кто сейчас активный брокер, пусть это будет тот на котором проблем нет.
Если перезагрузка не помогла
Бывает и такое, тут вам нужно уже через Management Studio зайти на сервер, кто держит вашу базу данных и проверить в каком режиме она находится. Проверьте нет ли там статуса "Pending Recovery". Если ожидается восстановление, то его нужно произвести. Попробуйте перевести БД в Offline, а зачем через минутку в Online. Если выскочит ошибка, то попробуйте выполнить процедуру через минуту. Обязательно еще раз проверьте наличие прав у RDCM хостов.
Включение TLS 1 для Windows Server 2016 и ниже
Эта проблема возникает, если вы отключили TLS 1.0 на серверах 2012 R2 и 2016 или ваша база данных находится в режиме ожидания восстановления. Чтобы восстановить TLS 1.0 или лучшее решение, обновите его до версии 2019, которая поддерживает TLS 1.2.
Редактор реестра Windows версии 5.00
"DisabledByDefault"=dword:00000000
"Enabled"=dword:00000001
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\ SecurityProviders\ Schannel\Protocols\TLS 1.0\Server]
"DisabledByDefault"=dword:00000000
"Enabled"=dword:00000001
Неофициальное решение
Для этого решения не используйте IIS crypto tool, так как он не будет настраивать наборы шифров и протоколы по мере необходимости! Вам нужно будет отредактировать реестр вручную. Поскольку вы имеете дело с правилами PCI, вы можете знать, что в реестре Windows есть 2 основных параметра, где вы можете настроить наборы шифров и протоколы.
- Одним из них является параметр приоритета набора шифров:
- Другой параметр — это параметр SCHANNEL (протоколы и шифры):
Используя эти параметры реестра, вы можете включить TLS1.0 для внутреннего использования серверными службами, но он не будет обслуживаться для внешних подключений к серверу... поэтому любому, кто подключается к серверу, будет предложено подключение только с использованием TLS1.2. Для этого выполните следующие действия...
В разделе "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\ Control\SecurityProviders\SCHANNEL" установите:
- Ciphers: оставить только совместимые с PCI шифры (AES128 и AES256)
- Hashes: оставить включенными SHA, SHA256, SHA384
- KeyExchangeAlgorithms: включите ECDH, PKCS и Diffie-Hellman (ВНИМАНИЕ: установите длину ключа DH на 2048! ... Длина ключа DH 1024 не совместима с PCI!) - Протоколы: отключите все, кроме TLS1.0, TLS1.1
и TLS1.2
- Использовать только наборы шифров TLS1.2. Таким образом, когда кто-то хочет подключиться к серверу, предлагается использовать только наборы шифров. указано в приоритете. Поскольку эти наборы шифров поддерживаются только TLS1.2, единственным доступным протоколом, предлагаемым клиенту, является TLS1.2.
Между тем, серверные службы внутри по-прежнему могут использовать все протоколы TLS.
- Использовать только наборы шифров TLS1.2. Таким образом, когда кто-то хочет подключиться к серверу, предлагается использовать только наборы шифров. указано в приоритете. Поскольку эти наборы шифров поддерживаются только TLS1.2, единственным доступным протоколом, предлагаемым клиенту, является TLS1.2.
Ошибка There are no RD Connection Broker server in the server pool
Еще на днях встретил вот такую ошибку:
To manage a deployment, you must add all the servers it the deployment to the server pool.
To create a new deployment, run the Add Roles and Features Wizard and select the Remote Desktop Services installation option
Из наблюдений, на обоих серверах RDCB были установлены обновления Windows и они находились в статусе RebootPending. Оба сервера были поочереди перезагружены, с переносом через PowerShell команды, описанные выше активного посредника подключений. В результате этих действий оснастка RDS восстановила привычную работы и смогла определить состав RDS-фермы.
На этом у меня все, надеюсь, что вы починили свой RDS HA сервис. С вами был Иван Сёмин, автор и создатель IT портала Pyatilistnik.org.
Спасибо!
Была такая же ошибка, помогло перепроверить и дать права серверам на бд на чтение\запись и сделать Set-Item WSMan:localhost\client\trustedhosts -value *, там было пусто
Мне помогло дать права серверам на чтение и запись на бд и сделать
Set-Item WSMan:localhost\client\trustedhosts -value *
значение value было пустым изначально
После этого перезапустить службу remote desktop connection broker