Достижение высокого уровня доступности IBM Lotus iNotes

Познакомьтесь с методами достижения высокого уровня доступности IBM Lotus iNotes с использованием программного балансировщика нагрузки или такого оборудования, как Application Delivery Controller (ADC), в сочетании с технологией кластеризации IBM Lotus Domino.

Винод Серафин, старший технический специалист, IBM

Винод Серафин (Vinod Seraphin) - старший технический специалист и ведущий архитектор Domino Web Access и Domino Common PIM Portlets. Domino Web Access (ранее называвшийся iNotes) появился на свет в результате попытки Винода разработать прототип очень привлекательного персонального информационного менеджера (PIM), работающего в браузере. С середины 1990-х гг. он работает в Lotus/Iris/IBM. До того, как заняться Domino Web Access, Винод был архитектором ПО Lotus Organizer. Он получил степень магистра наук по компьютерным информационным системам в Бостонском университете и степень бакалавра наук по информатике и вычислительной технике в Массачусетском технологическом институте. Он также является страстным поклонником профессионального спорта и увлекается софтболом, боулингом и путешествиями, а также проводит много времени с семьёй.



Як Цеек, консультирующий инженер-программист, IBM

Як Цеек (Jack Ciejek) – консультирующий инженер-программист, разработчик продукта Lotus iNotes. Работает в IBM с 1988 года; до начала работы с продуктами Lotus (в том числе Lotus SmartSuite для OS/2) работал над различными операционными системами мейнфреймов IBM.



Рауль Гарг, штатный инженер-программист, IBM

Рауль Гарг (Rahul Garg) – штатный инженер-программист, в группе разработки iNotes специализируется на сложных конфигурациях и особых случаях. Работает в IBM с 2005 года.



Нирмала Венкатраман, разработчик-исполнитель, IBM

Нирмала Венкатраман (Nirmala Venkatraman) - разработчик-исполнитель (Performance Architect) группы Domino Server Performance Team.



Крейг Скарборо, инженер по развитию бизнеса, F5 Networks

Крейг Скарборо (Craig Scarborough) – инженер по развитию бизнеса компании F5 Networks. Имеет более чем 20-летний опыт работы в области сетей, систем хранения данных и безопасности. Крейг отвечает за развитие партнерских отношений между IBM и F5, выявляя инновационные решения, использующие технологию для удовлетворения требований клиентов и рынка.



Рон Каровано, старший менеджер по развитию бизнеса, F5 Networks

Рон Каровано (Ron Carovano) – старший менеджер по развитию бизнеса компании F5 Networks. Отвечая за глобальный альянс с IBM, курирует совместную разработку решений F5 и IBM. Также отвечает за согласование бизнес-программ F5 с инициативами IBM по выводу продуктов на рынок.



29.11.2010

Примечание редактора: Эта тема вам хорошо знакома? Хотите поделиться опытом? Примите участие в вики-программе, посвященной IBM Lotus.

Введение

Электронная почта – одно из важнейших корпоративных приложений, так что пользователи и администраторы рассчитывают на его круглосуточную доступность. В случае IBM Lotus Notes и Lotus Domino высокая доступность Lotus Domino достигается благодаря кластеризации и репликации почтовых файлов. Клиент Lotus Notes содержит специальный код для преодоления ситуаций, когда сервер Lotus Domino, с которыми он общается, недоступен.

После небольшой задержки (ожидания завершения попытки соединения или сеанса связи) клиент Lotus Notes уведомляет пользователя, что сервер недоступен, и просит его разрешить переход к другой известной реплике сервера.

Однако в Lotus iNotes для обеспечения высокой доступности требуется помощь некоторой дополнительной инфраструктуры, такой как Application Delivery Controller (ADC). ADC дает центру обработки данных много преимуществ, в том числе:

  • повышение надежности приложений (благодаря мониторингу приложений и выравниванию нагрузки);
  • повышение безопасности (межсетевые экраны приложений) и производительности (оптимизация TCP и HTTP);
  • разгрузка серверов от некоторых ресурсоемких задач, таких как шифрование Secure Sockets Layer (SSL).

Lotus Domino включает в себя технологию Internet Cluster Manager, которая способна перенаправить начальный URL приложения к одному из нескольких почтовых серверов. Однако если почтовый сервер становится недоступным после начала сеанса, не существует механизма восстановления и перехода на другой, доступный сервер, который содержит копию данного почтового файла.

При правильной настройке балансировщик нагрузки может предоставить пользователям возможность гладкого перехода на другой ресурс. Пользователи не догадываются, что исходный сервер, с которым они взаимодействовали, уже недоступен; балансировщик нагрузки автоматически установит этот факт и перенаправит запрос на другой сервер.

Существуют как программные балансировщики нагрузки, так и специальное оборудование (такое как ADC), которое обеспечивает такую возможность. Аппаратные реализации, как правило, немного дороже, зато гарантируют превосходную производительность, расширенные возможности и повышенную экономию ресурсов сервера.

В этой статье рассматриваются некоторые проблемы, связанные с правильным выравниванием нагрузки Lotus iNotes, и приводятся конкретные примеры с применением лучшего в отрасли ADC BIG-IP Local Traffic Manager (LTM) компании F5 Networks.

Мы рассматриваем также создание конфигурации BIG-IP LTM общего назначения, которая может поддержать большинство почтовых систем Lotus iNotes, а затем показываем, как с помощью BIG-IP LTM можно реализовать сервер Lotus Domino и улучшить его производительность.


Конфигурации Lotus Domino для обеспечения высокой доступности

Почтовые файлы Lotus Domino обычно адресуются по имени подкаталога (например, mail) и имени файла (например, juser.nsf). Для выравнивания нагрузки путь к любому почтовому файлу должен быть идентичным в каждом из серверов, на которых имеется копия, и когда почтовый файл поступает в балансировщик нагрузки, его полный путь должен быть уникальным (однозначным).

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

Конфигурация 1. Одиночный зеркальный кластер

Этот первый сценарий конфигурации наименее сложен. Это полностью зеркалируемый набор серверов, объединенных в кластер, в котором находятся все почтовые файлы. Два или три сервера имеют одинаковую структуру каталогов и содержат множество почтовых файлов, и между этими серверами поддерживается кластерная репликация (рисунок 1).

Рисунок 1. Два зеркальных сервера в кластере А
Два зеркальных сервера в кластере А

В этом случае балансировщик нагрузки может передать любой запрос, относящийся к Lotus iNotes, на любой сервер в кластере.

Конфигурация 2. Несколько зеркальных кластеров

Следующий уровень сложности – когда есть несколько почтовых кластеров Lotus Domino, аналогичных приведенным в конфигурации 1, и балансировщик нагрузки должен направлять поступающие запросы в нужный набор внутренних серверов (в том же кластере).

Существует несколько возможных подходов к решению этой задачи.

  • Во-первых, каждый кластер использует уникальный подкаталог, в котором хранятся почтовые файлы, а это означает, что обычные адреса URL содержат сегмент, в котором четко определен кластер (рисунок 2). Во-вторых, правила балансировщика нагрузки изменяются таким образом, чтобы выделять эти имена и связывать их с нужными внутренними серверами.

    Рисунок 2. Два сервера в двух разных кластерах с уникальными именами подкаталога для каждого кластера
    Два сервера в двух разных кластерах с уникальными именами подкаталога для каждого кластера
    Такие жестко закодированные списки уникальных имен подкаталогов и внутренних серверов Lotus Domino каждого кластера должны обновляться при любых изменениях, вносимых в кластеры серверов.
  • При втором подходе приложение редиректора Lotus iNotes настроено на возврат части имени основного почтового сервера Lotus Domain Name System (DNS) в качестве дополнительного сегмента в адресе URL, сгенерированном для почтового файла (непосредственно перед значением пути). Балансировщик нагрузки использует этот дополнительный сегмент для поиска кластеров Lotus Domino и соответствующих серверов.

    Одна из проблем такого подхода заключается в том, что Lotus iNotes может генерировать вторичные адреса URL, в которых имя сегмента уже не содержится. Следовательно, идентификатор кластера должен храниться в куки, чтобы балансировщик нагрузки мог найти это значение при отсутствии сегмента.
  • В третьем сценарии на сервер Lotus Domino добавлен вспомогательный агент балансировщика нагрузки, к которому балансировщик нагрузки обращается для динамической генерации списка серверов Lotus Domino, содержащих копию данного почтового файла (рисунок 3).

    Рисунок 3. Два сервера в разных кластерах
    Два сервера в разных кластерах
    В данном случае нет необходимости жестко кодировать конкретные имена кластеров или IP-адреса серверов Lotus Domino в правилах балансировщика нагрузки.

Конфигурация 3. Несколько незеркальных кластеров

Следующий уровень сложности – это сценарий, в котором кластер Lotus Domino содержит несколько серверов, но не каждый почтовый файл имеется в каждом сервере этого кластера. Файлы пользователей редко распределены по подмножеству серверов внутри кластера.

Это, вероятно, самый сложный сценарий с точки зрения правильного распределения нагрузки, но это широко распространенная конфигурация Lotus Domino. Вот несколько возможных подходов к работе с этой конфигурацией.

  • Каждое уникальное сочетание серверов, на которых находится конкретный почтовый файл, отражается в некотором уникальном имени подкаталога, в котором хранится почтовый файл (рисунок 4). Эта комбинация означает, что обычные URL, по существу, определяют кластер и подмножество серверов в кластере, содержащих почтовый файл.

    Балансировщик нагрузки использует эту информацию для отправки запросов к нужному подмножеству серверов.

    Рисунок 4. Три незеркальных сервера в кластере А
    Три незеркальных сервера в кластере А
  • Кроме того, на сервер Lotus Domino добавлен вспомогательный агент балансировщика нагрузки, к которому балансировщик нагрузки может обращаться для динамической генерации списка серверов Lotus Domino, содержащих копию данного почтового файла (рисунок 5).

    Рисунок 5. Три сервера в кластере А, не отображаемых редиректором
    Три сервера в кластере А, не отображаемых редиректором

Таким образом, как показал наш анализ предыдущих вариантов, наиболее универсальное решение предполагает дополнение сервера Lotus Domino для сообщения информации о том, какие серверы могут использоваться для создания динамических пулов балансировки нагрузки по обработке текущего запроса, без использования специальных имен пути для передачи соответствующей информации.

Теперь рассмотрим подробнее создание такой службы общего назначения для реализации этого решения, которое также требует, чтобы балансировщик нагрузки был в состоянии делать такие динамические запросы и использовать результаты.

LTM BIG-IP от F5 Networks предлагает мощный язык сценариев на основе Tool Command Language (TCL), который можно использовать для создания так называемого iRule. iRule использует простой для освоения синтаксис сценариев, который позволяет LTM BIG-IP настраивать процесс перехвата, проверки, преобразования и адресации входящего или исходящего трафика приложений.

Используя эту методологию, балансировщик нагрузки может направлять движение трафика HTTP к нужному серверу Lotus Domino.


Создание вспомогательной службы для балансировщика нагрузки

Lotus Domino хранит информацию об уникальных файлах NSF внутри конкретного кластера в каталоге базы данных кластера (cldbdir.nsf), однако эта база данных уникальна только в пределах конкретного кластера. База данных каталога разных кластеров в пределах одного и того же домена содержит различную информацию.

Один из способов определить, находится ли уникальный файл NSF в определенном кластере, - это изучение каталога кластера на сервере, в который поступил первоначальный запрос, чтобы определить, найден ли путь. Если да, то все хорошо. Можно получить нужный набор серверов, и домашний сервер пользователя можно разместить в начале возвращаемого списка, чтобы ему отдавалось предпочтение.

Если же путь в каталоге кластера на сервере отсутствует, балансировщику нагрузки придется запрашивать сервер в другом кластере. Чтобы отправить запрос в нужный кластер, выполняется поиск информации в каталоге Lotus Domino names.nsf, чтобы найти набор серверов, расположенных в кластере, где находится почтовый файл текущего пользователя.

Для такого запроса служба ищет почтовый сервер текущего пользователя, а затем исследует ClusterName, куда входит этот сервер. Затем можно просмотреть этот кластер в представлении ($Clusters) для определения серверов, входящих в данный кластер.

Мы создали вспомогательную службу с использованием языка Notes Formula Language и поместили ключевой код в форму ServersLookup шаблона редиректора Lotus iNotes. По запросу балансировщика нагрузки форма ServersLookup возвращает один из двух заголовков ответа HTTP в формате X-Domino-ххххх, каждый из которых содержит список имен серверов, разделенных запятыми.

X-Domino-ReplicaServers возвращается, когда служба находит нужный путь в собственном кластере, а X-Domino-ClusterServers возвращается только в том случае, когда почтовые серверы входят в состав другого кластера.

Форма ServersLookup включена в эту статью (см. Приложение А). В исследовании производительности, которое приведено в следующем разделе, этот вспомогательный агент не используется, исследуется только конфигурация 1.


Анализ производительности

Задача DWA85 запускалась на двух кластерных почтовых серверах Lotus Domino с репликацией между серверами. Мы работали в общей сложности с 4000 одновременных пользователей и 2000 активных пользователей на каждый сервер с 64-разрядной операционной системой Microsoft Windows и 32-разрядной версией Lotus Domino 8.5.1.

Все испытания проводились с 4000 пользователей, определенных в каждом каталоге Lotus Domino на серверах. В начале теста каждый пользователь должен был отправить по почте файл, содержащий примерно 256 МБ несжатых документов, при 3000 сообщений в папке "Входящие".

Тесты проводились с разрешенным ведением журнала транзакций Lotus Domino с параметром Favor Runtime, причем журналирование почты было настроено на локальную регистрацию всех сообщений. Зонды Domino Domain Monitoring (DDM) были включены для обмена сообщениями и серверной операционной системы, и у всех пользователей почтовые правила блокировали почту от 10 пользователей, не участвующих в тесте.

В Lotus Domino 8.5.1 мы включили сжатие документов в почтовых базах данных, что позволило уменьшить их размер примерно с 250 МБ до 170 МБ. Кроме того, в некоторых тестах мы включили свойство базы данных Domino Attachment and Object Store (DAO) после того, как были созданы почтовые базы данных, а также включили DAOS для почтовых ящиков и базы данных журнала регистрации почты.

В первом тесте мы обслужили 4000 виртуальных пользователей NotesBench DWA85 на двух почтовых серверах Lotus Domino через порт SSL без прокси-сервера BIG-IP LTM между клиентами и серверами. В этом тесте на каждом сервере было 2000 активных пользователей DWA.

Во втором тесте мы обслужили 4000 виртуальных пользователей NotesBench DWA85, которые обращались к своим почтовым серверам через прокси-сервер BIG-IP LTM. Для этого теста мы отключили кэширование ответа и компрессию GZIP на почтовых серверах Lotus Domino, используя следующие параметры Notes.ini:

Notes_wa_GZIP_Disable=1
HTTPDisableUrlCache=1

Также в документе Server каталога Lotus Domino был отключен порт SSL HTTP-сервера. В ходе этих тестов кэшированием, компрессией GZIP и шифрованием SSL управлял прокси-сервер BIG-IP LTM.

Спецификации оборудования приведены в таблицах 1-3.

Таблица 1. Конфигурация оборудования для сервера 1
ОборудованиеСпецификации
Модель64-разрядная платформа Intel
Процессоры/тактовая частотаIntel Xeon MP, сконфигурированные как два четырехъядерных процессора /3,67 ГГц
Память8 ГБ
Число активных физических дисков42
Число активных логических томов3
Операционная системаMicrosoft Windows 2003 X64
Версии Lotus Domino Lotus Domino 8.5.1, 32-разрядное приложение
Параметры настройки Notes.ini, используемые, когда BIG-IP LTM выполняет SSL/gzipiNotes_wa_GZIP_Disable=1
HTTPDisableUrlCache=1
Таблица 2. Конфигурация оборудования для сервера 2
ОборудованиеСпецификации
Модель64-разрядная платформа Intel
Процессоры/тактовая частотаIntel Xeon MP, сконфигурированные как два четырехъядерных процессора /3,06 ГГц
Память12 ГБ
Число активных физических дисков42
Число активных логических томов3
Операционная системаMicrosoft Windows 2003 X64
Версии Lotus Domino Lotus Domino 8.5.1, 32-разрядное приложение
Параметры настройки Notes.ini, используемые, когда BIG-IP LTM выполняет SSL/gzipiNotes_wa_GZIP_Disable=1
HTTPDisableUrlCache=1
Таблица 3. Конфигурация оборудования для сервера 3
ОборудованиеСпецификации
Модель6900
Число двухъядерных процессоров 2
Память8 ГБ
Число активных флеш-дисков1х8 ГБ
Число активных жестких дисков2 x 320 ГБ
Операционная система10.1

На рисунке 6 представлена базовая конфигурация.

Рисунок 6. Базовая конфигурация
Базовая конфигурация

Конфигурация теста производительности

Мы использовали два сервера IBM 3850 с двумя процессорами Xeon 3.6 ГГц и 8 ГБ физической памяти, каждый из которых оснащен дисковым массивом Fiber Channel DS4300 с 42 дисками и 64-разрядной версией операционной системы Microsoft Windows 2003 Server Enterprise (рисунок 7). В качестве системы управления нагрузкой NotesBench использовался Linux-сервер, способный обслуживать до 4000 виртуальных пользователей DWA85.

Рисунок 7. Конфигурация теста производительности с BIG-IP LTM 6900
Конфигурация теста производительности с BIG-IP LTM 6900

Параметры настройки

Вот параметры настройки BIG-IP LTM.

  • SNAT: установлен в режим Automap
  • Nagle: отключен
  • SSL: включен
  • Буфер передачи: 262144
  • Окно приема: 262144
  • HTTP-профиль:
    • по умолчанию из http-wan-optimized-compression-caching
    • сжатие: включено;
    • уровень сжатия GZIP: 5;
    • размер кэша ОЗУ: 200 MБ.

Значения параметров настройки Lotus Notes:

  • SSL: отключен;
  • кэширование HTTP: отключено;
  • GZIP: отключен.

Результаты

В таблице 4 приведены основные параметры, измеренные для двух конфигураций.

Таблица 4. Основные результаты
Тест ЭталонBIP-IP LTMПроцент улучшения
Число транзакций в минуту60286044-0.27
Время отклика, с0.3380.08375.44
Загрузка процессора 29.420.928.91
Дисковые операции ввода/вывода, операций/с525530-0.95
Производительность дисков, КБ/с440643082.22

Значениями, демонстрирующими заметную разницу, оказались время обработки индивидуального запроса и уровень загрузки процессора серверов Lotus Domino. Благодаря BIGIP ADC среднее время отклика улучшилось на 75% (рисунок 8).

Другими словами, время реакции через устройство в 4 раза короче, чем при непосредственной подаче запросов на сервер Lotus Domino. Одна из причин заключается в том, что ADC поддерживает постоянное соединение с сервером Lotus Domino и может эффективнее использовать эти каналы для последующих запросов.

Кроме того, уровень загрузки процессора серверов Lotus Domino оказался на 28% ниже, чем без использования ADC; более низкие уровни загрузки процессора позволяют серверу Lotus Domino обслуживать большее число пользователей одновременно.

Рисунок 8. Относительное улучшение производительности
Относительное улучшение производительности

ПРИМЕЧАНИЕ. Мы попытались также измерить время ответа клиента при моделировании низкой скорости соединения для некоторых ключевых взаимодействий с почтовым клиентом. Когда основным ограничивающим фактором была пропускная способность, мы не замечали никаких значительных улучшений при выполнении измеряемых основных операций пользователя.


Заключение

Достижение высокого уровня доступности Lotus iNotes требует использования программного обеспечения выравнивания нагрузки или оборудования ADC в сочетании с кластеризацией Lotus Domino, - топологией, которая предусматривает зеркальные конфигурации и разреженные кластеры.

Полностью зеркалируемые кластеры поддерживать относительно легко, однако правильно использовать разреженные кластеры гораздо сложнее. Мы представили также некоторую новую логику со стороны сервера, которая помогает при топологии с разреженными кластерами.

Такие кластеры лучше работают, равномерно распределяя нагрузку между оставшимися серверами кластера, когда один из серверов выходит из строя, так что не нужно иметь реплику почтового файла на каждом сервере кластера для каждого пользователя в пределах кластера.

Измерение производительности показало значительную экономию ресурсов процессора на серверах Lotus Domino при использовании ADC. Более того, испытания подтвердили значительное улучшение времени отклика для различных запросов, что может улучшить время реакции системы для пользователей, когда они подключены через канал с разумной пропускной способностью.

Для организаций, стремящихся внедрить более Web-ориентированные решения, инвестиции в программное обеспечение балансировки нагрузки или оборудование ADC могут значительно улучшить время обслуживания пользователей и уменьшить нагрузку на процессоры почтовых серверов Lotus Domino.


Приложение А. Форма ServersLookup

Форма ServersLookup имеет одно отображаемое (Computed for display) поле $$HtmlHead с текстового типа. Это поле содержит следующие формулы. Добавлены операторы отладки, чтобы в том случае, если форма открывается вручную из браузера, были видны результаты расчета формул.

Чтобы открыть форму вручную, выполните следующий запрос:

http://mail.acme.ibm.com/iwaredir.nsf/ServersLookup?OpenForm&nsfpath=mail\jsmith.nsf

tmpDebug := "";
tmpNSFPath := @ReplaceSubstring(@URLDecode
( "Domino"; @UrlQueryString("nsfpath") );"/";"\\");
tmpServers := @DbLookup( "":"" ; "":"cldbdir.nsf" ; "($Pathname)" ; 
tmpNSFPath; "CanonicalServername");
tmpServers:=@If(@IsError(tmpServers);"";tmpServers);
REM {Lookup home mail server };
tmpHomeServer:=@Name([Canonicalize];@NameLookup( [NoUpdate];
@UserName; "MailServer" ));
REM {Is Home Mail server in list of servers, then move this up to 
the front of the list};
tmpServers := @If(@IsMember(tmpHomeServer;tmpServers); 
tmpHomeServer : @Transform(tmpServers;"x";@If(x=tmpHomeServer;@Nothing;x))
;tmpServers);
tmpDebug := tmpDebug + "ReplicaServers:" + @Implode(tmpServers;",");
tmpDNSNames := "";
tmpClusterName := "";
tmpClusterServers := "";
REM {If no servers found, then db is in a different cluster, return list of cluster 
servers, with home server in front of list};
tmpServers := @If(tmpServers="" | @Elements(tmpServers)=0;
  @Do(
    tmpDebug := tmpDebug + "Looking for cluster servers;";
    tmpClusterName := @Subset(@DbLookup("":""; "":"names.nsf"; "($ServersLookup)"; 
    tmpHomeServer; "ClusterName"); 1);
    tmpClusterServers := @DbLookup( "":""; "":"names.nsf"; "($Clusters)"; 
    tmpClusterName; "$0");
  tmpClusterServers := @Transform(tmpClusterServers;"x";
@If(x=tmpHomeServer;@Nothing;@Name([Canonicalize];x)));
    tmpClusterServers := @If(@IsMember(tmpHomeServer;tmpClusterServers); 
    tmpHomeServer : @Transform(tmpClusterServers;"x";
@If(x=tmpHomeServer;@Nothing;x));tmpClusterServers);
    tmpClusterServers);
  tmpServers);
tmpLimit:=@Elements(tmpServers)+1;
@For(n:=1;
n<tmpLimit;
n:=n+1;
tmpHTTPHostNameALT:=@Subset(@DbLookup( "":"" ; "":"names.nsf" ; 
"($ServersLookup)" ; tmpServers[n] ; "HTTP_Hostname");1);
tmpServerFQDN:=@Subset(@DbLookup( "":"" ; "":"names.nsf" ; "($ServersLookup)" ; 
tmpServers[n] ; "SMTPFullHostDomain");1);
tmpString:=tmpString+@Text(n)+tmpHTTPHostNameAlt+tmpServerFQDN;
tmpDNSNames := @If(@Length(tmpDNSNames)>0;tmpDNSNames+",";"") + 
@LowerCase(@If (tmpHTTPHostNameALT!="";tmpHTTPHostNameALT;tmpServerFQDN))
);
@If(tmpClusterName="";@SetHTTPHeader("X-Domino-ReplicaServers";tmpDNSNames);
@SetHTTPHeader("X-Domino-ClusterServers";tmpDNSNames));
@SetHTTPHeader("Cache-control";"no-store");
@If(tmpDebug="";"";"<script>"+tmpDebug+"</script>")

Приложение В. Пример iRule

Этот iRule выполняет поиск серверов, помогая находить почтовые файлы пользователей в пределах домена. DominoServers – это пул серверов, который мы используем в своем примере на устройстве Big IP.

    ######
when CLIENT_ACCEPTED {
	#Установка статуса – 'needs server' 1 или 0.
	log local0. "got initial connect – needs a lookup."
	set needs_server 0
}

when HTTP_REQUEST {
#Ввод первоначального запроса - предназначен для реального сервера.
if { ([HTTP::uri]ends_with ".nsf") and not ([HTTP::uri] contains "names.nsf")}{
    set original_request [HTTP::request]
    set needs_server 1
    set nsf "[substr [HTTP::uri] 1 ".nsf"].nsf"
    HTTP::uri/iwaredir.nsf/ServersLookup?OpenForm&nsfpath=$nsf

   } else {
    set needs_server 0
}

#проверка, нужен ли сервер. Если нет, отправляет в наш dest. pool
  if { $needs_server == 1 } {
    #dummyServer - это наш сервер ?отображения? для обработки запросов. 
    #Он возвращает заголовок и его значения.
      pool DominoServers
      } else {
      pool DominoServers
  }
}
when HTTP_RESPONSE {

  if { $needs_server == 1 } {
    set server_list [split [HTTP::headerX-Domino-ClusterServers], ,]
    HTTP::collect[HTTP::headerContent-Length]
    }
}

when HTTP_RESPONSE_DATA {
  foreach {svr} $server_list {
    if { "" ne $svr }{
      set dest [findclass [string trim $svr] ::NSREPLICASERVERS " "]
      log local0. "Servername is [string trim $svr]"
      log local0. "$dest"
      #TEST.ONE.TWO.COM 10.100.100.80:8080
      #set node_addr [getfield [findclass $svr domino-servers " "] ":" 1]
      #set node_port [getfield [findclass $svr domino-servers " "] ":" 2]

      log local0. "server is: $node_addr on $node_port...issuing HTTP::collect"
    if { [LB::status pool DominoServers member $dest 80 ] eq "up" } {
      log local0. "Selecting $node_addr:$node_port"
      pool IrisServers member $dest
      HTTP::retry$original_request
      break

    }
  }
}
  set needs_server 0
}
####

Ресурсы

Комментарии

developerWorks: Войти

Обязательные поля отмечены звездочкой (*).


Нужен IBM ID?
Забыли Ваш IBM ID?


Забыли Ваш пароль?
Изменить пароль

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Профиль создается, когда вы в первый раз заходите в developerWorks. Выберите данные в своем профиле (имя, страна/регион, компания) которые будут общедоступными и будут отображаться, когда вы публикуете какую-либо информацию. Вы можете изменить данные вашего ИБМ аккаунта в любое время.

Вся введенная информация защищена.

Выберите имя, которое будет отображаться на экране



При первом входе в developerWorks для Вас будет создан профиль и Вам нужно будет выбрать Отображаемое имя. Оно будет выводиться рядом с контентом, опубликованным Вами в developerWorks.

Отображаемое имя должно иметь длину от 3 символов до 31 символа. Ваше Имя в системе должно быть уникальным. В качестве имени по соображениям приватности нельзя использовать контактный e-mail.

Обязательные поля отмечены звездочкой (*).

(Отображаемое имя должно иметь длину от 3 символов до 31 символа.)

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Вся введенная информация защищена.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=40
Zone=Lotus
ArticleID=592151
ArticleTitle=Достижение высокого уровня доступности IBM Lotus iNotes
publish-date=11292010