Puede utilizar varias opciones diferentes para controlar cuándo
se colocan fragmentos en varios servidores de contenedor en la configuración. Durante
el arranque, puede elegir retardar la colocación de fragmentos. Cuando
ejecuta todos los servidores de contenedor, es posible que necesite suspender,
reanudar o cambiar la colocación mientras mantiene los servidores.
Procedimiento
Control de la colocación durante el arranque
Puede controlar
cuándo empiezan a colocarse los fragmentos mientras se está iniciando el entorno. De
forma predeterminada existe un cierto control. Si no realiza ninguna acción
para controlar la colocación, los fragmentos empiezan a colocarse inmediatamente. Cuando
los fragmentos se colocan inmediatamente, es posible que no se coloquen de manera uniforme
ya que se inician los siguientes servidores de contenedor y se ejecutan
operaciones de colocación adicionales para equilibrar la distribución.
- Suspenda temporalmente el equilibrio de fragmentos para evitar
la colocación de fragmentos inmediata cuando se inician los servidores de contenedor.
Antes de iniciar los servidores de contenedor, utilice el mandato
xscmd -c suspendBalancing para detener el equilibrio de fragmentos
de una cuadrícula de datos y un conjunto de correlaciones específicos. Después de que
se hayan iniciado los servidores de contenedor, puede utilizar el mandato
xscmd -c resumeBalancing para
empezar la colocación de fragmentos en los servidores de contenedor.
- Configure la propiedad placementDeferralInterval.
La propiedad placementDeferralInterval
minimiza el número de ciclos de colocación de fragmentos en los servidores de
contenedor. La colocación de fragmentos se desencadena en el intervalo de tiempo
definido.
Establezca la propiedad placementDeferralInterval en el
archivo de propiedades de servidor para el servidor de catálogo.
Si está utilizando la API de servidor incorporado, utilice el método
setPlacementDeferralInterval en la interfaz
CatalogServerProperties. Esta propiedad
establece un número de milisegundos antes de que se coloquen
los fragmentos en los servidores de contenedor. El valor
predeterminado de esta propiedad es 15 segundos. Con el valor predeterminado,
cuando se inicia un servidor de contenedor, la colocación
no se inicia hasta después de que haya transcurrido el tiempo especificado
en la propiedad. Si varios servidores de contenedor se inician en sucesión,
se restablece el temporizador de intervalo de aplazamiento si se inicia
un nuevo servidor de contenedor dentro del intervalo proporcionado. Por
ejemplo, si se inicia un segundo servidor de contenedor 10 segundos después del
primer servidor de contenedor, la colocación no se inicia hasta 15 segundos
después de que se haya iniciado el segundo servidor de contenedor. Sin embargo,
si se inicia un tercer servidor de contenedor 20 segundos después del segundo
servidor de contenedor, la colocación ya habrá empezado en los dos primeros
servidores de contenedor.
Cuando los servidores de contenedor dejan de estar disponibles, se desencadena
la colocación tan pronto como el servidor de catálogo conoce el suceso para que
la recuperación se pueda producir lo más rápidamente posible.
Puede utilizar los siguientes consejos para determinar si el valor de aplazamiento
de colocación se ha establecido en un periodo de tiempo correcto:
- Mientras inicia simultáneamente los servidores de contenedor, examine los
mensajes CWOBJ1001 en el archivo SystemOut.log de
cada servidor de contenedor. La indicación de fecha y hora de estos mensajes en cada archivo de
registro de servidor de contenedor indica la hora de inicio de servidor de contenedor real. Puede
considerar la posibilidad de ajustar la propiedad placementDeferralInterval
para incluir más inicios de servidor de contenedor. Por ejemplo, si el primer
servidor de contenedor se inicia 90 segundos antes del último servidor de contenedor,
puede establecer la propiedad en 90 segundos.
- Fíjese cuánto tiempo transcurre antes de que se produzcan los mensajes
CWOBJ1511
después de los mensajes CWOBJ1001. Este intervalo de tiempo puede indicar
si el aplazamiento se ha producido satisfactoriamente.
- Si está utilizando un entorno de desarrollo, tenga en cuenta la duración
del intervalo cuando está probando la aplicación.
- Configure el atributo numInitialContainers.
Si ha utilizado anteriormente el atributo numInitialContainers,
puede continuar utilizando el atributo. Sin embargo, se sugiere utilizar los mandatos
xscmd -c suspendBalancing y xscmd -c resumeBalancing
seguidos de placementDeferralInterval en lugar del
atributo numInitialContainers para controlar la colocación. El
atributo numInitialContainers especifica el número de servidores de
contenedor que son necesarios antes de que se produzca la colocación inicial para los
fragmentos de este elemento mapSet. El atributo
numInitialContainers está en el archivo XML de descriptor de política
de despliegue. Si ha establecido
numInitialContainers y placementDeferralInterval,
tenga en cuenta que hasta que se satisfaga el valor
numInitialContainers, no se producirá ninguna colocación,
independientemente del valor de la propiedad
placementDeferralInterval.
Control de la colocación tras el arranque inicial
- Fuerce que se produzca la colocación.
Puede utilizar el mandato xscmd
-c triggerPlacement -g my_OG -ms my_Map_Set, donde
my_OG y my_Map_Set se establecen
en los valores para la cuadrícula de datos y el conjunto de correlaciones,
con el fin de forzar que se produzca la colocación en un momento en el que,
de lo contrario, es posible que la colocación no se produjera. Por ejemplo, puede
ejecutar este mandato cuando el periodo de tiempo especificado por la
propiedad placementDeferralInterval aún no ha transcurrido
o cuando se suspende el equilibrio.
- Reasigne un fragmento primario.
Utilice el mandato xscmd -c swapShardWithPrimary
para asignar un fragmento de réplica para que sea el nuevo fragmento primario. El
fragmento primario anterior se convierte en una réplica.
- Vuelva a equilibrar los fragmentos primario y de réplica.
Utilice el mandato xscmd -c balanceShardTypes para ajustar
la proporción de fragmentos primarios y de réplica a fin de que sea equitativa
entre los servidores de contenedor en ejecución de la configuración. La proporción es
coherente dentro de un fragmento de cada servidor de contenedor.
- Suspenda o reanude la colocación.
Utilice el mandato
xscmd -c suspendBalancing o el mandato
xscmd -c resumeBalancing para detener e iniciar el equilibrio de
fragmentos de una cuadrícula de datos y un conjunto de correlaciones específicos. Cuando
el equilibrado se ha suspendido, se pueden seguir ejecutando las siguientes
acciones de colocación:
- Se puede producir la promoción de fragmentos cuando fallan los servidores de contenedor.
- Intercambio de roles de fragmento con el mandato
xscmd -c swapShardWithPrimary.
- Equilibrio desencadenado por colocación de fragmento con el mandato
xscmd -c triggerPlacement -g myOG -ms myMapSet.
Qué hacer a continuación
Puede supervisar la colocación en el entorno con el mandato
xscmd
-c placementServiceStatus.