4 de dez de 2012

Como mudar o nome de um NodeAgent no WebSphere

Outro dia me deparei com a necessidade de mudar o nome do Host Name de um Node Agent do WebSphere isso pode ocorrer por vários motivos, como por exemplo: para corrigir a propagação do plugin do IBM HTTP Server ou simplesmente porque a máquina irá mesmo ser migrada para um outro nome ou ainda para migrar um profile de máquina, dentre outras possibilidades.
Para visualizar, navegue no Admin console do WebSphere(Domain Manager - DMGR):
System Administration > Nodes
Você deve então visualizar o Host Name do Node desejado conforme ilustrado na imagem abaixo:


Neste caso vou mudar o Host Name do NodeAgent para ao invés de ser localhost passar a ser mmaia.ibm

Para fazer isso o primeiro passo é baixar todos os processos de WebSphere rodando neste ambiente e então fazer um backup do profile que será atualizado para caso seja necessário restaurar posteriormente. Veja este link para fazê-lo.
Feito o backup vamos agora executar o utilitário do WebSphere wsadmin, isso deve ser feito no diretório bin do profile do Domain Manager(Dmgr) ou não funcionará corretamente. Execute o comando:
./wsadmin.sh -conntype NONE -lang jython

Isso irá colocar o shell no modo jython, conforme mostrado na imagem abaixo, se for primeira execução do wasadmin no seu ambiente você deverá ver o processamento de várias libs antes de entrar no modo de execução do wasadmin:

Execute agora a função jython AdminTask.changeHostName no modo iterativo, o que irá fazer com que os parâmetros da função sejam solicitados no console wsadmin, e salve as configurações, conforme ilustrado abaixo:

AdminTask.changeHostName('[-interactive]')



Preencha com os novos valores e coloque F no final para salvar a alteração, depois salve a alteração executando a função AdminConfig.save().
Pronto, saia do modo wasadmin digitando exit e reinicie seu profile(node e servers).
O novo valor deve aparecer no NodeAgent agora:

Como fazer back-up de um Profile do WebSphere

Constantemente é necessário fazer alguma alteração em um ambiente WebSphere e para ambientes críticos onde não pode haver erros ou indisponibilidade do ambiente é importante que seja feito um backup do Profile para que, emergencialmente, caso seja necessário façamos o rollback das alterações para um estado estabilizado.

Para fazer este backup utilizando a ferramenta que acompanha o WebSphere basta executar o script backupConfig.sh de um profile e passar o arquivo de destino que você quer salvar, por exemplo:
./backupConfig.sh AppSrv_1_mutual_authentication_profile_bkp.zip


Executando o comando acima o utilitário de backup irá parar todos os processos relacionados ao profile e irá fazer o backup, resultando em um arquivo chamado AppSrv_1_mutual_authentication_profile_bkp.zip neste mesmo diretório. Este Profile poderá posteriormente ser restaurados utilizando o script manageprofiles.sh:
./manageprofiles.sh  -restoreProfile -backupFile AppSrv_1_mutual_authentication_profile_bkp.zip

30 de nov de 2012

Como liberar uma porta pelo iptables - Linux CentOS, Fedora, Red Hat

É bastante comum eu me deparar com um cenário onde preciso liberar porta de entrada para acessar algum servidor em um ambiente linux. Então segue a dica para liberar as portas desejadas no IPTables.

Para liberar portas usando o iptables edite o arquivo:
/etc/sysconfig/iptables

Se você quer liberar a porta 8080 no protocolo tcp, adicione a seguinte linha:
-A INPUT -m state --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT

Feito isso basta reiniciar o iptables(se estiver logado como root não precisa do comando sudo):
sudo service iptables restart

Como descobrir um PID pela porta - Linux, Solaris

Já me deparei mais de uma vez com a necessidade de descobrir o PID de um processo que está ocupando uma porta do S.O mas não consigo liberar a porta por não ter o id do processo podendo assim forçar que ele pare de executar.

Então segue a dica de como fazê-lo:

Linux:
netstat -tulpn


Você deverá ver uma saída como a imagem abaixo, perceba que o PID aparece na última coluna(PID/Program name) e a porta na quarta coluna (Local Address):



Se você quiser ver somente uma porta específica utilize o grep:

netstat -tulpn |grep ${NUMERO_DA_PORTA}
A saída será conforme a imagem abaixo:



Uma outra opção no Linux e outros unix like O.S é usar o lsof:
lsof |grep ${NUMERO_DA_PORTA}


Solaris:
No solaris siga a dica e execute os scripts que o Fabio Morais postou neste link.