Para configurar una política de despliegue, utilice un archivo XML de descriptor de política de despliegue.
En las siguientes secciones, se definen los elementos y atributos del archivo XML de descriptor de la política de despliegue. Consulte Archivo deploymentPolicy.xsd si desea ver el esquema XML de la política de despliegue.
Elementos del archivo deploymentPolicy.xml(1) <deploymentPolicy>
(2) <objectgridDeployment objectGridName="blah">
(3) <mapSet
(4) name="mapSetName"
(5) numberOfPartitions="numberOfPartitions"
(6) minSyncReplicas="minimumNumber"
(7) maxSyncReplicas="maximumNumber"
(8) maxAsyncReplicas="maximumNumber"
(9) replicaReadEnabled="true|false"
(10) numInitialContainers="numberOfInitialContainersBeforePlacement"
(11) autoReplaceLostShards="true|false"
(12) developmentMode="true|false"
(13) placementStrategy="FIXED_PARTITION|PER_CONTAINER">
(14) <map ref="backingMapReference" />
(15)
(16) <zoneMetadata>
(17) <shardMapping
(18) shard="shardType"
(19) zoneRuleRef="zoneRuleRefName" />
(20) <zoneRule
(21) name="zoneRuleName"
(22) exclusivePlacement="true|false" >
(23) <zone name="ALPHA" />
(24) <zone name="BETA" />
(25) <zone name="GAMMA" />
(26) </zoneRule>
(27) </zoneMetadata>
(28) </mapSet>
(29) </objectgridDeployment>
(30) </deploymentPolicy>
Elemento deploymentPolicy (línea 1)
El elemento deploymentPolicy es el elemento
de nivel superior del archivo XML de política de despliegue. Este elemento configura el espacio de nombres del archivo y la ubicación del esquema. El esquema se define en el archivo
deploymentPolicy.xsd.
- Número de apariciones: una
- Elemento hijo: objectgridDeployment
Elemento objectgridDeployment (línea 2)
El elemento objectgridDeployment se utiliza para hacer referencia a una instancia de ObjectGrid desde el archivo XML de ObjectGrid.
Dentro del elemento objectgridDeployment puede dividir las correlaciones en conjuntos de correlaciones.
- Número de apariciones: una o más
- Elemento hijo: mapSet
Atributos- objectgridName
- Especifica el nombre de la instancia de ObjectGrid a desplegar. Este atributo hace referencia a un elemento
objectGrid que está definido en el archivo XML de ObjectGrid.
(Necesario)
Por ejemplo, el atributo objectgridName se ha establecido como
CompanyGrid en el archivo companyGridDpReplication.xml. El atributo objectgridName hace referencia a
CompanyGrid que se ha definido en el archivo companyGrid.xml. Le la información sobre el
Archivo XML de descriptor ObjectGrid, que debe emparejar con el archivo de política de despliegue para cada instancia de ObjectGrid.
Elemento mapSet (línea 3)
El elemento mapSet se utiliza para agrupar correlaciones.
Las correlaciones dentro de un elemento mapSet se particionan y replican de forma parecida.
Cada correlación debe pertenecer sólo a un elemento mapSet.
- Número de apariciones: una o más
- Elementos hijo:
Atributos- name
- Especifica el nombre del mapSet. Este atributo debe ser exclusivo dentro del elemento
objectgridDeployment. (Necesario)
- numberOfPartitions
- Especifica el número de particiones para el elemento mapSet. El valor predeterminado es 1. El número debe ser adecuado para el número de servidores de contenedor que alojan las particiones. (Opcional)
- minSyncReplicas
- Especifica el número mínimo de réplicas síncronas para cada partición en el mapSet. El valor predeterminado es 0. Los fragmentos no se colocan hasta que el dominio pueda dar soporte al número mínimo de réplicas síncronas. Para dar soporte al valor minSyncReplicas, necesita un servidor de contenedor más que el valor de minSyncReplicas. Si el número de réplicas síncronas cae por debajo del valor minSyncReplicas,
ya no se permiten transacciones de grabación para esa partición. (Opcional)
- maxSyncReplicas
- Especifica el número máximo de réplicas síncronas para cada partición en el mapSet.
El valor predeterminado es 0. No se colocan más réplicas síncronas para una partición una vez que un dominio alcanza este número de réplicas síncronas para esa partición específica.
La adición de servidores de contenedor que puede dar soporte a este ObjectGrid puede producir un aumento del número de réplicas síncronas si el valor maxSyncReplicas no se ha cumplido ya. (Opcional)
- maxAsyncReplicas
- Especifica el número máximo de réplicas asíncronas para cada partición en el mapSet.
El valor predeterminado es 0. Una vez que se han colocado los primarios y todas las réplicas síncronas para una partición, las réplicas asíncronas se colocan hasta que se cumple el valor maxAsyncReplicas. (Opcional)
- replicaReadEnabled
- Si este atributo se establece en true, las solicitudes de lectura se distribuyen entre un primario de la partición y sus réplicas. Si el atributo replicaReadEnabled es false, las solicitudes de lectura se direccionan únicamente al primario.
El valor predeterminado es
false. (Opcional)
- numInitialContainers
- Especifica el número de servidores de contenedor necesarios antes de que se produzca la colocación inicial para los fragmentos en este elemento mapSet. El valor predeterminado es 1. Este atributo puede ayudar a ahorrar ancho de banda de red y proceso al poner en línea una cuadrícula de datos desde un arranque en frío. (Opcional)
- También puede utilizar la propiedad
placementDeferralInterval y el mandato
xscmd -c suspendBalancing para retardar
la colocación inicial de fragmentos en los servidores de contenedor.
- Al iniciar un servidor de contenedor se envía un suceso al servicio de catálogo.
La primera vez que el número de servidores de contenedor activos es igual al valor de numInitialContainers para un elemento, el servicio de catálogo coloca los fragmentos desde el mapSet, siempre que el valor minSyncReplicas también se pueda satisfacer.
Una vez que se ha cumplido el valor numInitialContainers, cada suceso de servidor iniciado de contenedor puede desencadenar un reequilibrio de fragmentos no colocados o colocados previamente. Si sabe aproximadamente cuántos servidores de contenedor va a iniciar para este elemento mapSet,
puede establecer el valor numInitialContainers en un valor próximo a ese número para evitar el reequilibrio después de cada inicio de servidor de contenedor. La colocación se produce solo cuando se alcanza el valor numInitialContainers especificado en el elemento mapSet.
Si necesita sobrescribir el valor numInitialContainers,
por ejemplo, al realizar mantenimiento en los servidores y desea que se continúe ejecutando la colocación de fragmentos, puede utilizar el mandato xscmd
-c triggerPlacement. Esta sustitución es temporal y se aplica al ejecutar el mandato. Después de ejecutar el mandato, todas las ejecuciones subsiguientes de colocación utilizan el valor numInitialContainers.
- autoReplaceLostShards
- Especifica si los fragmentos perdidos se colocan en otros servidores de contenedor.
El valor predeterminado es true. Cuando se detiene un servidor de contenedor o falla, los fragmentos en ejecución en el servidor de contenedor se perderán. La pérdida de un fragmento primario hace que uno de sus fragmentos de réplica se promocione al fragmento primario para la partición correspondiente. Debido a este ascenso, se pierde una de las réplicas.
Si desea que los fragmentos perdidos permanezcan sin colocar, establezca el atributo autoReplaceLostShards en false. Este valor no afecta a la cadena de ascensos, sólo la sustitución del último fragmento en la cadena.
(Opcional)
- developmentMode
- Con este atributo, puede influir en el lugar en el que se coloca el fragmento en relación a sus fragmentos iguales. El valor predeterminado es
true. Cuando el atributo developmentMode se establece en false, ninguno de los dos fragmentos de la misma partición se colocan en el mismo sistema. Cuando el atributo developmentMode se establece en true, los fragmentos de la misma partición se pueden colocar en la misma máquina. En cualquiera de los dos casos, no se colocarán nunca dos fragmentos de la misma partición en el mismo servidor de contenedor. (Opcional)
- placementStrategy
- Existen dos estrategias de colocación. La estrategia predeterminada es FIXED_PARTITION,
donde el número de fragmentos primarios que se colocan en los servidores de contenedor disponibles es igual al número de particiones definidas, aumentado por el número de réplicas. La estrategia alternativa es PER_CONTAINER,
donde el número de fragmentos primarios que se colocan en cada servidor de contenedor es igual al número de particiones que se definen, con un número igual de réplicas colocado en otros servidores de contenedor. (Opcional)
Elemento map (línea 14)
Cada correlación de un elemento mapSet hace referencia a los elementos backingMap que se definen en el correspondiente archivo XML de ObjectGrid.
Cada correlación de un entorno de
eXtreme Scale puede pertenecer sólo a un elemento de mapSet.
- Número de apariciones: una o más
- Elemento hijo: ninguno
Atributos- ref
- Proporciona una referencia a un elemento backingMap en el archivo XML de ObjectGrid. Cada correlación de un elemento mapSet debe hacer referencia a un elemento backingMap del archivo XML de ObjectGrid. El valor que se asigna al atributo ref debe coincidir con el atributo name de uno de los elementos backingMap del archivo XML de ObjectGrid, como en el siguiente fragmento de código. (Necesario)
Elemento zoneMetadata (línea 16)
Puede colocar fragmentos en zonas.
Esta función le permite tener más control sobre cómo eXtreme
Scale coloca los fragmentos en una cuadrícula.
Las Java™ virtual machine que alojan un servidor
eXtreme Scale se pueden marcar con un identificador de zona. El archivo de despliegue
puede incluir una o más reglas de zona y estas reglas de zona están asociadas a un tipo
de fragmento. El elemento zoneMetadata es un receptáculo de elementos de configuración de zona. En el elemento zoneMetadata, se pueden definir zonas y se puede influenciar el comportamiento de la colocación de fragmentos.
Para obtener información adicional, consulte Configuración de zonas para la colocación de réplicas.
- Número de apariciones: cero
- Elementos hijo:
Atributos: ninguno
Elemento shardMapping (línea 17)
El elemento shardMapping
se utiliza para asociar un tipo de fragmento a una regla de zona. La colocación del fragmento está influenciada por la correlación a la regla de zona.
- Número de apariciones: cero
- Elementos hijo: ninguno
Atributos- fragmento
- Especifique el nombre de un fragmento al que desea asociar un zoneRule.
(Necesario)
- zoneRuleRef
- Especifique el nombre de un zoneRule al que desea asociar el fragmento.
(Opcional)
Elemento zoneRule (línea 20)
Una regla de zonas especifica el conjunto de zonas posible en el que se puede colocar el fragmento. El elemento zoneRule
se utiliza para especificar un conjunto de zonas en el que se puede colocar un conjunto de tipos de fragmento. La regla de zona también se puede utilizar para determinar cómo se agrupan los fragmentos en las zonas utilizando el atributo exclusivePlacement.
- Número de apariciones: una o más
- Elementos hijo: zone
Atributos- name
- Especifique el nombre de la regla de zona que ha definido anteriormente,
como el zoneRuleRef de un elemento shardMapping. (Necesario)
- exclusivePlacement
- Un valor exclusivo indica que cada tipo de fragmento correlacionado con esta regla de zona se coloca en una zona distinta en la lista de zonas. Un valor inclusivo indica que tras colocar un fragmento en una zona de la lista, los otros tipos de fragmento correlacionados con esta regla de zona también se colocan en esa zona. Tenga en cuenta que la utilización de un valor exclusivo con tres fragmentos correlacionados con la misma regla de zona (un primario y dos réplicas síncronas) necesitaría como mínimo 3 zonas para que se pudieran colocar todos los fragmentos. (Opcional)
Elemento zone (líneas 23 a 25)
El elemento de zona se utiliza para denominar una zona en una regla de zona. Cada zona denominada debe corresponder a un nombre de zona utilizado para lanzar servidores.
Ejemplo
En el siguiente ejemplo, se utiliza el elemento mapSet para configurar una política de despliegue. El valor se establece en
mapSet1 y está dividido en 10 particiones. Cada una de estas particiones debe tener como mínimo una réplica síncrona disponible y no más de dos réplicas síncronas. Cada partición también tiene una réplica síncrona si el entorno puede darle soporte. Se colocan todas las réplicas síncronas antes de que se coloquen las réplicas asíncronas. Además, el servicio de catálogo no intenta colocar los fragmentos para el elemento mapSet1 hasta que el dominio pueda dar soporte al valor minSyncReplicas.
El soporte del valor minSyncReplicas requiere dos o más servidores de contenedor: uno para el primario y dos para la réplica síncrona.
<?xml version="1.0" encoding="UTF-8"?>
<deploymentPolicy xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://ibm.com/ws/objectgrid/deploymentPolicy ../deploymentPolicy.xsd"
xmlns="http://ibm.com/ws/objectgrid/deploymentPolicy">
<objectgridDeployment objectgridName="CompanyGrid">
<mapSet name="mapSet1" numberOfPartitions="10"
minSyncReplicas="1" maxSyncReplicas="2" maxAsyncReplicas="1"
numInitialContainers="10" autoReplaceLostShards="true"
developmentMode="false" replicaReadEnabled="true">
<map ref="Customer"/>
<map ref="Item"/>
<map ref="OrderLine"/>
<map ref="Order"/>
</mapSet>
</objectgridDeployment>
</deploymentPolicy>
Aunque solo se requieren dos servidores de contenedor para satisfacer los valores de réplica, el atributo numInitialContainers
requiere 10 servidores de contenedor disponibles antes de que el servicio de catálogo intente colocar cualquiera de los fragmentos en este elemento mapSet.
Una vez que el dominio tenga 10 servidores de contenedor que puedan dar soporte al ObjectGrid CompanyGrid, se colocan todos los fragmentos del elemento mapSet1.
Debido a que el atributo autoReplaceLostShards está establecido en true, cualquier fragmento de este elemento mapSet que se pierde como resultado de la anomalía del servidor de contenedor normalmente se sustituye en otro servidor de contenedor, siempre que haya un servidor de contenedor disponible para alojar el fragmento perdido. Los fragmentos de la misma partición no pueden colocarse en la misma máquina para el elemento mapSet1 porque el atributo developmentMode está establecido en false.
Las solicitudes de sólo lectura se distribuyen por el fragmento primario y sus réplicas para cada partición porque el valor replicaReadEnabled es true.
El archivo companyGridDpMapSetAttr.xml utiliza el atributo
ref en la correlación para hacer referencia a cada uno de los elementos backingMap del archivo companyGrid.xml.
Consulte Direccionamiento a zonas según preferencias para ver ejemplos que impliquen configuraciones de zona.