Sobre Esta Tarefa
Sem de ativação do OSGi, se um administrador precisar
atualizar os plug-ins do aplicativo ou objetos de cache, cada nó da grade deverá
ser atualizado um por um, causando uma sobrecarga na rede, memória e
utilização da CPU. Isso é necessário pois os plug-ins e objetos Java do cache são armazenados diretamente na grade. Quando classes são atualizadas sem reiniciar os processos,
os plug-ins da grade têm conflitos porque cada classe possui um ClassLoader diferente.
O produto eXtreme Scale inclui
o utilitário xscmd e MBeans que permitem aos administradores
visualizar todos os pacotes configuráveis do plug-in instalados em cada estrutura OSGi
de hosting do contêiner da grade e escolher qual revisão usar. Quando o
xscmd é usado para atualizar os plug-ins para uma nova classificação, a grade é
posicionada no modo quiesce e todas as transações são drenadas, os plug-ins são atualizados
e a grade é ativada novamente. Se ocorrer um erro durante o processo de
atualização, o processo é retrocedido e a classificação antiga é restaurada.
- Crie uma versão do pacote configurável, aumentando o número da
versão no manifesto do pacote configurável e aumentando a classificação para cada serviço de plug-in do eXtreme Scale. Se a versão do pacote configurável original
for Bundle-Version: 1.0.0, a próxima versão poderá
ser definida como Bundle-Version: 1.1.0.
Se a classificação de serviço original
for ranking="1", a próxima classificação
poderá ser definida como ranking="2".
Importante: As classificações do
serviço OSGi devem ser números inteiros.
- Copie o novo pacote configurável para cada nó de estrutura do OSGi que está
hospedando um servidor de contêiner do eXtreme Scale.
- Instale o novo pacote configurável na estrutura do OSGi. O pacote configurável
é designado a um identificador de pacote configurável; por exemplo:
osgi> install <URL to bundle>
- Inicie o novo pacote configurável usando o identificador de pacote configurável designado;
por exemplo:
osgi> start <id>
Depois
que o novo pacote configurável é iniciado, o rastreador de serviço OSGi do eXtreme Scale
detecta o pacote configurável e o torna disponível para atualização.
- Use o comando xscmd -c osgiAll para
verificar se cada servidor de contêiner vê o novo pacote configurável. O comando osgiAll
consulta todos os contêineres na grade para todos os serviços que são
referenciados no arquivo XML do descritor do ObjectGrid e exibe todas
as classificações que estão disponíveis; por exemplo:
xscmd -c osgiAll
Server: server1
OSGi Service Name Available Rankings
----------------- ------------------
myLoaderServiceFactory 1, 2
mySerializerServiceFactory 1, 2
Server: server2
OSGi Service Name Available Rankings
----------------- ------------------
myLoaderServiceFactory 1, 2
mySerializerServiceFactory 1, 2
Summary - All servers have the same service rankings.
- Use o comando xscmd -c osgiCheck
para verificar se uma ou mais classificações de serviço são destinos de atualização válidos;
por exemplo:
xscmd -c osgiCheck -sr
mySerializerServiceFactory;2,myLoaderServiceFactory;2
CWXSI0040I: The command osgiCheck has completed successfully.
- Se o comando osgiCheck não localizou
nenhum erro resultante, suspenda o balanceador do serviço de posicionamento
para evitar movimentos de shard, no caso de uma falha durante o processo de atualização. Para suspender o posicionamento, use o comando xscmd -c suspendBalancing
para cada grade de objeto e conjunto de mapas que são afetados pela atualização;
por exemplo:
xscmd -c suspendBalancing -g MyGrid -ms MyMapSet
- Após o balanceamento ter sido suspenso para cada grade de objeto
e conjunto de mapas, use o comando xscmd -c osgiCheck
novamente para verificar se uma ou mais classificações de serviço são destinos
de atualização válidos; por exemplo:
xscmd -c osgiCheck -sr
mySerializerServiceFactory;2,myLoaderServiceFactory;2
CWXSI0040I: The command osgiCheck has completed successfully.
- Após o balanceamento ter sido suspenso para a grade de objeto
e o conjunto de mapas, use o comando osgiUpdate para atualizar
o serviço em todos os servidores para uma grade de objeto e um conjunto de mapas;
por exemplo:
xscmd -c osgiUpdate -sr
mySerializerServiceFactory;2,myLoaderServiceFactory;2 -g MyGrid -ms MyMapSet
- Verifique se o upgrade foi bem-sucedido; por exemplo:
Update succeeded for the following service rankings:
Service Ranking
------- -------
mySerializerServiceFactory 2
myLoaderServiceFactory 2
- Depois de verificar que a classificação foi atualizada com êxito,
ative o balanceamento novamente, usando o comando xscmd -c resumeBalancing;
por exemplo:
xscmd -c resumeBalancing -g MyGrid -ms MyMapSet
- Pare e desinstale o pacote configurável antigo em cada estrutura do OSGi
que está hospedando o contêiner do eXtreme Scale. Por exemplo, insira o seguinte código no console do Equinox
Eclipse:
osgi> stop <id>
osgi> uninstall <id>