Acerca de esta tarea
Sin la habilitación OSGi, si un administrador necesita
actualizar plug-ins de aplicación u objetos de memoria caché, se
debe actualizar uno a a uno cada nodo de cuadrícula, lo que produce
estrés en la red, la memoria y la utilización de cpu. Esto es necesario puesto que los objetos
Java de memoria caché y plug-ins
se almacenan directamente en la cuadrícula. Cuando las clases se actualizan sin reiniciar
los procesos, los plug-ins de cuadrícula tienen conflictos porque cada clase tiene
un ClassLoader diferente.
El producto
eXtreme Scale incluye
el programa de utilidad xscmd y MBeans lo que permite
a los administradores ver todos los paquetes de plug-in instalados en infraestructura
OSGi de alojamiento de cada contenedor de cuadrícula y elegir qué revisión va a utilizar. Cuando
se utiliza xscmd para actualizar los plug-ins a una nueva clasificación, se inmoviliza
la cuadrícula y se drenan todas las transacciones, se actualizan los plug-ins
y la cuadrícula se activa de nuevo. Si se produce un error durante el proceso
de actualización, el proceso se retrotrae y la clasificación antigua se restaura.
- Cree una versión del paquete, aumentando el número de versión
en el manifiesto de paquete y aumentando la clasificación para cada
servicio de plug-in eXtreme Scale. Si la versión de paquete original
es Bundle-Version: 1.0.0, la siguiente versión se
puede definir como Bundle-Version: 1.1.0.
Si la
clasificación de servicio original es ranking="1", la siguiente
clasificación se puede definir como ranking="2".
Importante: Las clasificaciones de servicio de OSGi deben ser enteros.
- Copie el nuevo paquete en cada nodo de infraestructura OSGi que
aloja un servidor de contenedor de eXtreme Scale.
- Instale el nuevo paquete en la infraestructura OSGi. Se le asigna al paquete
un identificador de paquete; por ejemplo:
osgi> install <URL a paquete>
- Inicie el nuevo paquete utilizando el identificador de paquete asignado;
por ejemplo:
osgi> start <id>
Después de que se haya iniciado el nuevo paquete, el rastreador de servicio OSGi de
eXtreme Scale detecta el paquete y lo deja
disponible para la actualización.
- Utilice el mandato xscmd -c osgiAll para
verificar que cada servidor de contenedor ve el nuevo paquete. El mandato
osgiAll consulta en todos los contenedores de la cuadrícula
todos los servicios a los que se hace referencia en el archivo XML de descriptor de
ObjectGrid y visualiza todas las clasificaciones que están disponibles; por ejemplo:
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.
- Utilice el mandato xscmd -c osgiCheck
para verificar que una o más clasificaciones de servicio son destinos de actualización
válidos; por ejemplo:
xscmd -c osgiCheck -sr
mySerializerServiceFactory;2,myLoaderServiceFactory;2
CWXSI0040I: The command osgiCheck has completed successfully.
- Si el mandato osgiCheck no ha encontrado
errores resultantes, suspenda el equilibrador del servicio de colocación
para evitar movimientos de fragmentos, si se produjera una anomalía
durante el proceso de actualización. Para suspender la colocación, utilice el mandato
xscmd -c suspendBalancing para cada cuadrícula de objeto
y conjunto de correlaciones afectados por la actualización;
por ejemplo:
xscmd -c suspendBalancing -g MyGrid -ms MyMapSet
- Después de que se haya suspendido el equilibrio para cada cuadrícula de objeto
y conjunto de correlaciones, utilice el mandato xscmd -c osgiCheck
de nuevo para verificar que una o más clasificaciones de servicio son destinos de actualización
válidos; por ejemplo:
xscmd -c osgiCheck -sr
mySerializerServiceFactory;2,myLoaderServiceFactory;2
CWXSI0040I: The command osgiCheck has completed successfully.
- Después de que se haya suspendido el equilibrio para la cuadrícula de objeto
y el conjunto de correlaciones, utilice el mandato osgiUpdate para
actualizar el servicio en todos los servidores para una cuadrícula de objeto y
un conjunto de correlaciones; por ejemplo:
xscmd -c osgiUpdate -sr
mySerializerServiceFactory;2,myLoaderServiceFactory;2 -g MyGrid -ms MyMapSet
- Verifique que la actualización se haya realizado satisfactoriamente; por ejemplo:
La actualización ha sido satisfactoria para las siguientes clasificaciones
de servicio:
Service Ranking
------- -------
mySerializerServiceFactory 2
myLoaderServiceFactory 2
- Después de verificar que la clasificación se ha actualizado satisfactoriamente,
habilite el equilibrado de nuevo, utilizando el mandato
xscmd -c resumeBalancing; por ejemplo:
xscmd -c resumeBalancing -g MyGrid -ms MyMapSet
- Detenga y desinstale el paquete antiguo en cada infraestructura OSGi
que aloja el contenedor de eXtreme Scale. Por ejemplo, entre el código siguiente en la consola de Eclipse Equinox:
osgi> stop <id>
osgi> uninstall <id>