Балансировка нагрузки PAS for OpenEdge на основе Tomcat Load Balancing
Назначение балансировщика нагрузки
Для назначения экземпляра PAS for OpenEdge в качестве балансировщика нагрузки мы должны назвать этот экземпляр lb. Кроме того, необходимо убедиться, что на этом экземпляре не развёрнуты какие-либо приложения. В каждом экземпляре PAS for OpenEdge в каталоге ROOT разворачиваются ABL-приложения по умолчанию. Мы должны выгрузить эти приложения.
Экземпляр PAS for OpenEdge выступающий в роли балансировщика нагрузки (lb), а также экземпляр, отвечающей за отслеживание состояния рабочих экземпляров (status), в нашем примере размещаются на отдельной виртуальной машине с IP-адресом 172.16.95.147 и именем localhost.
В первую очередь изменим имя хоста на lb:
hostnamectl set-hostname lb systemctl restart systemd-hostnamed
Создание экземпляра lb
В каталоге $WRKDIR создадим экземпляр PAS for OpenEdge с именем lb:
- Откроем proenv.
- Выполним команду:
$DLC/servers/pasoe/bin/tcman.sh create -p 8520 -P 8521 -s 8522 $WRKDIR/lb
- Перейдём в каталог bin экземпляра lb:
cd $WRKDIR/lb/bin
- Активируем протокол AJP13:
tcman.sh feature AJP13=on
- Назначим новый порт AJP13:
tcman.sh config psc.as.ajp13.port=8019
- Выгрузим приложение ROOT:
tcman.sh undeploy ROOT
- Откроем порт 8019 (AJP13) в firewall:
firewall-cmd --permanent --add-port=8019/tcp
- Перезагрузим firewall для применения изменений:
firewall-cmd –reload
- Выполним старт экземпляра:
tcman.sh start
Создание экземпляра status
Вы можете дополнительно настроить сборщика метрик, если есть необходимость в мониторинге статусов рабочих экземпляров. Этот экземпляр создаётся по такому же принципу, что и экземпляр lb, но с именем status и обязательно с другими номерами портов:
- В proenv выполним команду:
$DLC/servers/pasoe/bin/tcman.sh create -p 8620 -P 8621 -s 8622 $WRKDIR/status
- Перейдём в каталог bin экземпляра status:
cd $WRKDIR/status/bin
- Активируем протокол AJP13:
tcman.sh feature AJP13=on
- Назначим новый порт AJP13:
tcman.sh config psc.as.ajp13.port=8029
- Выгрузим приложение ROOT:
tcman.sh undeploy ROOT
- Откроем порт 8029 (AJP13) в firewall:
firewall-cmd --permanent --add-port=8029/tcp
- Перезагрузим firewall для применения изменений:
firewall-cmd --reload
- Выполним старт экземпляра:
tcman.sh start
Создание и размещение файла worker.properties
Файл workers.properties определяет экземпляр балансировщика нагрузки, экземпляр сборщика метрик и рабочие экземпляры, обрабатывающие клиентские запросы. Следующая процедура описывает действия для создания этого файла:
- Создать предварительный файл workers.properties путём выполнения команды tcman workers в каталоге bin каждого экземпляра PAS for OpenEdge, включая балансировщик нагрузки (lb), сборщик метрик (status) и рабочие экземпляры. Поскольку в идеальном случае экземпляры работают на отдельных серверах, то вы должны выполнить эту команду на каждом таком сервере.
- Объединить все созданные файлы workers.properties в единый файл worker.properties, при этом удалив повторяющиеся строки.
- Закомментировать в файле строку workers.common.host.
- Добавить в описание каждого экземпляра строку
workers.instance_name.host=host_name. - Сохранить изменения.
- Поместить итоговый файл workers.properties в каталог conf сервера Apache HTTP.
Выполним эти действия для нашего примера.
Для экземпляра node1:
- Подключимся к виртуальной машине node1.
- Откроем proenv.
- Перейдём в каталог bin экземпляра node1:
cd node1/bin
- Выполним команду генерации файла workers.properties:
tcman.sh workers
Файл workers.properties будет создан в каталоге /usr/wrk/node1/temp.
Для экземпляра node2:
- Подключимся к виртуальной машине node2.
- Откроем proenv.
- Перейдём в каталог bin экземпляра node2:
cd node2/bin
- Выполним команду генерации файла workers.properties:
tcman.sh workers
Файл workers.properties будет создан в каталоге /usr/wrk/node2/temp.
Для экземпляров lb и status:
- Подключимся к виртуальной машине lb.
- Откроем proenv.
- Поскольку на сервере lb у нас размещено сразу два экземпляра (lb и status), то нам достаточно сформировать файл workers.properties только один раз. Для этого переходим в каталог корневого PAS:
cd $DLC/servers/pasoe/bin
- Выполним команду генерации файла workers.properties:
tcman.sh workers
Файл workers.properties будет создан в каталоге /usr/dlc/servers/pasoe/temp
Объединяем созданные файлы workers.properties путём copy/paste, при этом удаляем дублирующийся строки. У нас должен получиться файл со следующим содержимым (для экономии пространства из файла были удалены закомментированные строки):
worker.list=jkstatus,jklb worker.common.type=ajp13 worker.common.host=lb worker.common.socket_timeout=10 worker.common.connect_timeout=10000 worker.common.socket_keepalive=true worker.common.ping_mode=I worker.common.ping_timeout=10000 worker.common.retry_interval=100 worker.common.recovery_options=7 worker.jklb.type=lb worker.jklb.port=8029 worker.jklb.balance_workers=jkstatus worker.jklb.sticky_session=True worker.jklb.sticky_session_force=True worker.jklb.method=Request worker.jkstatus.type=status worker.jkstatus.read_only=False worker.node1.port=50001 worker.node1.reference=worker.common worker.node2.port=50001 worker.node2.reference=worker.common
Теперь скорректируем объединённый файл.
В первую очередь обратите внимание на строку worker.list. Здесь должны быть указаны имена всех экземпляров, участвующих в балансировке нагрузки. Изменим её:
worker.list=status,lb,node1,node2
Затем закомментируем строку worker.common.host.
Далее обратите внимание, что названия экземпляров lb и status были сгенерированы как jklb и jkstatus. Заменим их на lb и status:
worker.lb.type=lb worker.lb.port=8029 worker.lb.balance_workers=jkstatus worker.lb.sticky_session=True worker.lb.sticky_session_force=True worker.lb.method=Request worker.status.type=status worker.status.read_only=False
Теперь добавим к свойствам каждого экземпляра имя хоста или IP-адрес, на котором они работают. В нашем случае это:
worker.lb.host=172.16.95.147 worker.status.host=172.16.95.147 worker.node1.host=172.16.95.148 worker.node2.host=172.16.95.149
И в завершение прописываем рабочие экземпляры в свойстве worker.lb.balance_workers:
worker.lb.balance_workers=node1,node2
Таким образом итоговый файл workers.properties должен выглядеть так:
worker.list=status,lb,node1,node2 worker.common.type=ajp13 #worker.common.host=lb worker.common.socket_timeout=10 worker.common.connect_timeout=10000 worker.common.socket_keepalive=true worker.common.ping_mode=I worker.common.ping_timeout=10000 worker.common.retry_interval=100 worker.common.recovery_options=7 worker.lb.type=lb worker.lb.port=8029 worker.lb.balance_workers=node1,node2 worker.lb.sticky_session=True worker.lb.sticky_session_force=True worker.lb.method=Request worker.lb.host=172.16.95.147 worker.status.type=status worker.status.read_only=False worker.status.host=172.16.95.147 worker.node1.port=50001 worker.node1.reference=worker.common worker.node1.host=172.16.95.148 worker.node2.port=50001 worker.node2.reference=worker.common worker.node2.host=172.16.95.149
Сохраняем изменения и помещаем итоговый файл workers.properties в каталог /etc/httpd/conf на сервере Apache.
Выполняем старт веб-сервера Apache HTTP:
systemctl start httpd
Продолжение на следующей странице…
Есть вопрос? Спросите...
Для отправки комментария вам необходимо авторизоваться.
1 Комментарий
Валерий, спасибо.
Очень интересно и полезно.