вторник, 1 июля 2008 г.

Опыт внедрения MS Terminal Servers на платформе VMWare ESX 3.5.

Коллеги, как и обещал, выкладываю выдержки из своего доклада на семинаре VMWare UG в Москве.

Задача: запустить 150 терминальных серверов Windows 2003 Terminal Services на одной блэйдовой полке c7000.

Конфигурация системы:

1. Тип серверов и СХД

Полка блэйдов HP BL680c ( 8 серверов ), 4 четырехъядерных Intel Xeon, 56 Gb памяти. HP EVA 6000. Контроллеры 4 гигабита.

2. Настройки серверов

ESX 3.5. DRS и HA кластер. Стандартные. Включена опция Intel Virtualization Technology (VT)

3. Настройки СХД

LUN’ы RAID5, по 3 – 7 терминальных сервера на LUN .

4. Конфигурация VM

a. Win 2003 R2 Enterprise x32. 1 диск 20 Gb. Используется LSI Logis SCSI controller. Все неиспользуемые порты запрещены. Запрещен autodetect в ОС.

Подводные камни:

1. На ESX 3.5 без исправлений, при миграции, особенно именно VM с Terminal Services загрузка CPU VM поднималась до 100%. Исправлено при помощи установки опции Mem.VMOverheadGrowthLimit в 5. По умолчанию -1. Статья VMWare KB “Virtual machine CPU usage spikes and remains abnormally high after VMotion in a VMware DRS enabled cluster”.

2. При миграции иногда возникала большая загрузка CPU VM. Решилось установкой и ежедневной дефрагментацией диска в фоне.

3. Несмотря на рекомендации в блогах для ESX 3.0 давать VM с TS не более 2-х процессоров, было дано 4 процессора ввиду большого количества исполняемых приложений. После тестирования не выявлено никаких аномалий при работе с 4-мя процессорами.

4. Обязательно жестко лимитировать верхнюю память, выделяемую для VM x32. Лимит в 4096 Mb. Зарезервированная память установлена в те объемы, которые забирает VM при стандартной средней загрузке.

5. Memory ballooning разрешен, несмотря на рекомендации в некоторых блогах.

6. Запретить Page Sharing. Запрет уменьшит загрузку vmkernel при использовании TS. На таких гостевых ОС частые изменения памяти и vmkernel вынужден постоянно генерировать хэш для страниц памяти и сравнивать их. Mem.ShareScanGHz = 0, Mem.ShareRateMax=0 (Для отключения TPS также можно воспользоваться командой sched.mem.pshare.enable=False (источник: http://communities.vmware.com/message/972008#972008 )- Дмитрий Тихович)

Результат и оставшиеся проблемы

1. Результат

a. Нормальная работа с неким вариантом балансировки нагрузки
b. Легкое управление и быстрое восстановление работоспособности + все остальные прелести VI3

2. Проблемы

a. Тормоза при высокой загрузке диска ( в основном из-за рендеринга печати ). Проблемы с печатью предполагается решать с помощью Thinprint (http://www.thinprint.com/?s=5244&lc=61 ).

Ссылки:
http://www.brianmadden.com/content/article/A-short-guide-to-virtualizing-Presentation-and-Terminal-servers-on-VMware-ESX-3
http://kb.vmware.com/selfservice/microsites/search.do?cmd=displayKC&docType=kc&externalId=1003638&sliceId=2&docTypeID=DT_KB_1_1&dialogID=55422058&stateId=0%200%2055418455

Дмитрий Мощалков

8 комментариев:

  1. Добрый день.
    Интересно, как пересекается пункт 6 - Запретить Page Sharing. Запрет уменьшит загрузку vmkernel при использовании TS* с опубликованными ранее заметками о Overcommiting memory http://www.vm4.ru/2008/04/overcommiting-memory.html где рассказывали о прекрасной консолидации памяти для Citrix (а Citrix построен поверх обычной терминалки)
    Или консолидация памяти работает только в случае если на физическом хосте запущен только один сервер Citrix (тогда он консолидирует сам себя ))) ?

    ОтветитьУдалить
  2. так и пересекается:
    он дает хорошие плюсы по памяти, но ценой нагрузки на CPU.

    В большинстве случаев такой обмен выгоден, но не всегда.

    ОтветитьУдалить
  3. да, прочтение без анализа, привело к неправильным выводам. спасибо за указание

    ОтветитьУдалить
  4. Коллеги, извините за глупый вопрос - но что есть "Запрещен autodetect в ОС" в этой статье?
    Если имеется в виду "Plug & Play" сервис, то как его отключить? Не могу даже в Safe Mode отключить этот сервис. :( Win2k3 R2 EntEd x32 - Terminal Server

    ОтветитьУдалить
  5. По моему, имелся в виду автозапуск CR-ROM.

    ОтветитьУдалить
  6. А почему в качестве гостевой выбрана 32-битная ОС? Разве в 64-битной не выше производительность? Да и терминальных сессий на 1 ОС в 64-битной больше, кажется...

    ОтветитьУдалить
  7. Тормоза при высокой загрузке диска.
    Как решить эту проблему; варианты?

    ОтветитьУдалить
  8. повысить производительность дисковой?

    ОтветитьУдалить