NB: вопросы и пожелания по кластерe пишите, пожалуйста, в форум.
Кластер — это некоторое количество терминальных серверов, на которых установлена служба балансировки нагрузки WTware. Ссылка для скачивания здесь. Служба называется "WTware Load Balancing".
Все сервера в кластере равноправны. Основное преимущество такого подхода состоит в отсутствии точек отказа. Мы можем выключить любое количество серверов, и клиенты будут обслуживаться до тех пор, пока останется хотя бы один работающий сервер из кластера. Недостатком такого подхода является то, что любые различия в настройках службы балансировки на серверах одного кластера могут помешать корректной балансировке нагрузки.
Сервера узнают друг о друге, используя автоматический поиск либо загружая список адресов из файла конфигурации. В кластер может входить до ста серверов.
Каждый кластер имеет свое уникальное имя и пароль. Имя необходимо клиенту для указания кластера, к которому он желает подключиться. Пароль используется для избежания постороннего вмешательства в работу кластера. Имя и пароль хранятся в файле конфигурации.
Схематично взаимодействие клиентского терминала с кластером можно отобразить в трех шагах. Оно начинается с запроса терминала.
Затем сервера совещаются мажду собой, определяя наименее загруженный.
После этого наименее загруженный терминальный сервер сообщает терминалу свой IP-адрес для подключения.
На практике кластер работает именно так, и еще добавляется проверка логина для обеспечения сохранности оборванных сессий.
В сети может одновременно существовать несколько кластеров WTware. Они не будут мешать друг другу, если у каждого кластера будет уникальное имя.
Каждый сервер может одновременно входить в несколько (до девяти) кластеров. Такой режим может быть использован, например, для распределения приложений по серверам. Предположим, на серверах , и установлен Microsoft Office, на серверах , и установлен Corel Draw. Можно настроить три кластера: secretary, manager, artist.
Пользователи, которым для работы нужен только Microsoft Office, будут подключаться к кластеру secretary. Пользователи, которые работают только с Corel Draw, будут подключаться к кластеру artist. Пользователи, которым нужно работать с обоими программами, будут подключаться к кластеру manager. Служба балансировки нагрузки WTware поможет равномерно распределить нагрузку на физические сервера.
Служба балансировки нагрузки WTware реализует четыре критерия оценки загруженности серверов. Очень важно, чтобы внутри одного кластера все сервера были настроены на использование одного и того же критерия.
Для учета различий между серверами используется корректирующий коэффициент, который
есть у каждого критерия. Например, если мы используем два сервера, балансировку по
количеству пользователей и желаем, чтобы на сервер
подключалось в два
раза больше пользователей, чем на сервер
, то мы в
конфигурации сервера
должны указать balance:users*2
В этом случае при принятии решения "куда подключать нового пользователя?" будет
сравниваться число пользователей на сервере
и число
пользователей на сервере ,
умноженное на два. В результате к серверу
будет подключено в два
раза больше пользователей, чем к серверу
. Того же результата
можно достичь, если вместо дописывания *2
в конфигурацию
второго сервера дописать *0.5
в конфигурацию
первого сервера.
Число, определяющее загруженность сервера, вычисляется как количество пользователей, подключенных к службе терминалов этого сервера в настоящий момент, умноженное на корректирующий коэффициент этого сервера.
Число, определяющее загруженность сервера, вычисляется как объем физической памяти на сервере, разделенный на количество пользователей, подключенных к службе терминалов этого сервера в настоящий момент, и умноженное на корректирующий коэффициент этого сервера.
Число, определяющее загруженность сервера, вычисляется как длина очереди процессора, умноженная на корректирующий коэффициент этого сервера. Длина очереди процессора равна числу ожидающих выполенния потоков. Эта величина лучше отражает нагрузку процессоров, чем "загрузка ЦП", показываемая Task Manager. Длину очереди процессора можно увидеть в Perfomance Monitor, объект System/Система, счетчик Processor Queue Length/Длина очереди процессора.
Суммируется объем оперативной памяти, потребляемой в настоящий момент каждым пользователем по отдельности. При этом если пользователь в настоящий момент потребляет менее некоторой базовой величины (по умолчанию 40Мб), то вместо реальной цифры для него принимается 40Мб. В конце сумма умножается на корректирующий коэффициент этого сервера. Этот критерий используется по умолчанию.
Сервера могут воспользоваться автоматическим поиском себе подобных. Поиск выполняется при помощи широковещательных сообщений. Широковещательные сообщения проходят через свичи и хабы.
Клиентский терминал также может искать сервера при помощи широковещательных сообщений. Если все сервера и терминалы соединены между собой только свичами и/или хабами, то вы вполне можете положиться на автоматический поиск.
Если между серверами находятся маршрутизаторы, которые не пропускают широковещательные пакеты, придется воспользоваться статическим списком входящих в кластер серверов, который задается в файле конфигурации кластера.
Автоматический поиск можно совмещать с использованием статического списка серверов. Например, в случае, изображенном на картинке внизу, достаточно указать серверу адрес сервера и разрешить на всех серверах автопоиск, и через некоторое время все сервера найдут друг друга. Однако в такой сети гарантировать обслуживание клиентов "до тех пор, пока последний сервер работает" мы сможем только в том случае, когда все сервера, а также все клиенты будут иметь список адресов всех серверов.
Конфигурационный файл называется 'wtlb.cfg'. Находится в каталоге, в который была проинсталлирована служба балансировки нагрузки WTware.
Каждый кластер описывается отдельной строчкой clusterN = ... Один сервер может входить в девять кластеров. Индекс N принимает значения от 1 до 9 и не должен повторяться в одном файле. Синтаксис строки:
clusterN = name:..., password:..., autosearch:...[, list:finance.iplist][ ,balance:...]
name:
имя кластера. Обязательный параметр, именно по имени
различаются кластеры.password:
пароль доступа к кластеру. Обязательный параметр, используется
при всех коммуникациях между серверами. Пароль должен быть одинаковым у всех
кластеров с одинаковым именем, иначе сервера не смогут обмениваться информацией.autosearch:
разрешать или не разрешать автоматический поиск других
серверов. Возможные значения: on
и off
, по умолчанию on
.list:
указывает имя файла со списком адресов серверов, входящих
в этот кластер. Подробнее про формат этого файла будет сказано далее.balance:
критерий оценки загруженности серверов. Задает правило, по
которому будет определяться наименее загруженный сервер. Может принимать
следующие значения:users
либо users*k
, балансировка по количеству
пользователей. Коэффициент k по умолчанию равен единице. Чем больше k, тем
слабее будет загружен этот сервер.ram/users
либо ram/users*k
, балансировка по количеству
физической памяти, приходящейся на одного пользователя. Коэффициент k по
умолчанию равен единице. Чем больше k, тем слабее будет загружен этот сервер.cpu
либо cpu*k
, балансировка по загруженности процессора.
Коэффициент k по умолчанию равен единице. Чем больше k, тем слабее будет
загружен этот сервер.AI/1
либо AI/1(m)
либо AI/1*k
либо AI/1(m)*k
, эмпирическая оценка загруженности
оперативной памяти. Коэффициент m по умолчанию равен 40000. Для идеальной
настройки параметр m должен быть равен среднему значению суммы используемой
всеми процессами оперативной памяти, указываемой в колонке "Память"
Task Manager'а. Чем больше k, тем слабее будет загружен этот сервер.Второй параметр, который указывается в конфигурационном файле, называется debug. Он задает имя файла, в который ведется подробный протокол работы службы балансировки. Если закомментировать этот параметр, то служба будет отправлять сообщения в системный журнал, просматривать их можно системной утилитой Event View/Просмотр событий.
Файл со списком адресов серверов, входящих в кластер, имеет еще более простой формат. Адреса перечисляются по одному в строке. Можно указывать как ip-адрес, так и dns и wins-имена, если они распознаются. В дистрибутиве есть два примера этих файлов. Рекомендую использовать один и тот же файл со списком адресов на каждом сервере и этот же файл отдавать терминалам. Также рекомендую указывать в этом файле только IP-адреса, так как терминалы не смогут распознать имена wins.
Для того, чтобы служба приняла изменения в конфигурационных файлах, ее нужно остановить и запустить заново. Для этого можно воспользоваться системной консолью "Службы".
NB: вопросы и пожелания по кластеру пишите, пожалуйста, в форум.