Обновляем инфраструктуру App-V 5.0 Service Pack 1 до уровня Service Pack 3

imageРанее была описана процедура развёртывания инфраструктуры повышенной доступности для App-V 5.0 SP1. С выходом App-V 5.0 SP3 возникло желание обновить развернутую инфраструктуру до уровня этой версии. Практика показала, что процедура перехода на новую версию может оказаться настоящей находкой для любителей “хождения по граблям”. Поэтому после ряда безуспешных попыток с последующим возвращением виртуальных серверов App-V в исходное состояние (хорошо, что есть DPM), было принято решение написать эту заметку для тех, кому эта “радость” ещё предстоит. 

Общую информацию о новой версии можно получить из документа About App-V 5.0 SP3

Согласно статьи KB2940578 - Current list of App-V 5.0 file versions, версия серверных компонент после обновления должна подняться до 5.0.10107.0

Предварительные требования для установки новой версии - в документе App-V 5.0 SP3 Prerequisites, при прочтении которого, особое внимание стоит обратить в раздел Unsupported deployment scenarios и фразу:

Installing the App-V Server on a computer that runs any previous version or component of App-V

Согласно данной фразы, установка серверных компонент App-V 5.0 SP3 поверх имеющейся у меня версии App-V 5.0 SP1 (методом in-place upgrade) не допускается. Однако не смотря на это, в статье The Official Microsoft App-V Team Blog -  Step-by-step guide for upgrading your App-V 5.0 infrastructure to Service Pack 3 явно рассматривается пример с обновлением серверных компонент методом in-place upgrade. Получается, что эти два источника противоречат друг-другу. Я посчитал, что в блоге команды разработчиков App-V “плохому не научат” и начал процедуру обновления без предварительного удаления компонент старой версии, о чём в дальнейшем пожалел. В результате такого обновления я получил неработоспособную службу публикации App-V да ещё и проблемы с последующими попытками полного удаления и повторной установки серверных компонент App-V. В итоге, после ряда экспериментов и нескольких откатов виртуальных серверов App-V из бэкапа, всё-таки удалось найти работающий рецепт обновления ранее описанной инфраструктуры. Излагаю…

 

Обновляем базу данных App-V

SP3 для App-V 5.0 не поставляется в виде отдельного обновления, и поэтому нам потребуется загрузить с интернет-ресурсов Microsoft, например с узла Microsoft Volume Licensing Service Center образ дистрибутива с интегрированным пакетом исправления SP3. 

Монтируем загруженный файл образа с дистрибутивом App-V (в нашем случае это будет App-V for RDS v5.0 SP3 и соответствующий ему файл образа SW_CD_App_V_CAL_for_RDS_5.0w_SP3_MultiLang_MLF_X19-79324.ISO)

image

Распаковываем инсталлятор \APP-V SERVER 5.0 SP3\appv_server_setup.exe в отдельный каталог:

appv_server_setup.exe /LAYOUT /LAYOUTDIR="C:\Temp\APP-V-RDS-5.0-SP3-SERVER"

После завершения распаковки переходим в подкаталог DatabaseScripts где сможем найти скрипты установки/обновления БД и инструкции. Перейдём в подкаталог DatabaseScripts\ManagementDatabase.

image

Нам нужно будет отредактировать некоторые из этих файлов.

***

В файле Database.sql изменим имя БД на то, которое используется у нас, в том случае, если это имя отличается от установленного в скрипте имени по умолчанию (AppVManagement)

image

***

Затем правим файл InsertVersionInfo.sql согласно статьи KB3031340. В файле найдём 20 строку:

INSERT INTO dbo.SchemaChanges VALUES(@dbversion, @minserviceversion)

и заменим её на строку:

INSERT INTO dbo.SchemaVersion VALUES(2)

image

***

Затем правим файл Permissions.sql согласно той же статьи KB3031340. В файле найдём 24 строку:

GRANT SELECT ON dbo.SchemaChanges TO PUBLIC

и заменим её на строку:

GRANT SELECT ON dbo.SchemaVersion TO PUBLIC

image

 

Затем в этом же файле вносим изменения по аналогии с теми, что делали ранее, то есть устанавливаем SID и имена доменных групп безопасности, которым нужно право на чтение и редактирование БД управления App-V (в нашем случае AppV_Management). Нам нужно изменить значения ManagementDbPublicAccessAccount и ManagementDbWriteAccessAccount

image

Чтобы получить значения SID в том виде, в котором их нужно указывать в этом SQL-скрипте воспользуемся PowerShell-скриптом:

$NTAccountName = "KOM\KOM-APPV-Administrators" 
$NTAccountObject = New-Object  System.Security.Principal.NTAccount($NTAccountName) 
$NTAccountSid = $NTAccountObject.Translate([System.Security.Principal.Securityidentifier]) 
[string]$StringNTAccountSid = $NTAccountSid.value 
$TrimmedSid = $StringNTAccountSid.Replace("-","") 
$TrimmedSid = $TrimmedSid.Substring(1,($TrimmedSid.Length-1)) 
Write-Host $TrimmedSid

В конечном счете скрипт примет примерно следующий вид:

image

 

***

После того, как sql-скрипты подготовлены, нужно выполнить эти скрипты на нашем удалённом экземпляре SQL Server, где расположена база данных управления App-V (AppVManagement). Перед тем как начать, обязательно сделаем резервную копию БД.

Согласно файла Readme.txt, который поставляется в комплекте со скриптами, важно соблюдать следующую последовательность выполнения скриптов:

  • Database.sql
  • CreateTables.sql
  • CreateStoredProcs.sql
  • UpdateTables.sql
  • InsertVersionInfo.sql
  • Permissions.sql

Поехали…

1) Выполняем SQL-скрипт ManagementDatabase\Database.sql для БД master. База данных AppVManagement не будет создана, так как в нашем случае она уже существует.

image

2) Выполняем SQL-скрипт ManagementDatabase\CreateTables.sql для БД AppVManagement

image3) Выполняем SQL-скрипт ManagementDatabase\CreateStoredProcs.sql для БД AppVManagement

image

4) Выполняем SQL-скрипт ManagementDatabase\UpdateTables.sql для БД AppVManagement

image

5) Выполняем SQL-скрипт ManagementDatabase\InsertVersionInfo.sql  для БД AppVManagement

image

6) Выполняем SQL-скрипт ManagementDatabase\Permissions.sql  для БД AppVManagement

image

Сделаем пару проверок результата работы скриптов. Проверяем появление в БД AppVManagement новой таблицы SchemaVersion:

image 

Проверяем наличие двух новых колонок PackageOptional и VersionOptional в таблице PackageGroupMembers:

image

Если всё нормально, можно переходить к этапу обновления БД отчётности (AppVReporting).

***

Перед началом внесения изменений в базу данных отчётности App-V обязательно сделаем резервную копию этой БД.

Если сравнить sql-скрипты которые поставлялись в составе App-V 5.0 SP1 с теми, что есть в поставке App-V 5.0 SP3, то становится понятно, что в подкаталоге DatabaseScripts\ReportingDatabase можно найти лишь один скрипт с изменениями -   ReportingDatabase\InsertVersionInfo.sql. Соответственно выполнять для уже существующей у нас БД AppVReporting будем только этот скрипт.

image

На этом обновление баз данных App-V 5.0 SP1 до уровня поддержки SP3 можно считать законченным. Переходим к установке обновлённой версии APP-V 5.0 SP3 на серверы с ролями управления/публикации/отчётности.

 

Обновляем серверы App-V

Убеждаемся в наличии .NET Framework 4.5 и Windows PowerShell 3.0 на серверах App-V.

Помимо этого, перед установкой обновления на серверах App-V, согласно раздела Check registry keys before installing the App-V 5.0 SP3 Server, нам нужно проверить содержимое значений в ключах реестра:

HKLM\Software\Microsoft\AppV\Server\ManagementDatabase
HKLM\Software\Microsoft\AppV\Server\ReportingDatabase
HKLM\Software\Microsoft\AppV\Server\ManagementService
HKLM\Software\Microsoft\AppV\Server\ReportingService

В моём случае на серверах App-V были обнаружены следующие ключи реестра (согласно ролям, которые установлены на этих серверах):image

При первых попытках обновления я следовал описанным инструкциям и дополнял некоторые параметры недостающими значениями. Но когда пришёл к выводу, что обновление серверных компонент App-V методом in-place upgrade не приведёт ни к чему хорошему, то просто сделал на всякий случай резервную копию всего содержимого ключа реестра HKLM\SOFTWARE\Microsoft\AppV\Server, понимая то, что в конечном итоге перед установкой новой версии придётся произвести удаление существующей версии, что повлечёт за собой удаление данных этого ключа реестра.

***

Как я уже сказал, проверенный рабочий метод подразумевает полную переустановку серверных компонент App-V. То есть сначала нужно удалить старую версию, а затем установить новую версию. Рабочий порядок удаления (без дополнительных отрицательных последствий), который мне удалось найти, такой:

1) Удаляем обновления для App-V 5.0 SP1. Удаление вызываем для выделенных на скриншоте обновлений в порядке убывания версий, то есть сначала удаляем патч версии 5.0.1224.0, затем 5.0.1218.0, затем 5.0.1211.0 

image

Самое занятное в этой ситуации то, что на одном из серверов патчи удалось удалить только в обратном порядке.

2) Удаляем серверные компоненты App-V 5.0 SP1

image

В форме выбора удаляемых компонент, отмечаем все установленные компоненты: 

image

Дожидаемся успешного окончания процедуры удаления:

image

После завершения удаления перезагружаем сервер.

***

Теперь можно приступить к процессу установки обновлённой версии Appv-V. Запускаем программу установки appv_server_setup.exe, доходим до шага выбора устанавливаемых компонент и отмечаем те же компоненты, что были установлены ранее 

image

Все прочие настройки на последующих шагах мастера установки (данные для доступа к удалённому экземпляру SQL Server, названия сайтов и порты служб, группу администраторов App-V  и др.) заполняем точно в таком же порядке, как делали это ранее. Прежние настройки можно подсмотреть в ранее выгруженном reg-файле куста реестра HKLM\SOFTWARE\Microsoft\AppV\Server

Дожидаемся успешного окончания процесса установки…

image

После завершения установки перезапускаем сервер App-V (чтобы убедиться в том, что все веб-службы App-V успешно стартуют при запуске системы) и проверяем работоспособность локального запуска веб-консоли App-V (http://localhost:8080/Console.html). Если с открытием веб-консоли проблем не возникло, проверяем версию по ссылке About в правом верхнем углу

image

Дополнительно можно проверить доступность веб служб публикации и отчетности, открыв в браузере ссылки по используемым у нас портам, например http://localhost:8082 и http://localhost:8081 соответственно. Если открытие ссылок не вызывает ошибок, можно считать, что обновление данного сервера прошло успешно.

Аналогичным образом обновляем остальные серверы управления/публикации/отчетности App-V.

 

Обновляем клиентов App-V

Информацию о развертывании клиентов App-V, в том числе и с особенностями SP3, можно найти в документе How to Deploy the App-V Client

В нашем случае обновляются клиенты App-V для RDS с помощью пакета appv_client_setup_rds.exe. В отличие от серверной части, обновление клиента возможно методом in place upgrade…

image

При этом новая версия клиента вполне культурно удаляет старую версию и все её обновления и языковые пакеты.

Начиная с App-V 5.0 SP2 графическая оболочка отделена от основного клиентского пакета. При желании UI можно скачать в виде инсталляционного пакета appv_client_ui_setup.msi по ссылке Microsoft Application Virtualization 5.0 Client UI Application и установить отдельно.

image

Сразу после установки обновлённой версии клиента можно установить доступный на текущий момент патч Hotfix Package 1 for Microsoft Application Virtualization 5.0 Service Pack 3 (KB3039022). В состав патча входит 2 файла для обновления клиенткой части AppV5.0SP3_Client_KB3039022.exe и AppV5.0SP3_RDS_KB3039022.exe

После завершения обновления установки клиента можно проверить возможность корректной синхронизации с сервером публикации:

Get-AppvPublishingServer | Sync-AppvPublishingServer

 

Обновляем App-V Sequencer

Пакеты виртуальных приложений собранные на предыдущей версии App-V 5.0 SP1 должны без проблем работать и с новой версией серверных и клиентских компонент App-V 5.0 SP3. Но все последующие обновления пакетов желательно делать в обновлённой версии App-V Sequencer.

Как и прежде, установка Sequencer не представляет собой ничего сложного, а дополнительную информацию об установке можно найти в документе How to Install the Sequencer

На этом, пожалуй, всё.

 

PS: Относительно нововведений App-V 5.0 SP3, да и в целом для общего развития, рекомендую посмотреть Вебкаст А.Кибкало - APP-V 5.0 Service Pack 3, виртуализация Microsoft Office

Всего комментариев: 3 Комментировать

  1. Anton Masyan /

    Алексей, а какой список софта в итоге у вас виртуализирован?

    1. Алексей Максимов / Автор записи

      В основном это разного рода "бизнес-приложения", которые требуют административных прав в системе или просто "плохо пахнут" :) Их названия скорее всего Вам ни о чём не скажут. Пример такого приложения как-раз был рассмотрен в первоначальной заметке.

  2. B van Zanten /

    I'm sorry this blog isn't in English, had to translate using google. translate.
    Nice blog , thanx!
    I have an addition, I had the same 'error' when running the Permissions.sql script: Login exists with wrong SID, droping it...
    Turns out, SQL uses other syntax to store the SID, so you need to calculate it in another way in order to have the same SID calculated that SQL Server uses. Use the following PowerShell code to calculate your correct SID:

    $Account="KOM\KOM-APPV-Administrators"
    $NTAccount = New-Object System.Security.Principal.NTAccount($Account)
    $SID=$NTAccount.Translate([System.Security.Principal.SecurityIdentifier])
    $c = New-Object 'byte[]' $sid.BinaryLength
    $sid.GetBinaryForm($c, 0)
    $c | ForEach-Object -Begin { $NewSid='0x' } -Process { $NewSid += "{0:x2}".ToUpper() -f $_ } -End { $NewSid }

    This gives the same SID as SQL server uses, and prevents the 'error' returned.

    Greetz, Ben van Zanten

Добавить комментарий