четверг, 24 сентября 2015 г.

Переход с XenApp 6.5 на XenApp 7.6

Доброго времени, коллеги.
Не за горами прекращение поддержки продукта Citrix XenApp 6.5, подробнее тутПора всерьез задумываться о переходе на новую систему XenApp 7.x. 
Да и век операционной системы Windows Server 2008R2 скоро подойдет к концу.
Решение Citrix XenApp 6.5 – это самая последняя и стабильная версия линейки продуктов XenApp, построенная на архитектуре IMA. И если в начальных версиях XenApp 7.0, XenApp 7.1 отсутствовали некоторые дополнения, широко применяемые в XenApp6.5, то в последних версиях XenApp7.5 и XenApp 7.6 компания Citrix вернула их поддержку, подробнее тут
Сразу хочу огорчить тех, кто использовал «Citrix Streaming Profiler» для виртуализации и доставки приложений. В релизе XenApp 7.6 поддержка данного дополнения прекращена. Придется вручную переупаковывать приложения App-V, рассмотрим это в следующей статье, либо устанавливать локально на VDA.
В данной статье рассмотрим несколько вариантов перехода с Citrix XenApp 6.5 на новое решение доставки приложений Citrix XenApp 7.6:

1. Миграция приложений фермы XenApp 6.5 на XenApp 7.6
1.1. Резервное копирование и верификация базы данных.
1.2. Экспорт параметров фермы и политик в XML.
1.3. Установка необходимых приложений на сервер фермы XenApp 7.6
1.4. Импорт параметров фермы и политик из XML на новую ферму XenApp 7.6
2.Обновление XenApp 6.5 до версии XenApp7.6
2.1. Удаление сервера из фермы XenApp 6.5
2.2. Удаление службы XenApp и сопутствующих сервисов
2.3. Установка VDA и добавление сервера в ферму Citrix XenApp 7.6

1. Миграция приложений фермы XenApp 6.5 на XenApp 7.6


Плюсы:
Поддерживаемая ОС Windows Server 2012 R2
Чистая контролируемая развертка без переноса ненужных хвостов и ошибок.
Минусы:
Необходимо обновить сервер лицензирования рабочих столов Microsoft до Windows 2012R2
Необходима поддержка ОС Windows Server 2012R2 со стороны мигрируемого приложений.
Необходим дистрибутив приложения и инструкция по установке и кастомизации.
Воспользуемся следующей схемой миграции:
 

1.1. Резервное копирование и верификация базы данных.

На дата коллекторе фермы XenApp 6.5 открываем приложением «Notepad» файл «MF20.dsn» находящийся в папке «C:\Program Files (x86)\Citrix\Independent Management Architecture\». Из данного файла узнаем параметры подключения к серверу базы данных и имя самой базы данных фермы XenApp 6.5.
SQL Server = ven-tst-sql01.test.ru
DataBase = Test_XenApp65
Открываем консоль "Microsoft SQL Server Management Studio" под пользователем с правами, разрешающими создавать резервные копии баз данных, минимальные права - db_backupoperator, подробнее тутПрописываем в строке "Setver name:" имя сервера "ven-tst-sql01", нажимаем "Connect".
В разделе "Databases" щелкаем правой кнопкой мыши по базе данных "Test_XenApp65", в контекстном меню выбираем "Tasks", далее "Back Up".
В появившемся окне "Back Up Database" в разделе "Destination" нажимаем "Add". В разделе "Destinations on disk" выбираем "File name" и указываем необходимый путь для резервной копии базы, например:
C:\Temp\XenApp65.bak
Нажимаем «Ок».
Необходимо сделать полное резервное копирование базы данных, для этого в меню "Backup type" выбираем "Full". Нажимаем «Ок».
"Microsoft SQL Server Management Studio" сообщает, что резервное копирование базы прошло успешно.
Для верификации базы данных необходимо запустить на дата коллекторе XenApp6.5 утилиту "IMA Helper", подробнее тут.
После запуска утилиты, переходим во вкладку "IMA Datastore", нажимаем "Master Check". Запустится утилита "DSCHECK ", которая проверит на консистентность базу данных фермы XenApp 6.5.
Соглашаемся с предупреждением, нажав "Yes".
В появившемся информационном окне нажимаем "OK", начнется операция проверки целостности базы данных.
После успешной проверки консистентности базы данных, откроется лог утилиты "DSCheck". Проверив его на отсутствие ошибок, нажимаем "Close".
Проверим корректную работу службы IMA. Переходим во вкладку "IMA Startup".
Останавливаем службу IMA. Для этого в командной строке на сервере вводим:

net stop imaservice
Либо нажимаем на кнопку «Stop IMA» в панели "Quick Controls" утилиты "IMA Helper".
Далее нажимаем «Start Analysis".
После успешной проверки работоспособности службы IMA, утилиту IMA Helper можно закрыть и приступить к процессу миграции.


1.2 Экспорт параметров фермы и политик в XML.

Воспользуемся набором утилит "Migration Tools".

Для версии XenApp 7.6 данные утилиты можно скачать по пути "Home/Downloads/XenApp/Product Software/XenApp 7.6" в разделе "Components updated or added since the initial release".
Скачиваем Migration Tools, нажав на Download напротив строки "XenApp Migration Script"
Необходимые условия для экспорта параметров с фермы Citrix XenApp 6.5:
  • Экспорт необходимо выполнять на сервере XenApp 6.5 имеющим роль Data Collector.
  • Для запуска командлетов экспорта необходимо обладать правами администратора XenApp с разрешением на чтение объектов.
  • Следует включить разрешения в Windows на запуск сценариев PowerShell.

Подробнее тут.
На рисунке ниже показаны опубликованные приложения и политики фермы XenApp 6.5.
Приступим.
Для разрешения выполнения сценариев PowerShell, в командной строке Windows PowerShell выполним команду:
Set-ExecutionPolicy RemoteSigned
Распакуем архив с утилитами "Migration Tools" в папку "C:\Citrix Migration tools".
Произведем импорт необходимых модулей в среду Windows PowerShell.
Переходим в папку ReadIMA, для этого выполняем:
cd 'C:\Citrix Migration tools\ReadIMA'
Импортируем модули для экспорта параметров фермы XenApp 6.5 в XML-файл. Выполняем:
Import-Module .\ExportPolicy.psd1 - Модуль для экспорта политики
Import-Module .\ExportXAFarm.psd1 - Модуль для экспорта параметров фермы
Произведем экспорт политик в файл "XAPolicies.XM", для этого выполним:
Export-Policy -XmlOutputFile XAPolicies.XML
Произведем экспорт параметров фермы в файл "XAFarm.xml", для этого выполним:
Export-XAFarm -XmlOutputFile XAFarm.xml

1.3. Установка необходимых приложений на сервер фермы XenApp 7.6

Рассматривать установку приложений на терминальные сервера Windows 2012R2 фермы XenApp 7.6 в данной статье не будем, ибо она тривиальна. Предположим, что установка уже произведена.

1.4. Импорт параметров фермы и политик из XML на новую ферму XenApp 7.6 

Необходимые условия для импорта политик и  параметров фермы XenApp6.5 из XML-файла на ферму XenApp 7.6:
  • Импорт необходимо выполнять на сервере, имеющим роль Desktop Delivery Controller на сайте XenApp 7.6. Консоль Citrix Studio должна быть установлена на данном контроллере.
  • Для запуска командлетов импорта необходимо обладать правами администратора XenApp 7.6 с разрешением на чтение и создание объектов.
  • Следует включить разрешения в Windows на запуск сценариев PowerShell.
  • Во время импорта не должны быть активны никакие другие подключения администраторов. Сценарии импорта создают множество новых объектов, и одновременные изменения конфигурации другими администраторами могут повлиять на работоспособность сайта.

Рассмотрим импорт политик фермы.
Хочу заметить, что импортируются только параметры политики Citrix, созданные с помощью консоли управления AppCenter, параметры политики Citrix, созданные с помощью объектов групповой политики Windows (GPO), не импортируются. Так же не поддерживается импорт параметров присвояния политики к Worker Groups или к отдельному серверу XenApp 6.5 в ферму XenApp7.6.
Приступим.
Копируем папку "Citrix Migration tools" с сервера XenApp6.5 на диск C:\ контроллера доставки XenApp 7.6.
Для разрешения выполнения сценариев PowerShell, в командной строке Windows PowerShell выполним команду:
Set-ExecutionPolicy RemoteSigned


Произведем импорт необходимых модулей в среду Windows PowerShell.
Переходим в папку ImportFMA, для этого выполняем:
cd 'C:\Citrix Migration tools\ImportFMA'
Импортируем модули для импорта параметров фермы XenApp 6.5 из XML-файла. Выполняем:
Import-Module .\ImportPolicy.psd1 - Модуль для импорта политики
Import-Module .\ImportXAFarm.psd1 - Модуль для импорта параметров фермы
Выполним команду для предварительного просмотра результата импорта политик с записью лога в файл "Import_Policy.log":
Import-Policy -XmlInputFile .\XAPolicies.XML -LogFile Import_Policy.log -Preview
Убеждаемся, что импорт произойдет без ошибок.
Произведем импорт политик фермы XenApp6.5 из XML-файла "XAPolicies.XML", для этого выполним:
Import-Policy -XmlInputFile .\XAPolicies.XML -LogFile Import_Policy.log
Видим, что политики успешно импортировались.
Рассмотрим импорт параметров фермы.
Не импортируются приложения следующих типов:
  • Server desktops
  • Content
  • Streamed applications, включая App-V приложения.

Приступим.
Выполним команду для предварительного просмотра результата импорта параметров фермы с записью лога в файл "Import_XAFarm.log":
Import-XAFarm -XmlInputFile .\XAFarm.xml -LogFile .\Import_XAFarm.log –Preview
Может возникнуть ошибка:
Cannot process argument because the value of argument "obj" is null. Change the value of argument "obj" to a non-null value.
Application import aborted
Данная ошибка возникает при установленной версии powershell ниже версии 4.0
Определяем версию PowerShell, выполнив:
$host.version
$psversiontable
Видим, что в системе установлена версия PowerShell 2.0.
Необходимо обновить PowerShell до версии 4.0
Выполним команду для предварительного просмотра результата импорта еще раз:
Import-XAFarm -XmlInputFile .\XAFarm.xml -LogFile .\Import_XAFarm.log –Preview
Убеждаемся, что теперь импорт произойдет без ошибок.
Производим импорт:
Import-XAFarm -XmlInputFile .\XAFarm.xml -LogFile .\Import_XAFarm.log
Импорт параметры фермы без указания дополнительных параметров создает одну Delivery Group'у "XenApp65 – Delivery Group", которая включает в себя все опубликованные приложения XenApp. Причем сохраняется привязка к группам пользователей.
Так же сохраняется привязка распределения приложений по папкам.
Привязка к серверам и группам серверов по очевидным причинам не импортируется.
Для того, чтобы сгруппировать импортируемые параметры публикуемых приложений нужным нам образом, можно воспользоваться фильтрами сопоставления:

MatchWorkerGroup и NotMatchWorkerGroup - сопоставляет (либо нет) указанную группу серверов XenApp6.5 -  Worker Group c группой доставки XenApp 7.6 - Delivery Group. В нашем случае мы применяем фильтр "MatchWorkerGroup " для того, чтобы все приложения, опубликованные на группу серверов "DefaultApp_WG" фермы XenApp6.5 импортировались в группу доставки "DefaultApp_DG" сайта XenApp 7.6. Для этого выполним:
Import-XAFarm -XmlInputFile .\XAFarm.xml -MatchWorkerGroup 'DefaultApp_WG' -DeliveryGroupName 'DefaultApp_DG'
Видим, что приложения успешно импортировались в группу доставки "DefaultApp_DG"

MatchFolder и NotMatchFolder - сопоставляет (либо нет) указанную папку с опубликованными приложениями фермы XenApp 6.5 c группой доставки сайта XenApp 7.6. В нашем случае мы применяем фильтр MatchFolder для того, чтобы все приложения фермы XenApp6.5 находящиеся в папке MS_Office импортировались в группу доставки "MS_Office_DG" сайта XenApp 7.6. Для этого выполним:
Import-XAFarm –XmlInputFile XAFarm.xml –MatchFolder ‘MS_Office’ –DeliveryGroupName ‘MS_Office_DG’ 
Видим, что приложения успешно импортировались в группу доставки "MS_Office_DG"

MatchAccount и NotMatchAccount - сопоставляет (либо нет) указанного пользователя, либо группу пользователей которым опубликованы приложения на ферме XenApp6.5 c группой доставки сайта XenApp 7.6. В нашем случае мы применяем фильтр "MatchWorkerGroup " для того, чтобы все приложения, опубликованные на группу пользователей "TEST\\Usr_ExtApp_7Zip" импортировались в группу доставки "Ext_App7Zip_DG" сайта XenApp 7.6. Для этого выполним:
Import-XAFarm -XmlInputFile XAFarm.xml -MatchAccount `TEST\\Usr_ExtApp_7Zip' -DliveryGroupName `Ext_App7Zip_DG'
Видим, что приложения успешно импортировались в группу доставки "Ext_App7Zip_DG"

MatchServer и NotMatchServer. - сопоставляет (либо нет) указанный сервер фермы XenApp6.5 c группой доставки сайта XenApp 7.6. В нашем случае мы применяем фильтр "MatchServer" для того, чтобы все приложения, опубликованные на сервер "ven-tst-xdc01" фермы XenApp6.5 импортировались в группу доставки "AllPublics_ven-tst-xdc01_DG" сайта XenApp 7.6. Для этого выполним:
Import-XAFarm -XmlInputFile XAFarm.xml -MatchServer 'ven-tst-xdc01' -DeliveryGroupName 'AllPublics_ven-tst-xdc01_DG'
Видим, что приложения успешно импортировались в группу доставки "AllPublics_ven-tst-xdc01_DG"

2. Апгрейд XenApp 6.5 до версии XenApp7.6.

В некоторых случаях не получится смигрировать приложения с сервера Windows Server 2008R2 фермы XenApp 6.5 на Windows Server 2012R2 фермы XenApp 7.6. Например, если само приложение или связанные с ним приложения не поддерживаются операционной системой Windows Server 2012R2, либо отсутствует дистрибутив установки приложения с необходимой инструкцией и т.п.
В таких случаях можно произвести апгрейд сервиса XenApp 6.5 до версии XenApp 7.6, подробнее тут.
Воспользуемся планом:
  1. Удаляем терминальный сервер XenApp 6.5 из фермы.
  2. Удаляем службу XenApp и сопутствующие сервисы
  3. Установка VDA-агента XenApp 7.6 на данный сервер

Для удаления терминального сервера из фермы XenApp6.5 необходимо выполнить в командной строке на данном сервере:
cd "C:\Program Files (x86)\Citrix\XenApp\ServerConfig"
XenAppConfigConsole.exe /ExecutionMode:Leave
После успешного удаления сервера из фермы, необходимо удалить службу XenApp6.5, подробнее тут.
В панели установки и удаления программ выделяем "Citrix XenApp6.5", нажимаем "Uninstall"
Запустится процесс удаления Citrix XenApp 6.5
Во всплывающем окне нажимаем на "Yes" для перезагрузки сервера.
После перезагрузки сервера, службы XenApp 6.5 успешно удалятся.
Установим VDA-агент XenApp7.6 на данный сервер.
Монтируем образ XenDesktop7.6 на сервер, в появившимся окне выбираем установку "XenApp Deliver applications"


В разделе «Upgrade Machines and Images» выбираем «Virtual Delivery Agent for Windows Server OS»
Откроется окно установки VDA агента. В разделе «Configuration, I want to» выбираем «Enable connections to a server machine», нажимаем «Next»
Оставляем значение по умолчанию, нажимаем на «Next».
В окне «Delivery Controller» в разделе «Configuration» указываем Delivery Controllerвручную, выбрав «Do it manually», в строке «Controller address» прописываем «ven-tst-cds01.test.ru». Нажимаем «Test Connection». Далее добавляем контроллер в список, нажав «Add».
Оставляем значение по умолчанию, нажимаем «Next»
Так как на данном сервере используется стандартный Windows Firewall, предоставим установщику создать необходимые правила в брандмауэре автоматически, выбрав опцию «Automatically» в разделе «Configure firewall rules:». Нажимаем «Next».
В окне «Summary» убеждаемся, что все настройки произведены корректно, нажимаем «Install».
Начнется установка VDA-агента и связанных дополнений.
После успешной установки, нажимаем «Finish», система перезагрузится.
VDA успешно установится.
Добавим сервер на сайт XenApp 7.6.
Откроем Citrix Studio и создадим Каталог Машин, нажав правой кнопкой по "Machine Catalog" и выбрав "Create Machine Catalog". В появившемся окне нажимаем "Next"
В окне "Operating System" выбираем "Windows Server OS", нажимаем "Next"
В окне "Machine Management" выбираем "Another service or technology", нажимаем "Next"
В окне «Machines» добавим сервер. Для этого нажимаем на кнопку «Add Computers», в появившемся окне вводим имя компьютера, в нашем случае «ven-tst-xdc01», нажимаем «Ok». Далее "Next"
В окне «Summary» в разделе «Machine Catalog name:» введем имя набора компьютеров, например, «Server2008_Catalog», нажимаем «Finish».
Видим, что сервер успешно зарегестрировался на сайте XenApp 7.6
После добавление сервера в каталог машин, можно добавить его к необходимой группе доставки и опубликовать приложения вручную, либо воспользоваться утилитами Citrix Migration Tools, описанные выше.
На этом предлагаю закончить.
Вопросы, замечания и предложения пишите в комментариях или на почту.
Удачного тестирования!