В ходе эксплуатации экземпляра SharePoint Workflow Manager в определённый момент времени может возникнуть необходимость смены пароля для сервисной учётной записи, от имени которой работают службы Service Bus и Workflow Manager. Учитывая то, что данная учётная запись, как правило, задействована, как в настройках соответствующих служб Windows, так и настройках пулов приложений IIS, для корректной смены пароля следует выполнить некий ритуал со специальными PowerShell-командлетами, которым в свою очередь требуется приложение "тайных костылей".
В нашем случае службы Service Bus и Workflow Manager работают в рамках одного выделенного сервера на базе Windows Server 2022 и выполняются в контексте одной и той же сервисной доменной учётной записи. Той самой учётной записи, что была использована в ходе развёртывания экземпляра SharePoint Workflow Manager. У нас нет задачи менять саму учётную запись на какую-либо другую, но нам необходимо произвести смену пароля у используемой учётной записи.
Прежде, чем приступить к смене пароля, мы должны убедиться в том, что службы Service Bus и Workflow Manager функционируют в штатном режиме и не имеют явных проблем. Важно сделать такую предварительную проверку для того, чтобы в случае возникновения проблем после смены пароля и перезагрузки сервера, точно понимать, что возникшие проблемы связаны именно со сменой пароля, а не имеют другие давние причины.
Убеждаемся что запущены и работают службы "Service Bus Gateway", "Service Bus Message Broker", "Service Bus Resource Provider", "Service Fabric Host Service", "Workflow Manager Backend".
Из меню "Пуск" с правами администратора открываем консоль "Workflow Manager PowerShell" (теоретически можно использовать стандартную консоль PowerShell, но тогда потребуется выполнять команду "Import-Module WorkflowManager"):
Выполняем команды проверки текущего состояния фермы Workflow Manager:
Get-WFFarm
Get-WFFarmStatus
Первый командлет не должен вызывать никаких ошибок выполнения и должен вывести информацию о ферме Workflow Manager.
Второй командлет должен показать текущий статус служб WorkflowServiceFrontEnd/WorkflowServiceBackend (они должны быть запущены).
Важным недокументированным моментом и "тайным костылём" является наличие пустого каталога:
C:\ProgramData\Service Bus\1.1
Если этого каталога нет в файловой системе, то его придётся создать, чтобы избежать ошибки выполнения командлета Update-SBHost из состава Service Bus 1.1 "Update-SBHost : Method failed with unexpected error code 3.". Если у вас используется более старая версия Service Bus 1.0, то и имя подкаталога, соответственно, нужно создавать "\Service Bus\1.0". Есть ещё вариант, при котором предлагается временно переименовывать существующий подкаталог "1.1" (в случае его наличия) в подкаталог "1.0", но мне этот вариант кажется странным и есть подозрение, что такая ситуация возможна лишь на "измучанном" сервере, где сначала стояла версия Service Bus 1.1, а затем по какой причине был выполнен откат на версию Service Bus 1.0.
На данном этапе можно считать, что предварительные условия соблюдены и теперь выполняем непосредственную смену пароля для учётной записи в домене.
После смены пароля в домене возвращаемся на наш сервер WFM и с правами администратора открываем консоль "Service Bus PowerShell" (либо стандартную консоль PowerShell с предварительной загрузкой модуля командой "Import-Module ServiceBus"). Выполняем команды остановки служб Service Bus, замены пароля и повторного запуска служб:
Stop-SBHost
$newpwd = ConvertTo-SecureString "NeWP#s5w0rD!" -AsPlainText -Force
Update-SBHost -RunAsPassword $newpwd
Start-SBHost
В некоторых старых статьях блогов и на форумах можно найти примеры с использованием командлетов Stop-SBFarm/Start-SBFarm, однако есть мнение, что использование этих командлетов может привести к дополнительным осложнениям.
Далее, с правами администратора открываем консоль "Workflow Manager PowerShell" и
выполняем команды остановки компонент Workflow Manager (службы Workflow Manager Backend, пула IIS WorkflowMgmtPool), замены пароля и повторного запуска WFM:
Stop-WFHost
$newpwd = ConvertTo-SecureString "NeWP#s5w0rD!" -AsPlainText -Force
Update-WFHost -RunAsPassword $newpwd
Start-WFHost
После того как все команды отработают без ошибок, можем повторно выполнить проверку состояния фермы WFM:
Get-WFFarm
Get-WFFarmStatus
На этом процедуру замены пароля можно считать выполненной, но для большего успокоения можно провести полную перезагрузку сервера SB/WFM и после запуска системы убедиться в том, что всё функционирует штатно.
Добавить комментарий