суббота, 6 августа 2016 г.

Установка и настройка Citrix Linux Virtual Desktop на Centos 7

Доброго времени суток, коллеги.
Относительно недавно компания Citrix представила возможность доставки рабочих столов на базе операционных систем семейства Linux, выпустив VDA-агент «Linux Virtual Desktop». Хотя, на данный момент, технология является достаточно сырой и обладает рядом ограничений и определенными трудностями в развертке, это первый шаг к доставке мульти платформенных виртуальных рабочих столов и существенной экономии на лицензиях Microsoft.
В данной статье рассмотрим доставку виртуального рабочего стола на базе бесплатной версии Linux – Centos 7, установив на него Citrix VDA-агент «Linux Virtual Desktop», используя технологию Citrix XenDesktop 7.

Воспользуемся следующим планом:
  1. Настройка Citrix Delivery Controller.
  2. Подготовка систем к установке Linux VDA.
  3. Установка и настройка Linux VDA.
  4. Публикация виртуального рабочего стола на сайте Citrix.

Системные требования описаны здесь.
Выделю необходимые условия:
  • Рабочий стол на базе ОС Linux должен быть в домене.
  • Citrix Delivery Controller должен резолвить рабочий стол Linux по FQGN имени машины.
  • Должно быть одинаковое время как на Linux-машине так и на Citrix Delivery Controller.

Приступим.

1. Настройка Citrix Delivery Controller.

Скачаем VDA-агент для Linux с сайта Citrix.com. Перейдем в по ссылке на страницу «Download», в окне поиска выберем «XenDesktop». В разделе «Components» выберем «Linux Virtual Desktop 1.3».
Скачаем непосредственно сам rpm-пакет для Centos 7 выбрав «Linux Virtual Desktop 1.3 (RHEL 7.2/CentOS 7.2)», а также необходимый Power Shell скрипт для Citrix Delivery Controller’а «Linux Virtual Desktop 1.3 (scripts)».

Выполним скачанный скрипт на контроллере доставки DDC «ven-tst-cds01». Распаковываем скачанный архив citrix-linuxvda-scripts-1.3.0.zip на диск C:\temp контроллера доставки Citrix Delivery Controller.  В окне PowerShell, запущенном под администратором, выполним команду:

C:\Temp\Update-BrokerServiceConfig.ps1

Скрипт переименует файл «BrokerService.exe.config» в «BrokerService.exe.config.prelinux», создаст новый файл «BrokerService.exe.config» после чего перезагрузит службу «Broker Service».
Для проверки корректного применения параметров, выполним команды:

cd 'C:\Program Files\Citrix\Broker\Service'
findstr EndpointLinux BrokerService.exe.config

Параметр «EndpointLinux» должен присутствовать в выводе команды.

2. Подготовка системы к установке Linux VDA.

Установку и первоначальную настройку самой операционной системы Centos 7 рассматривать не будем, ибо она стандартна для всех систем типа Red Hat.
Приступим к подготовке установки Linux VDA.
Изменим имя машины на ven-tst-rhel01. В командной строке откроем текстовым редактором файл /etc/sysconfig/network, выполнив:

sudo vi /etc/sysconfig/network

Для возможности внесения изменения в файл, нажимаем клавишу “i”, прописываем «HOSTNAME=ven-tst-rhel01».
Для выхода из режима редактирования, нажимаем [Esc], далее для сохранения изменений поочередно нажимаем клавиши “:”, “w”, “q”, [Enter].
Далее выполняем:

sudo hostname ven-tst-rhel01

Прописываем имя машины и FQDN-имя в файл /etc/hosts, выполним:

sudo vi /etc/hosts

Удалим все имеющиеся строки конфигурации, оставив следующие параметры:

127.0.0.1 ven-tst-rhel01.test.ru ven-tst-rhel01 localhost localhost.localdomain

Сохраним изменения и закроем файл. Для вступления изменений в силу, перезапустим сетевой интерфейс.

sudo /etc/init.d/network restart

Перезапустим SSH-сессию и проверим, выполнив команду:

hostname

Добавим A-запись с именем Centos-сервера в DNS.
Для этого в оснастке «DNS Manager» контроллера домена «ven-tst-srv01» выберем Lookup зону «test.ru». Нажимаем правой кнопкой мыши по данной зоне, в контекстном меню выбираем «New Host (a or AAA). В появившемся окне заполняем соответствие имени хоста к его IP-адресу.
Проверим, что сервер Citrix Delivery Controller видит сервер Centos по имени «ven-tst-rhel01», для этого на сервере «ven-tst-cds01» в командной строке CMD выполним:

nslookup ven-tst-rhel01

Проверяем, что на сервере Centos в службах интеграции гипервизора включена синхронизация времени. В нашем случае, используя гипервизор Hyper-V, в свойствах виртуальной машины выставляем галку напротив «Синхронизация времени».
Установим зависимости для пакета Linux VDA.
Проверим установлен ли пакет Java OpenJDK версии 1.8.0.

sudo yum info java-1.8.0-openjdk

Добавим переменную окружения JAVA_HOME, для этого выполним:

export JAVA_HOME=/usr/lib/jvm/java

Проверим версию Java:

java -version

На данный момент установлена последняя версия Java.

Установим PostgreSQL.
В командной строке последовательно выполним:

sudo yum -y install postgresql-server
sudo yum -y install postgresql-jdbc

Инициализируем файлы базы данных, выполнив:

sudo postgresql-setup initdb

Проверяем, что файлы успешно создадутся:

ls /var/lib/pgsql/data

Запускаем службу postgresql и добавляем ее в автозагрузку:

sudo /sbin/chkconfig postgresql on
sudo /sbin/service postgresql start

Установим Motif.
В командной строке выполним:

sudo yum -y install motif

Для поддержки печати из Centos установим cups и foomatic-filters. Для этого выполним:

sudo yum –y install cups
sudo yum -y install foomatic-filters

Установим оставшиеся необходимые пакеты. Для этого выполним:

sudo yum -y install redhat-lsb-core
sudo yum -y install ImageMagick

Добавим машину в домен.
Установим необходимые службы. В командной строке выполним:

sudo yum -y install samba-winbind
sudo yum -y install samba-winbind-clients
sudo yum -y install krb5-workstation
sudo yum -y install authconfig
sudo yum -y install oddjob-mkhomedir

Добавим службу winbind в автозагрузку:

sudo /sbin/chkconfig winbind on

Настроем сервис Winbind, для этого выполним:

sudo authconfig \
--disablecache \
--disablesssd \
--disablesssdauth \
--enablewinbind \
--enablewinbindauth \
--disablewinbindoffline \
--smbsecurity=ads \
--smbworkgroup=TEST \
--smbrealm=TEST.RU \
--krb5realm=TEST.RU \
--krb5kdc=ven-tst-srv01.test.ru \
--winbindtemplateshell=/bin/bash \
--enablemkhomedir –updateall

Где «TEST» - NETBIOS домена, ven-tst-srv01.test.ru – FGDQ-имя контроллера домена, а TEST.RU – имя домена.
Добавим в секцию [GLOBAL] файла настройки SMB "/etc/samba/smb.conf" следующие строки:

kerberos method = secrets and keytab
winbind refresh tickets = true

Вводим машину в домен, выполнив:

sudo net ads join Test.ru -U admin

Где, admin - учетная запись с правами добавления компьютеров в домен.
Игнорируем ошибку, проверяем успех ввода в домен, выполнив:

sudo net ads testjoin

Настроим подключаемый модуль аутентификации для Winbind, для этого в командной строке выполним:

vi  /etc/security/pam_winbind.conf

В секции [GLOBAL] прописываем следующие параметры:

krb5_auth = yes
krb5_ccache_type = FILE
mkhomedir = yes
Сохраняем изменения и перезапускаем сервис Winbind.
sudo /sbin/service winbind restart
Изменим настройки Kerberos, для этого выполним:
vi /etc/krb5.conf
В данном файле "krb5.conf" прописываем следующие параметры:
[logging]
 default = FILE:/var/log/krb5libs.log
 kdc = FILE:/var/log/krb5kdc.log
 admin_server = FILE:/var/log/kadmind.log
[libdefaults]
 dns_lookup_realm = false
 ticket_lifetime = 24h
 renew_lifetime = 7d
 forwardable = true
 rdns = false
 default_realm = TEST.RU
default_ccache_name = FILE:/tmp/krb5cc_%{uid}
 default_realm = TEST
[realms]
TEST.RU = {
kdc = VEN-TST-SRV01.TEST.RU
admin_server = VEN-TST-SRV01.TEST.RU
 }
 TEST = {
  kdc = ven-tst-srv01.test.ru
 }
[domain_realm]
 .test.ru = TEST.RU
 test.ru = TEST.RU
 test = TEST
 .test = TEST

Получим тикет от контроллера домена, для этого выполним:

kinit admin@TEST.RU

Отобразим все возможные варианты комбинации Principal Name с методами шифрования. Выполним:

sudo klist -ke

Аутентифицируем машину на контроллере домена. Для этого выполним:

sudo kinit -k VEN-TST-RHEL01\$@TEST.RU

Убедимся, что тикет успешно получен, для этого выполним:

sudo klist

Проверяем, что пользователь домена может успешно аутентифицировать в домене с Linux-машины. Выполним:

wbinfo --krb5auth=TEST.RU\\admin

Тестируем подключение по SSH к Linux-машине используя аутентификационные данные доменного пользователя TEST.RU\admin.
Видим, что подключение успешно состоялось. 

3. Установка и настройка Linux VDA.

Скопируем скачанный файл «XenDesktopVDA-1.3.0.312-1.el7.x86_64.rpm» в папку «admin» по CIFS-шаре \\ven-tst-rhel01.test.ru\admin.
На Linux-машине установим Citrix Linux VDA-агент, выполнив:

sudo rpm -i /home/TEST/admin/XenDesktopVDA-1.3.0.312-1.el7.x86_64.rpm

Пакет успешно установится.
Сконфигурируем VDA-агент, выполнив скрипт:

sudo /opt/Citrix/VDA/sbin/ctxsetup.sh

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

export CTX_XDL_SUPPORT_DDC_AS_CNAME=Y
export CTX_XDL_DDC_LIST= vniz-tst-cds01.test.ru
export CTX_XDL_VDA_PORT=80
export CTX_XDL_REGISTER_SERVICE=Y
export CTX_XDL_ADD_FIREWALL_RULES=Y
export CTX_XDL_AD_INTEGRATION=1
export CTX_XDL_HDX_3D_PRO=|N
export CTX_XDL_VDI_MODE=Y
export CTX_XDL_SITE_NAME=
export CTX_XDL_LDAP_LIST=
export CTX_XDL_SEARCH_BASE=
export CTX_XDL_START_SERVICE=Y

Настройки успешно применятся.
Запускаем VDA-агент, для этого выполним:

sudo /sbin/service ctxhdx start
sudo /sbin/service ctxvda start

Агент успешно запустится.

4. Публикация виртуального рабочего стола на сайте Citrix.

Создадим новый Machine Catalog. В консоли Citrix Studio щелкаем правой кнопкой мыши по разделу "Machine Catalog", в контекстном меню выбираем "Create Machine Catalog". В появившемся окне "Introduction" нажимаем "Next".
В окне "Operation System" в разделе "Select operating system for this Machine Catalog" выбирем "Desktop OS", нажимаем "Next".
В окне "Machine Management" в разделе "The Machine Catalog will use:" выберем "Machine that are not power management (for example physical machines)", в разделе "Deploy machine using" выбираем "Another service or thecnology", нажимаем "Next".
В окне "Desktop Experience" выбираем "I want users to connect to the same (static) desktop each time they log on", нажимаем "Next".
В окне "Machines and Users" в столбец "Computer AD account" добавляем Linux- машину с установленным VDA-агентом, в нашем случае "ven-tst-rhel01". В поле "User names" указываем доменного пользователя, в нашем случае "test_linux", нажимаем "Next".
В окне "Summary в поле "Machine Catalog name" и в поле "Machine Catalog description for administrator" вводим имя каталога машин "Centos_Catalog", нажимаем "Finish".
Machine Catalog успешно создастся, сервер "ven-tst-rhel01" успешно зарегистрируется.
Создадим группу доставки. В консоли Citrix Studio щелкаем правой кнопкой мыши по разделу "Delivery Groups", вы контекстном меню выбираем "Create Delivery Group".
В появившемся окне "Getting started with Delivery Groups" нажимаем "Next".
В окне "Machines" в разделе "Select a Machine Catalog" выбираем каталог машин с сервером Centos "Centos_Catalog", нажимаем "Next".
В окне "User Assignments" оставляем значения по умолчанию, нажимаем "Next".
В окне "Delivery Type" выбираем "Desktop", нажимаем "Next".
В окне "Users" выбираем "Restrict use of this Delivery Group to the following users", нажимаем "Add" и добавляем пользователя "test_linux", нажимаем "Next".
В окне "Desktop Assignment Rules" оставляем значения по умолчанию, нажимаем "Next".
В окне "Summary" в полях "Delivery Group name" и "Delivery Group descripton, used as label in Receiver (optional)" вводим имя группы доставки "Centos_Delivery", нажимаем "Next".
Группа доставки успешно создастся.
Проверим доставку рабочего стола Linux.
Авторизуемся в Citrix Receiver'е под пользователем "test_linux". Щелкаем по ярлыку "Centos_Delivery".
Рабочий стол Centos успешно запустится.
Проверяем свойства сессии в  Центре Подключения.
Проверяем свойства сессии в Citrix Director.

На этом предлагаю закончить.
Вопросы, замечания и предложения пишите в комментариях или на почту.
Удачного тестирования!