Mostrando postagens com marcador Node Manager. Mostrar todas as postagens
Mostrando postagens com marcador Node Manager. Mostrar todas as postagens

27 de jan. de 2010

Weblogic WLST - Erro ao inicializar servidores via nodemanager.

Um erro recorrente e chato que acontece comumente quando utilizamos um script para controlar o ciclo de vida(para, pausar, reiniciar) dos servidores gerenciados no domínio do weblogic utilizando conexão via nodemanager é um erro de acesso com a mensagem similar a esta:

Connecting to Node Manager ... This Exception occurred at Wed Jan 27 11:31:34 BRST 2010. weblogic.nodemanager.NMException: Access to domain 'testescripts' for user 'weblogic' denied at weblogic.nodemanager.client.NMServerClient.checkResponse(NMServerClient.java:298) at weblogic.nodemanager.client.NMServerClient.checkResponse(NMServerClient.java:311) at weblogic.nodemanager.client.NMServerClient.connect(NMServerClient.java:253) at weblogic.nodemanager.client.NMServerClient.checkConnected(NMServerClient.java:196) at weblogic.nodemanager.client.NMServerClient.checkConnected(NMServerClient.java:202) ...... WLSTException: Error occured while performing nmConnect : Cannot connect to Node Manager.Access to domain 'testescripts' for user 'weblogic' denied Use dumpStack() to view the full stacktrace

Este problema ocorre porque a senha definida pelo nodemanager no domínio está diferente da senha de administração do domínio. A solução para o problema é alterar a senha do nodemanager no Console de Administração do Weblogic e colocá-la igual a senha utilizada para gerenciar o domínio.

Para fazer isso no console de administração do weblogic altere a senha do nodemanger navegando em:

Na árvore de navegação (Domain Structure) clique no nome do domínio > Security > Advanced

Procure por "NodeManager Username", "NodeManager Password" e "Confirm NodeManager Password" e altere a senha para ser igual à senha de administração do domínio. Salve e ative as configurações. Reinicie o nodemanager.

Pronto o script deve funcionar corretamente. Se o problema persistir, verifique no nodemanager.domains se o domínio onde está o servidor que deve ser controlado está registrado corretamente.

[]s

24 de jun. de 2009

Weblogic WLST - Inicializando servidores via Node Manager

O weblogic server possibilita a administração de um domínio mesmo quando o servidor de administração estiver fora do ar através do Node Manager que já deve ter sido devidamente configurado para gerenciar o domínio que será administrado.

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