Балансировка нагрузки PAS for OpenEdge на основе Tomcat Load Balancing
Проверка работы балансировки нагрузки
Для проверки работоспособности конфигурации воспользуемся двумя тестовыми программами, написанными на языке ABL.
Создайте файл с именем testserver.p и сохраните в нём следующий код:
DEFINE OUTPUT PARAMETER cHostName AS CHARACTER NO-UNDO. INPUT THROUGH 'hostname'. REPEAT: IMPORT UNFORMATTED cHostname. END. INPUT CLOSE.
Программа testserver.p – это серверная часть, которая будет работать на серверах приложений node1 и node2. Скомпилируйте этот файл, чтобы получить r-код testserver.r. и поместите его в каталог openedge экземпляров node1 и node2.
Лицензия Progress Production Application Server for OpenEdge позволяет исполнять только скомпилированный код.
Создайте файл с именем testclient.p и сохраните в него следующий код:
DEFINE VARIABLE AppHandle AS HANDLE. DEFINE VARIABLE cHostName AS CHARACTER. DEFINE VARIABLE ret AS LOGICAL. DEFINE VARIABLE pasHost AS CHARACTER INIT "172.16.95.146" NO-UNDO. DEFINE VARIABLE pasPort AS CHARACTER INIT "80" NO-UNDO. CREATE SERVER AppHandle. ret = AppHandle:CONNECT("-URL http://" + pasHost + ":" + pasPort + "/apsv"). IF ret THEN RUN testserver.p ON AppHandle(OUTPUT cHostName). MESSAGE cHostName VIEW-AS ALERT-BOX INFORMATION BUTTONS OK. QUIT.
В этой программе в переменной pasHost необходимо указать имя хоста или IP-адрес веб-сервера Apache HTTP, в нашем случае это 172.16.95.146. В переменной pasPort необходимо указать номер порта, по которому осуществляется доступ к веб-серверу, в нашем случае это стандартный 80 порт.
Выполните программу testclient.p несколько раз последовательно:
mpro -p testclient.p
В результате при каждом выполнении на экран должно выводиться разное имя хоста в зависимости от того, к какому экземпляру вас подключил Tomcat load balancing:
┌──── Information ─────┐ │ node2 │ │ ──────────────────── │ │ <OK> │ └──────────────────────┘ ┌──── Information ─────┐ │ node1 │ │ ──────────────────── │ │ <OK> │ └──────────────────────┘
Если ваша реализации балансировки нагрузки не работает, то в первую очередь просмотрите журналы веб-сервера Apache HTTP (обычно в каталоге /var/log/httpd), журнал модуля mod_jk (mod_jk.log, определяется параметром JkLogFile в httpd.conf), а также журналы каждого экземпляра PAS for OpenEdge, которые находятся в каталоге instance_name/logs.
И в завершение немного о сервере базы данных, который представлен в нашей конфигурации на рисунке в начале статьи.
Для того, чтобы наши рабочие экземпляры node1 и node2 могли подключиться к базе данных sports2000, необходимо указать им параметры подключения в конфигурационном файле instance_name/conf/openedge.properties.
Сделать это можно вручную путём редактирования параметра agentStartupParam в секции [AppServer.SessMgr]. Параметр использует многосессионный менеджер при старте агентов. Параметр может быть изменён онлайн во время работы экземпляра, но это изменение воздействует только на новых агентов, которые будут стартованы после изменения значения.
Пример секции [AppServer.SessMgr] с указанием параметров подключения к базе данных:
[AppServer.SessMgr] agentStartupParam=-db sports2000 -H 172.16.95.143 -S 20333
Изменить значение параметра agentStartupParam можно с помощью скрипта oeprop. Для этого в каталоге bin экземпляра необходимо выполнить следующую команду:
oeprop.sh AppServer.SessMgr.agentStartupParam=db_connection_param
Пример команды для наших рабочих экземпляров:
oeprop.sh AppServer.SessMgr.agentStartupParam= "-db sports2000 -H 172.16.95.143 -S 20333"
Для проверки подключения измените код программы testserver.p следующим образом:
DEFINE OUTPUT PARAMETER vCustName AS CHARACTER NO-UNDO. DEFINE VARIABLE cHostName AS CHARACTER NO-UNDO. INPUT THROUGH 'hostname'. REPEAT: IMPORT UNFORMATTED cHostname. END. INPUT CLOSE. FOR FIRST Customer NO-LOCK. vCustName = Customer.Name + ' on ' + cHostname. END.
Скомпилируйте программу testserver.p и скопируйте r-код в каталог instance_name/openedge. Теперь, в результате выполнения программы testclient.p на экран будет выводиться имя первого клиента из таблицы Customer базы данных sports2000.
┌──── Information ─────┐ │ Lift Tours on node1 │ │ ──────────────────── │ │ <OK> │ └──────────────────────┘
На этом у меня всё.
Надеюсь, что эта статья будет полезной в качестве старта в изучении и настройке балансировки нагрузки нового сервера приложений Progress Application Server for OpenEdge.
Версия для печати в формате PDF. |
Есть вопрос? Спросите...
Для отправки комментария вам необходимо авторизоваться.
1 Комментарий
Валерий, спасибо.
Очень интересно и полезно.