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
3 comentários:
Oi,
Seu tutorial me ajudou muito. E se eu tiver vários domínios e vários servidores?
Espero "Traduz Google" fará boa tradução do Inglês para o Português
Se você quiser fazer tudo com um único script o que eu faria é separar os domínios e grupos de servidores e para cada domínio faria nova conexão no nodemanager com os dados daquele domínio e no loop a chamada de start dos servidores daquele domínio. Esta lógica ficaria um pouco mais complicada mas se você criar um padrão de nomenclatura no properties ao definir os domínios e respectivos servidores pode então utilizar o comando split para separar os servidores de cada grupo então a lógia seria:
1) Carregar a lista de domínios do properties
2)Para cada domínio:
2.1-Conectar no nodemanager (nmConnect)
2.2 - Fazer um loop similar ao desse exemplo para todos os servidores deste domíno.
2.3 - Desconectar do nodemanager(nmDisconnect)
2.4 - Ir para o próximo domínio definido na lista...
Já fiz código jython para tratar grupos de servidores e utilizei o split do pyton para definir um padrão onde eu pudesse agrupar estes servidores. Seria a mesma idéia neste caso que você colocou.
[]s
Mmaia Hey,
Sua dica me ajudou a melhorar de script para incluir os servidores de partida para
qualquer não. de domínios e servidores.
Obrigado,
Charan
Postar um comentário