Балансировщик MetaDimension

В некоторых типографиях возможна такая ситуация: две Меты (или несколько Мет), и большое количество тяжёлых спусков, которые нужно отриповать одновременно. Например, вечером препрессы из принятых за день макетов садятся формировать сборники — и привет. MetaDimension, конечно, хороший RIP, но даже на мощных серверах с SSD и серьёзным количеством памяти просаживается и скорость работы падает. Одновременно может риповаться только 4 работы, остальные будут находиться в состоянии ожидания.

В такой ситуации препрессам приходится вручную отслеживать количество рипующихся заданий на каждой Мете и выбирать наименее загруженный RIP. Где меньше заданий крутится — на тот и засылать спуск (т.к. спуски примерно одинаковы по сложности и рипуются, в среднем, примерно одинаковое количество времени).

Как вы понимаете, на слово «вручную» у меня стойка. Автоматизировать и немедленно! 🙂

Теория такова: каждая Мета ставится вместе с веб-сервером Apache Tomcat. Одна из его функций — предоставлять пользователю веб-интерфейс к MetaDimension Printmanager. Кроме того, Tomcat умеет выполнять скрипты, написанные на JSP (Java Server Pages), которые хранятся в папке C:\Program Files (x86)\Heidelberg\MetaDimension\HTTPServer\tomcat\webapps\printservice\jsp. Значит, можно запросить у него количество рипующихся на данный момент заданий и скинуть спуск на наименее загруженный RIP.

А вот практика:

<jsp:useBean id="table" scope="page" class="com.heidelberg.deltadirect.webui.job.JSPJobTable" />
<% com.heidelberg.deltadirect.webui.user.WebUserData userdata=table.getUserInfo(request); %>
<%= table.getRunningRowCount() %>

Если этот код сохранить под именем, например, jobsamount.jsp в папку скриптов Tomcat, такой запрос в браузере будет выдавать количество обрабатываемых в данный момент заданий:
http://127.0.0.1:8080/printservice/jsp/jobsamount.jsp (только замените 127.0.0.1 на IP-адрес сервера с MetaDimension)

Теперь — дело техники: опросить все Меты, сравнить загрузку и отправить файл куда нужно. Для этого я написал небольшой скрипт на Perl, который нужно будет поставить в автозагрузку. Настройка скрипта элементарная, всё, что нужно — просто вписать свои параметры в переменные $rip1, $rip2, $roothotfolder и @hotfolders. В первые две переменные вписываются IP-адреса серверов с Метами, в roothotfolder — путь к папке с хотфолдерами для разных метовских OutputPlan’ов. Обратите внимание, эта папка — не метовские хотфолдеры! Это хотфолдеры скрипта, их нужно создать отдельно (и расшарить, чтобы препрессы в них кидались PDF’ками). Но они должны называться так же, как хотфолдеры на Мете. Для работы скрипту будет нужен интерпретатор Perl. В случае ActivePerl все нужные модули уже будут установлены.

Скрипт хитрый, будет посылать задания с одним и тем же номером на один и тот же RIP, несмотря на его загрузку. Это сделано для того, чтобы PDF’ки на лицо и оборот сборника риповались на одном RIP’е (иначе препрессам неудобно отслеживать). Имена PDF’ок для этого должны содержать номер задания: например, 29033-a.pdf и 29033-b.pdf, 18-2124_reebok_catalog.pdf.

Если что-то непонятно — пишите, спрашивайте, комментируйте. Скрипт писался для двух рипов, для бо́льшего количества потребуется небольшая модификация. Сейчас я бы его написал, конечно, совсем по-другому и на другом языке. 🙂

Добавить комментарий