O Node Manager é um serviço do weblogic server que possibilita a adminsitração de vários servidores configurados em vários hardwares diferentes através de um único console de administração ou de scripts WLST.
Neste post vou mostrar um script que pode ser utilizado para conectar no nodemanager de uma máquina e enviar comandos para inicializar servidores previamente configurados em um determinado domínio administrado por este nodemanager. O script assim como o arquivo de propriedades está comentado e seu código segue abaixo com comentários em seguida:
from java.util import Properties from java.io import FileInputStream from java.io import File #import thread from string import split #============DEFINICAO DE FUNCOES============ #funcao que carrega dados de arquivo de propriedades def carregaArquivoPropriedades(nomeArquivo) : print 'carregando propriedades do arquivo: ' + nomeArquivo #arquivo de propriedades a ser carregado myProps = Properties() #carrega arquivo de propriedades myProps.load(FileInputStream(File(nomeArquivo))) return myProps #função que recupera servidores especificados no arquivo de propriedades. def listaServidores(arquivoPropriedades): print 'selecionando servidores da lista de propriedades' servidores = [] propriedades = arquivoPropriedades.propertyNames() while propriedades.hasMoreElements(): #carrega os nomes de todas as chaves carregadas do arquivo de propriedades chave = propriedades.nextElement() #recupera tipo da chave para verificar se é um servidor se for adiciona no array de servidores. elemento = split(chave, '_') #checa se elemento carregado do arquivo de properties é um servidor e adiciona na lista de servidores if elemento[0] == 'SERVIDOR': servidores.append(chave) #while que imprime lista de servidores recuperada print '=======================AVISO================================================================' print'LISTA DOS SERVIDORES A SEREM INICIALIZADOS' for servidor in servidores: print 'Servidor ==>> ' + arquivoPropriedades.get(servidor) print '=======================AVISO================================================================' return servidores def inicializaInstancias(): usuario = arquivoPropriedades.get('USUARIO_ADM') senha = arquivoPropriedades.get('USUARIO_ADM_SENHA') ipNodeManager = arquivoPropriedades.get('NODEMANAGER_IP') portaNodeManager = arquivoPropriedades.get('NODEMANAGER_PORT') nomeDominio = arquivoPropriedades.get('DOMINIO_NOME') diretorioDominio = arquivoPropriedades.get('DOMINIO_DIRETORIO') print '\n================================================================================================' print 'tentando conexao com o nodemanager...' print 'usuario: ' + usuario print 'ip Node Manager: ' + ipNodeManager print 'porta Node Manager: ' + portaNodeManager print 'Nome do dominio: ' + nomeDominio print 'Diretorio do dominio no servidor: ' + diretorioDominio print '================================================================================================' nmConnect(usuario,senha, ipNodeManager, portaNodeManager, nomeDominio, diretorioDominio, 'plain', 'true') for servidor in servidores: print 'solicitando inicializacao do servidor ' + arquivoPropriedades.get(servidor) nmStart(arquivoPropriedades.get(servidor), diretorioDominio) #==========execucao (Main)======== arquivoPropriedades = carregaArquivoPropriedades('servidores.properties') servidores = listaServidores(arquivoPropriedades) inicializaInstancias()
O script carrega a lista de servidores de um arquivo de propriedades e inicializa cada um dos servidores declarados no arquivo. Abaixo um arquivo de propriedades de exmplo que pode ser utilizado com este script.
#colocar o IP e porta do nodemanger onde os servidores estão configurados. Caso houver #necessidade de inicializar ou parar serviores em mais de um hardware o script deverá ser #executado 1 vez para cada configuração de nodemanager e após feitos os devidos ajustes de ip e #porta onde o nodemanager se encontra em execução. NODEMANAGER_IP=localhost NODEMANAGER_PORT=5559 #colocar o nome do diretório do domínio que será gerenciado pelo script. DOMINIO_NOME=testescripts #colocar o caminho completo do domínio que será gerenciado pelo script. DOMINIO_DIRETORIO=/home/mmaia/weblogic10/domains/testescripts #usuário e senha de administração deste domínio. Devem ser iguais aos do nodemanager configurados #para gerenciamento deste domínio e armazenados no arquivo nm_password.properties do domínio. USUARIO_ADM=weblogic USUARIO_ADM_SENHA=weblogic #lista de nomes das instancias a serem inicializadas ou paradas, deve seguir o padrao SERVIDOR_X= #pode-se registrar quantas instânciasforem necessárias. As instâncias listadas devem estar #configuradas no ambiente onde o nodemanager configurado está. SERVIDOR_1=teste-1 SERVIDOR_2=teste-2 SERVIDOR_ADMIN=AdminServer
[]s