вторник, 19 апреля 2011 г.

Запуск и остановка серверов c помощью NodeManager Update 03.06.2011

В качестве best practices управления weblogic-доменами предлагается использовать NodeManager.
NodeManager запускается один на хост и может обслуживать несколько managed-серверов, принадлежащих одному или нескольким доменам.
Benefits от использования:
1. Возможность управления  managed-серверами через админскую консоль.
2. Возможность автоматического выключения\рестарта серверов в случае ошибки.
3. Автоматический запуск управляемых серверов.
4. Возможность восстановления состояния серверов до состояния, предшествующего "неожиданному выключению" (это значит, что если ваш сервер перед сбоем находился в состоянии standby, он запустится в standby, а не running)
5. Удобная настройка новых серверов на удалённых машинах.
6. Миграция серверов.



Настройка запуска AdminServer через NodeManager.
В домене, который был развёрнут таким образом, admin-сервер уже располагается на машине AdminMashine и его уже можно конфигурировать для запуска с помощью NodeManager. Для переноса существующего admin-сервера можно воспользоваться, например, советом James Bayer.

Настройка NodeManager:
1. Стартуем NodeManager из скрипта:
${MW_HOME}/wlserver_10.3/server/bin/setWLSEnv.sh
${MW_HOME}/wlserver_10.3/server/bin/startNodeManager.sh
После старта в каталоге ${MW_HOME}/wlserver_10.3/common/nodemanager создаются файлы:
  • nodemanager.domains - файл со списком доменов
  • nodemanager.properties - конфигурационный файл NodeManager
  • nm_data.properties - симметричный ключ
2. Редактируем файл nodemanager.properties в текстовом редакторе:
ListenAddress=srv1.site
ListenPort=5556
Адрес и порт на котором NodeManager будет слушать.
В файле /etc/hosts должны быть соответствующие записи
127.0.0.1               localhost.localdomain localhost
10.0.0.128              srv1.site srv1
QuitEnabled=true
Разрешить выключение NM из консоли WLST
SecureListener=false
Отключить SSL и оставить авторизацию на основе логина\пароля. Это избавит от кучи warning-ов в консоли из-за использования тестового сертификата. Как настроить хранилище сертификатов я напишу потом.
Остальные переменные можно оставить как есть.
3. При разворачивании домена из шаблона генерируются новые логин и пароль для nodemanager. Их можно сменить через web-консоль. Надо заметить, что это не единстенный способ поменять логин с паролем, но зато наглядный.
Запускаем AdminServer
{$DOMAIN_HOME}/startWeblogic.sh
На странице Security домена, раскрываем advansed


И меняем логин и пароль NodeManager на что-нибудь подходящее.

4. Запущенный через скрипт startWeblogic, сервер использует переменные окружения и переменные, заданные в самом скрипте.

При запуске через Nodemanager их нужно задавать отдельно. Можно сделать это через страницу ServerStart. Какие именно значения задать можно посмотреть по той же ссылке. У меня они выглядят так:
5. Настройка машины. Указываем, на каком порту и адресе искать NodeManager и его тип. Установленное во втором пункте значение SecureListener=false соответствует типу Plain
6. Настраиваем запуск admin-сервера без ввода пароля. Cоздаём файл, если он ещё не создан.
${DOMAIN_HOME}/servers/AdminServer/security/boot.properties
вот такого содержания

username=логин администратора домена
password=пароль администратора домена
При следующем запуске сервера пароли хэшируются и в открытом виде не хранятся.
7. Cоздаём файл, если он ещё не создан.
${DOMAIN_HOME}/config/nodemanager/nm_password.properties
И вписываем в него логин и пароль для NodeManager-a
username=логин_Nodemanager
password=Пароль_Nodemanager
Файл нужен для аутентификации соединения между клиентом (например, AdminServer-ом) и NodeManager-ом.
Этот пункт опционален. В одном из следующих шагов будет выплнена команда nmEnroll, и после её выполнения этот файл оздатся автоматически. Почему-то у моих коллег это происходит не всегда. Сам я этот баг не встречал.
8. Завершаем процесс NodeManager.


После выполнения этих действий мы имеем следующую конфигурацию:
Сконфигурированный для запуска на 5556-ом порту NodeManager, использующий нешифрованое соединение. Авторизация в NodeManager проходит с использованием только логина/пароля.
Сконфигурированный AdminServer, хранящий логин\пароль для запуска в шифрованном файле и настроенный на запуск из Nodemanager-a.

Теперь можно запустить NodeManager через WLST и остановить\запустить AdminServer

1. Запускаем консоль WLST:
${MW_HOME}/wlserver_10.3/server/bin/setWLSEnv.sh
$ java weblogic.WLST 
2. соединяемся с Админ-сервером
connect('login','password','t3://localhost:7001')
3.  Получаем данные для авторизации в NodeManager от админ-сервера.
nmEnroll('${DOMAIN_HOME}','${MW_HOME}/wlserver_10.3/common/nodemanager')
 и отсоединяемся от админ-сервера
disconnect()
4. Запускаем NodeManager. В качестве аргумента передаём  ${NODEMANAGER_HOME}, путь к месту, где лежит файл nodemanager.properties.
wls:/offline> startNodeManager(NodeManagerHome='${MW_HOME}/wlserver_10.3/common/nodemanager') 
В логе запуска можно посмотреть текущие параметры запуска. Последняя строка болжна быть
Plain socket listener started on port 5556, host ...  
5. Соединяемся с Nodemanager. Указываем
  • логин, который меняли в пункте 3
  • пароль
  • адрес, на котором слушает NM,
  • порт,
  • имя домена,
  • путь к папке с доменом,
  • тип NM.
nmConnect('weblogic','password','srv1.site','5556','${DOMAIN_NAME}','${DOMAIN_HOME}','Plain')
6. Останавливаем\запускаем admin-сервер
nmKill('AdminServer')
nmStart('AdminServer')
7.  Останавливаем NodeManager
stopNodeManager()
или отсоединяемся
nmDisconnect()

 Готово.

При ручном вводе команд передача логина и пароля вполне приемлема. Если же запуск происходит из скрипта, то лучшим вариантом будет шифровать пароль. Для этого нужно соединиться с NodeManager

wls:/offline> nmConnect('weblogic','password','srv1.site','5556','${DOMAIN_NAME}','${DOMAIN_HOME}','Plain')
и сохранить данные для авторизации в каком-нибудь безопасном месте. Лучше с правами 500
wls:/nm/wl_sm> storeUserConfig('${PATH_TO_NMCONFIG}/nmConfig.secure','${PATH_TO_NM_KEY}/nmKey.secure','true')
Теперь для подключения можно использовать вот такую команду
wls:/offline>
nmConnect('${PATH_TO_NMCONFIG}/nmConfig.secure','${PATH_TO_NM_KEY}/nmKey.secure','srv1.site','5556','${DOMAIN_NAME}','${DOMAIN_HOME}','Plain')



Комментариев нет:

Отправить комментарий