Para lograr una disponibilidad máxima o un rendimiento óptimo, algunas combinaciones de servicios requieren una distribución específica de grupos de recursos en línea entre los nodos del cluster. La distribución de grupos de recursos en línea implica la creación de afinidades entre grupos de recursos para las siguientes finalidades:
Forzar la distribución requerida de los grupos de recursos cuando se ponen en línea por primera vez.
Conservar la distribución requerida tras un intento de failover o switchover en un grupo de recursos.
En esta sección, se incluyen los siguientes ejemplos sobre cómo utilizar afinidades para distribuir grupos de recursos entre nodos del cluster:
Forzar la colocación de un grupo de recursos con otro grupo de recursos.
Especificar una colocación preferida de un grupo de recursos con otro grupo de recursos.
Equilibrar la carga de un conjunto de grupos de recursos.
Especificar la prioridad de un servicio crítico.
Delegar el failover o switchover de un grupo de recursos.
Combinar afinidades entre grupos de recursos para especificar un comportamiento más complejo.
Una afinidad entre grupos de recursos limita en qué nodos se pueden poner en línea al mismo tiempo los grupos de recursos. En cada afinidad, un grupo de recursos de origen declara una afinidad para uno o varios grupos de recursos de destino. Para crear una afinidad entre grupos de recursos, establezca la propiedad RG_affinities del grupo de recursos de origen como se indica a continuación:
-p RG_affinities=affinity-list
Especifica una lista separada por comas de afinidades entre el grupo de recursos de origen y uno o varios grupos de recursos de destino. Puede especificar una sola afinidad o más de una en la lista.
Especifique cada afinidad en la lista como se indica a continuación:
operator target-rg
Especifica el tipo de afinidad que se creará. Para obtener más información, consulte Tabla 7.
Especifica el grupo de recursos de destino de la afinidad que se creará.
|
Las afinidades débiles tienen prioridad sobre el orden de preferencia de Nodelist.
El estado actual de otros grupos de recursos puede impedir que se cumpla una afinidad fuerte en cualquier nodo. En esta situación, el grupo de recursos que actúa como origen de la afinidad permanece fuera de línea. Si el estado de otros grupos de recursos cambia para permitir que se cumplan las afinidades fuertes, se pone en línea nuevamente el grupo de recursos que actúa como origen de la afinidad.
Un servicio que está representado por un grupo de recursos puede depender fuertemente de un servicio de un segundo grupo de recursos, de manera que ambos servicios deben ejecutarse en el mismo nodo. Por ejemplo, una aplicación compuesta por varios daemons de servicio independientes puede requerir que todos los daemons se ejecuten en el mismo nodo.
En esta situación, fuerce el grupo de recursos del grupo de recursos del servicio dependiente para que se coloque con el grupo de recursos del otro servicio. Para forzar la colocación de un grupo de recursos con otro grupo de recursos, declare en el grupo de recursos una afinidad positiva fuerte por el otro grupo de recursos.
# clresourcegroup set|create -p RG_affinities=++target-rg source-rg
Especifica el grupo de recursos que actúa como origen de la afinidad positiva fuerte. Este grupo de recursos es el grupo en el que se declara una afinidad positiva fuerte para otro grupo de recursos.
Especifica el grupo de recursos que actúa como destino de la afinidad positiva fuerte. Este grupo de recursos es el grupo para el que se declara una afinidad positiva fuerte.
Un grupo de recursos sigue al grupo para el cual tiene una afinidad positiva fuerte. Si el grupo de recursos de destino se reubica en otro nodo, el grupo de recursos de origen cambia automáticamente al mismo nodo que el destino. No obstante, se impide el failover de un grupo de recursos que declara una afinidad positiva fuerte en un nodo en el que aún no se ejecuta el destino de la afinidad.
Por ejemplo, un grupo de recursos rg1 declara una afinidad positiva fuerte para el grupo de recursos rg2. Si se produce el failover de rg2 en otro nodo, rg1 también realiza un failover en ese nodo. Este failover se produce incluso si todos los recursos de rg1 están en funcionamiento. Sin embargo, si un recurso de rg1 intenta realizar un failover de rg1 en un nodo en el que no se ejecuta rg2, este intento se bloquea.
El origen de una afinidad positiva fuerte puede estar fuera de línea en todos los nodos cuando se pone en línea el destino de la afinidad positiva fuerte. En esta situación, el origen de la afinidad positiva fuerte se pone en línea automáticamente en el mismo nodo que el destino.
Por ejemplo, un grupo de recursos rg1 declara una afinidad positiva fuerte para el grupo de recursos rg2. Ambos grupos de recursos están inicialmente fuera de línea en todos los nodos. Si un administrador pone en línea rg2 en un nodo, rg1 se pone en línea automáticamente en el mismo nodo.
Puede utilizar el comando clresourcegroup suspend para evitar que un grupo de recursos se ponga en línea automáticamente debido a afinidades fuertes o la reconfiguración de un cluster.
Si necesita que se permita el failover de un grupo de recursos que declara una afinidad positiva fuerte, debe delegar el failover. Para obtener más información, consulte Delegación del failover o switchover de un grupo de recursos.
Ejemplo 56 Cómo forzar la colocación de un grupo de recursos con otro grupo de recursosEn este ejemplo, se muestra el comando para modificar el grupo de recursos rg1 a fin de declarar una afinidad positiva fuerte para el grupo de recursos rg2. Como resultado de esta relación de afinidad, rg1 solo se pone en línea en los nodos donde se ejecuta rg2. En este ejemplo, se asume que existen ambos grupos de recursos.
# clresourcegroup set -p RG_affinities=++rg2 rg1
Un servicio que está representado por un grupo de recursos puede utilizar un servicio de un segundo grupo de recursos. Como resultado, estos servicios se ejecutan con mayor eficacia si lo hacen en el mismo nodo. Por ejemplo, una aplicación que utiliza una base de datos se ejecuta con mayor eficacia si la aplicación y la base de datos se ejecutan en el mismo nodo. No obstante, los servicios se pueden ejecutar en nodos distintos porque la disminución de la eficacia genera menos interrupciones que los failovers adicionales de los grupos de recursos.
En esta situación, especifique que se deben colocar ambos grupos de recursos si es posible. Para especificar la colocación preferida de un grupo de recursos con otro grupo de recursos, declare en el grupo de recursos una afinidad positiva débil por el otro grupo de recursos.
# clresourcegroup set|create -p RG_affinities=+target-rg source-rg
Especifica el grupo de recursos que actúa como origen de la afinidad positiva débil. Este grupo de recursos es el grupo en el que se declara una afinidad positiva débil para otro grupo de recursos.
Especifica el grupo de recursos que actúa como destino de la afinidad positiva débil. Este grupo de recursos es el grupo para el que se declara una afinidad positiva débil.
Al declarar una afinidad positiva débil en un grupo de recursos para otro grupo, se incrementa la probabilidad de que ambos grupos se ejecuten en el mismo nodo. El origen de una afinidad positiva débil primero se pone en línea en un nodo en el que ya se ejecuta el destino de la afinidad. No obstante, el origen de una afinidad positiva débil no realiza un failover si un supervisor de recursos provoca el failover del destino de la afinidad. Del mismo modo, el origen de una afinidad positiva débil no realiza un failover si se efectúa un switchover del destino de la afinidad. En ambas situaciones, el origen permanece en línea en el nodo en el que ya se ejecuta el origen.
En este ejemplo, se muestra el comando para modificar el grupo de recursos rg1 para que declare una afinidad positiva débil para el grupo de recursos rg2. Como resultado de esta relación de afinidad, rg1 y rg2 primero se ponen en línea en el mismo nodo. Pero si un recurso de rg2 provoca el failover de rg2, rg1 permanece en línea en el nodo en el que primero se pusieron en línea los grupos de recursos. En este ejemplo, se asume que existen ambos grupos de recursos.
# clresourcegroup set -p RG_affinities=+rg2 rg1
Cada grupo de recursos de un conjunto de grupos puede ejercer la misma carga en el cluster. En esta situación, si se distribuyen los grupos de recursos de manera uniforme entre los nodos del cluster, se puede equilibrar la carga en el cluster.
Para distribuir un conjunto de grupos de recursos de manera uniforme entre nodos del cluster, declare en cada grupo una afinidad negativa débil para los otros grupos del conjunto.
# clresourcegroup set|create -p RG_affinities=neg-affinity-list source-rg
Especifica el grupo de recursos que actúa como origen de la afinidad negativa débil. Este grupo de recursos es el grupo en el que se declara una afinidad negativa débil para otros grupos de recursos.
Especifica una lista separada por comas de afinidades negativas débiles entre el grupo de recursos de origen y los grupos de recursos que actúan como el destino de la afinidad negativa débil. Los grupos de recursos de destino son los grupos para el que se declara una afinidad negativa débil.
Al declarar una afinidad negativa débil en un grupo de recursos para otros grupos, se garantiza que el grupo de recursos siempre se pondrá en línea en el nodo con menor carga del cluster. En ese nodo se ejecuta la menor cantidad de los otros grupos de recursos. Por lo tanto, se infringe la menor cantidad posible de afinidades negativas débiles.
Ejemplo 58 Distribución uniforme de un conjunto de grupos de recursos entre nodos del clusterEn este ejemplo, se muestran los comandos para modificar los grupos de recursos rg1, rg2, rg3 y rg4 a fin de garantizar que esos grupos se distribuyan de manera uniforme entre los nodos disponibles del cluster. En este ejemplo, se asume que existen los grupos de recursos rg1, rg2, rg3 y rg4.
# clresourcegroup set -p RG_affinities=-rg2,-rg3,-rg4 rg1 # clresourcegroup set -p RG_affinities=-rg1,-rg3,-rg4 rg2 # clresourcegroup set -p RG_affinities=-rg1,-rg2,-rg4 rg3 # clresourcegroup set -p RG_affinities=-rg1,-rg2,-rg3 rg4
Un cluster puede configurarse para ejecutar una combinación de servicios críticos y no críticos. Por ejemplo, una base de datos que admite un servicio al cliente crítico puede ejecutarse en el mismo cluster que las tareas de investigación no críticas.
Para garantizar que los servicios no críticos no afecten el rendimiento del servicio crítico, especifique que este último tiene prioridad. Al especificar que el servicio crítico tiene prioridad, impedirá que los servicios no críticos se ejecuten en el mismo nodo que él.
Cuando todos los nodos están en funcionamiento, el servicio crítico se ejecuta en un nodo distinto al de los servicios no críticos. Sin embargo, un error en el servicio crítico puede provocar el failover del servicio en un nodo en el que se ejecutan los servicios no críticos. En esta situación, los servicios no críticos se desconectan de inmediato para garantizar que los recursos informáticos del nodo estén completamente dedicados al servicio crítico.
Para especificar que un servicio crítico tiene prioridad, declare en el grupo de recursos de cada servicio no crítico una afinidad negativa fuerte para el grupo que contiene el servicio crítico.
# clresourcegroup set|create -p RG_affinities=--critical-rg noncritical-rg
Especifica el grupo de recursos que contiene un servicio no crítico. Este grupo de recursos es el grupo en el que se declara una afinidad negativa fuerte para otro grupo de recursos.
Especifica el grupo de recursos que contiene el servicio crítico. Este grupo de recursos es el grupo para el que se declara una afinidad negativa fuerte.
Un grupo de recursos se separa del grupo para el cual tiene una afinidad negativa fuerte.
El origen de una afinidad negativa fuerte puede estar fuera de línea en todos los nodos cuando se pone fuera de línea el destino de la afinidad negativa fuerte. En esta situación, el origen de la afinidad negativa fuerte se pone en línea automáticamente. En general, el grupo de recursos se pone en línea en el nodo de mayor preferencia, según el orden de los nodos en la lista y las afinidades declaradas.
Por ejemplo, un grupo de recursos rg1 declara una afinidad negativa fuerte para el grupo de recursos rg2. El grupo de recursos rg1 está inicialmente fuera de línea en todos los nodos, mientras que el grupo de recursos rg2 está en línea en un nodo. Si un administrador pone fuera de línea rg2, rg1 se pone en línea automáticamente.
Puede utilizar el comando clresourcegroup suspend para evitar que el origen de una afinidad negativa fuerte se ponga en línea automáticamente debido a afinidades fuertes o la reconfiguración de un cluster.
Ejemplo 59 Especificación de la prioridad de un servicio críticoEn este ejemplo, se muestran los comandos para modificar los grupos de recursos ncrg1 y ncrg2 no críticos a fin de garantizar que el grupo de recursos crítico mcdbrg tenga prioridad sobre ellos. En este ejemplo, se asume que existen los grupos de recursos mcdbrg, ncrg1 y ncrg2.
# clresourcegroup set -p RG_affinities=--mcdbrg ncrg1 ncrg2
El grupo de recursos de origen de una afinidad positiva fuerte no puede realizar un failover o switchover en un nodo en el que no se ejecuta el destino de la afinidad. Si necesita que se permita el failover o switchover del grupo de recursos de origen de una afinidad positiva fuerte, debe delegar el failover al grupo de recursos de destino. Cuando se produce el failover del destino de la afinidad, se fuerza el failover del origen de la afinidad con el destino.
Para delegar el failover o switchover de un grupo de recursos a otro grupo de recursos, declare en el grupo una afinidad positiva fuerte con delegación de failover para el otro grupo.
# clresourcegroup set|create source-rg -p RG_affinities=+++target-rg
Especifica el grupo de recursos que delegará el failover o switchover. Este grupo de recursos es el grupo en el que se declara una afinidad positiva fuerte con delegación de failover para otro grupo de recursos.
Especifica el grupo de recursos al que source-rg delegará el failover o switchover. Este grupo de recursos es el grupo para el que se declara una afinidad positiva fuerte con delegación de failover.
Un grupo de recursos puede declarar una afinidad positiva fuerte con delegación de failover para un grupo de recursos como máximo. Sin embargo, un determinado grupo de recursos puede ser el destino de afinidades positivas fuertes con delegación de failover declaradas por cualquier cantidad de otros grupos de recursos.
Una afinidad positiva fuerte con delegación de failover no es completamente simétrica. El destino puede ponerse en línea mientras el origen permanece fuera de línea. Sin embargo, si el destino está fuera de línea, el origen no puede ponerse en línea.
Si el destino declara una afinidad positiva fuerte con delegación de failover para un tercer grupo de recursos, el failover o switchover se vuelve a delegar al tercer grupo. El tercer grupo de recursos realiza el failover o switchover, lo que fuerza a su vez el failover o switchover de los otros grupos.
Ejemplo 60 Delegación del failover o switchover de un grupo de recursosEn este ejemplo, se muestra el comando para modificar el grupo de recursos rg1 a fin de declarar una afinidad positiva fuerte con delegación de failover para el grupo de recursos rg2. Como resultado de esta relación de afinidad, rg1 delega el failover o switchover a rg2. En este ejemplo, se asume que existen ambos grupos de recursos.
# clresourcegroup set -p RG_affinities=+++rg2 rg1
Puede combinar varias afinidades para crear comportamientos más complejos. Por ejemplo, un servidor de réplica relacionado puede registrar el estado de una aplicación. Los requisitos de selección de nodos para este ejemplo son los siguientes:
El servidor de réplica se debe ejecutar en un nodo diferente al de la aplicación.
Si la aplicación efectúa un failover desde su nodo actual, debe realizar un failover al nodo en el que se ejecuta el servidor de réplica.
Si la aplicación efectúa un failover al nodo en el que se ejecuta el servidor de réplica, el servidor debe realizar un failover a otro nodo. Si no hay ningún otro nodo disponible, el servidor de réplica debe ponerse fuera de línea.
Para cumplir estos requisitos, puede configurar grupos de recursos para la aplicación y el servidor de réplica como se indica a continuación:
El grupo de recursos que contiene la aplicación declara una afinidad positiva débil para el grupo de recursos que contiene el servidor de réplica.
El grupo de recursos que contiene el servidor de réplica declara una afinidad negativa fuerte para el grupo de recursos que contiene la aplicación.
En este ejemplo, se muestran los comandos para combinar afinidades entre los siguientes grupos de recursos.
El grupo de recursos app-rg representa una aplicación cuyo estado se registra mediante un servidor de réplica.
El grupo de recursos rep-rg representa el servidor de réplica.
En este ejemplo, los grupos de recursos declaran las afinidades como se indica a continuación:
El grupo de recursos app-rg declara una afinidad positiva débil para el grupo de recursos rep-rg.
El grupo de recursos rep-rg declara una afinidad negativa fuerte para el grupo de recursos app-rg.
En este ejemplo, se asume que existen ambos grupos de recursos.
# clresourcegroup set -p RG_affinities=+rep-rg app-rg # clresourcegroup set -p RG_affinities=--app-rg rep-rg
El administrador de clusters puede especificar afinidades entre un grupo de recursos de un cluster de zona y otro grupo de un cluster de zona o un grupo del cluster global.
Puede utilizar el siguiente comando para especificar la afinidad entre los grupos de recursos de los clusters de zona.
# clresourcegroup set -p RG_affinities=affinity-typetarget-zc:target-rg source-zc:source-rg
El grupo de recursos de un cluster de zona puede tener uno de los siguientes tipos de afinidad:
+ (positiva débil)
++ (positiva fuerte)
+++ (positiva fuerte con delegación de failover)
- (negativa débil)
-- (negativa fuerte)
En este ejemplo, se muestra el comando para especificar una afinidad positiva fuerte entre grupos de recursos de clusters de zona.
El grupo de recursos RG1 de un cluster de zona ZC1 declara una afinidad positiva fuerte para un grupo de recursos RG2 de un cluster de zona ZC2.
Si necesita especificar una afinidad positiva fuerte entre un grupo de recursos RG1 de un cluster de zona ZC1 y un grupo de recursos RG2 de otro cluster de zona ZC2, utilice el siguiente comando:
# clresourcegroup set -p RG_affinities=++ZC2:RG2 ZC1:RG1Ejemplo 63 Especificación de una afinidad negativa fuerte entre un grupo de recursos de un cluster de zona y un grupo de recursos del cluster global
En este ejemplo, se muestra el comando para especificar una afinidad negativa fuerte entre un grupo de recursos de un cluster de zona y un grupo de recursos del cluster global. Si necesita especificar una afinidad negativa fuerte entre un grupo de recursos RG1 de un cluster de zona ZC1 y un grupo de recursos RG2 del cluster global, utilice el siguiente comando:
# clresourcegroup set -p RG_affinities=--global:RG2 ZC1:RG1