Статьи

Создание простого кластера с помощью GlassFish

В этой статье я рассмотрю первые шаги по установке Glassfish и кластеризации с Apache для запросов прокси. Все это будет настроено с использованием одного CentOS и одного экземпляра Fedora, но эти шаги должны совсем не требовать настройки для других платформ Linux.

Установка Glassfish

Чтобы получить последнюю и самую лучшую версию Glassfish, просто зайдите на glassfish.java.net и нажмите зеленую кнопку в форме стрелки, которая помечена как «Последняя и лучшая загрузка». На момент написания статьи это 3.1.2.2 (хотя версия 4.0 на основе Java EE 7 неизбежна), и нажатие на стрелку загрузит ZIP-дистрибутив. Извлеките в папку по вашему выбору, и все готово! Осталось только настроить.

Прежде чем мы доберемся туда, нам нужно убедиться, что Apache и SSH-сервер доступны. Apache — это то, что мы используем для прокси-запросов к кластеру, а SSH необходим, потому что Glassfish взаимодействует по всему SSH.

На моих Fedora и CentOS настроить Apache и запустить его так же просто, как «yum install httpd», и openSSH уже установлен. После запуска служб (запуск службы sshd) я убедился, что они могут общаться друг с другом с помощью терминала. Если у вас возникли проблемы на этом этапе, убедитесь, что у вас нет ограничений брандмауэра или (если ваш дистрибутив Linux основан на RHEL), что SELinux не блокирует связь.

Создать домен

Glassfish настраивается с помощью инструмента командной строки asadmin (asadmin.bat для Windows), который находится в каталоге bin, поэтому для меня это был /opt/glassfish/glassfish-3.1.2.2/bin.

Для целей разработки и тестирования glassfish поставляется с уже доступным доменом по умолчанию, который можно запустить с помощью команды  asadmin start-domain domain1 . Как только домен запущен, нам нужно включить безопасное администрирование, чтобы обеспечить связь по SSH. Без этого мы не сможем создать кластер на двух разных машинах! Безопасный администратор требует, чтобы учетная запись администратора была установлена ​​с паролем. Учетная запись администратора по умолчанию — просто «admin» без пароля, поэтому, поскольку это всего лишь тест, я также установил пароль для admin.

Вот все команды, которые я использовал:

asadmin start-domain domain1

asadmin change-admin-password

asadmin enable-secure-admin

asadmin restart-domain domain1

Кроме того, вы можете создать новый домен, используя  asadmin create-domain . Создание нового домена с помощью этой команды дает вам довольно большой контроль над конфигурацией домена в момент создания. Документация дает очень хороший обзор доступных команд , но есть пара, которую я хотел бы выделить:

create-domain [--help]

[--adminport adminport]

[--instanceport instanceport]

[--portbase portbase]

[--profile profile-name]

[--template template-name]

[--domaindir domaindir]

[--savemasterpassword={false|true}]

[--usemasterpassword={false|true}]

[--domainproperties (name=value)[:name=value]*]

[--keytooloptions (name=value)[:name=value]*]

[--savelogin={false|true}]

[--checkports={true|false}]

[--nopassword={false|true}]

domain-name

Опции —portbase и —checkports очень удобны, чтобы избежать конфликтов портов с чем-либо, что вы, возможно, установили. База портов — это просто номер порта, от которого смещены другие порты, например, порт администратора будет [portbase] + 48. Включение базы портов в ваш оператор create означает, что вы не можете явно указать другие порты при создании домен, так как они будут переопределены.

«Checkports» делает то, что говорит на банке, и проверяет доступность портов администрирования, HTTP, JMS, JMX и IIOP. Это очень удобно, поэтому значение по умолчанию — true.

Общаться между экземплярами

Пока что все, что мы сделали, это сконфигурировали одну машину, чтобы иметь домен Glassfish. Прежде чем приступить к настройке второго, на нашей машине администратора нужно выполнить еще два шага. Откройте консоль администратора по адресу localhost: 4848, выберите «Кластеры» и создайте новую; мой был назван c2b2Cluster. Как только он будет создан, щелкните кластер, который вы только что создали, перейдите на вкладку «Экземпляры» и создайте новый экземпляр сервера; мой был назван c2b2Srv1. Теперь у нас есть кластер с экземпляром, мы можем запустить кластер на вкладке «Общие» кластера.

Это та часть, где правильная настройка SSH становится необходимой! На втором компьютере убедитесь, что Glassfish установлен, и создайте другой сервер следующим образом:

asadmin --host <machine1> --port <admin port> create-local-instance --cluster c2b2Cluster c2b2Srv2

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

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

Если бы вы использовали консоль администратора для запуска нового сервера сейчас, вы обнаружите, что он не запустится. Сначала нам нужно настроить новый узел. Выберите новый узел в «Узлах» и убедитесь, что для «Типа» установлено значение SSH, Узел узла является либо правильным IP-адресом, либо URL-адресом, а параметры аутентификации верны. Аутентификация пользователя SSH выполняется по умолчанию через файл ключа, но при желании ее можно изменить на аутентификацию на основе пароля.

Опять же, если вы обнаружите, что у вас все еще есть проблемы со связью, проверьте брандмауэр, SELinux и другие параметры безопасности.

апаш

Чтобы настроить Apache для прокси-запросов к кластеру, я решил использовать mod_proxy, поскольку он уже установлен и доступен при базовой установке Apache. Для большего количества вариантов конфигурации и лучшей высокой доступности вы, вероятно, должны рассмотреть mod_jk.

Убедитесь, что строка « LoadModule proxy_module modules / mod_proxy.so » существует и не закомментирована в файле httpd.conf. Тогда это просто вопрос включения следующих двух строк:

ProxyPass            /      http://host_name:0000

ProxyPassReverse     /      http://host_name:0000

Это все, что вам нужно сделать с Apache! Последний шаг — убедиться, что Glassfish прослушивает любой порт, который вы указали. Вы можете создать новый слушатель jk или изменить существующий прослушиватель http. Следующая команда создаст новый прослушиватель с именем jk-connector для прослушивания порта 8009:

asadmin create-network-listener --listenerport 8009 --protocol http-listener-1 --jkenabled true jk-connector

Кроме того, вы можете сделать то же самое через консоль. Я проверил свое соединение, изменив приемник администратора на порту 4848, чтобы посмотреть, будет ли Apache перенаправлять меня на консоль администратора Glassfish. Чтобы сделать то же самое, откройте консоль и перейдите к: 

Конфигурации -> server-config -> Netword Config -> Network Listeners -> admin-listener

Включите переключатель JK Listener и обязательно сохраните.

Однажды пройдя этот процесс, вы увидите, как легко и просто кластеризоваться с помощью Glassfish. Это простые концепции, выполненные просто. Наличие всего одного инструмента для выполнения всей работы по настройке, а не редактирование многих файлов свойств делает жизнь намного проще!