Utilice el equilibrio de carga basado en reglas para ajustar cuándo y porqué los paquetes se envían a qué servidores. Load Balancer examina todas las normas que se añaden, desde la primera prioridad a la última, se detiene en la primera norma que es cierta y luego equilibra la carga del contenido entre todos los servidores asociados a la norma. Ya se ha equilibrado la carga basada en el destino y el puerto, pero si se utilizan normas se amplía la capacidad de distribuir conexiones.
En la mayoría de los casos, al configurar normas se debe configurar una norma siempre cierta para poder detectar cualquier petición pasada por otras normas de prioridad más altas. Este valor por omisión puede ser la respuesta "Lo sentimos, el sitio está inactivo actualmente, inténtelo más adelante" cuando los demás servidores no pueden aceptar la petición de cliente.
Debe utilizar el equilibrio de carga basado en normas con Dispatcher y Site Selector cuando por alguna razón desea utilizar un subconjunto de servidores. Siempre debe utilizar normas para el componente CBR.
Puede elegir entre los siguientes tipos de normas:
Antes de empezar a añadir normas a la configuración, planifique la lógica que desea que sigan las normas.
Todas las reglas tienen un nombre, un tipo, una prioridad y pueden tener un inicio del rango y un final del rango, junto con un conjunto de servidores. Además, la norma de tipo contenido para el componente CBR tiene asociado un patrón de expresión regular coincidente. (Si desea ver ejemplos y casos de cómo utilizar la norma de contenido y la sintaxis de patrón válida para la norma de contenido, consulte el Apéndice B. Sintaxis de la norma de contenido (patrón)).
Las normas se evalúen en orden de prioridad. Es decir, una norma con prioridad 1 (número más bajo) se evalúa antes que una norma con prioridad 2 (número más alto). Se utilizará la primera norma que se satisfaga. Una vez que se ha satisfecho una norma, no se evalúan más normas.
Para que una norma se satisfaga, debe cumplir dos condiciones:
Si una norma no tiene asociado ningún servidor, sólo es necesario que la norma cumpla la condición uno para que se satisfaga. En este caso, Dispatcher descartará la petición de conexión, Site Selector devolverá la petición del servidor de nombres con un error, y CBR causará que Proxy de memoria caché devuelva una página de error.
Si no se satisface ninguna norma, Dispatcher seleccionará un servidor del total de servidores disponibles en el puerto, Site Selector seleccionará un servidor del total de servidores disponibles en el nombre de sitio y CBR provocará que Proxy de memoria caché devuelva una página de error.
Este tipo de norma está disponible en el componente Dispatcher, CBR o Site Selector.
Utilice normas basadas en la dirección IP de cliente si desea filtrar los clientes y asignar los recursos en función del lugar de donde proceden.
Por ejemplo, si observa que hay demasiado tráfico sin pagar en la red, y por lo tanto no deseado, que procede de un grupo específico de direcciones IP. Cree una norma utilizando el mandato dscontrol rule, por ejemplo:
dscontrol rule add 9.67.131.153:80:ni type ip
beginrange 9.0.0.0 endrange 9.255.255.255
Esta norma "ni" filtra cualquier conexión de clientes no deseados. A continuación, añada a la norma los servidores a los que se podrá acceder, o si no añade ningún servidor a la norma, los servidores no atenderán las peticiones que procedan de las direcciones 9.x.x.x.
Este tipo de norma sólo está disponible en el componente Dispatcher.
Utilice normas basadas en el puerto de cliente, si los clientes utilizan algún tipo de software que solicita un puerto específico de TCP/IP cuando realiza peticiones.
Por ejemplo, cree una norma que indique que todas las peticiones que tengan el puerto de cliente 10002 podrán utilizar un conjunto de servidores rápidos especiales porque sabe que todas las peticiones de cliente con dicho puerto proceden de un grupo selecto de clientes.
Este tipo de norma está disponible en el componente Dispatcher, CBR o Site Selector.
Utilice reglas basadas en la hora del día por razones de planificación de capacidad. Por ejemplo, si se accede al sitio Web mayormente durante el mismo grupo de horas cada día, puede dedicar cinco servidores adicionales durante el periodo de hora punta.
Otra razón por la que puede utilizar una norma basada en la hora del día es cuando desea apagar algunos de los servidores para realizar su mantenimiento cada día a medianoche, por lo que puede establecer una norma que excluya estos servidores durante el periodo de mantenimiento necesario.
Este tipo de norma sólo está disponible en el componente Dispatcher.
Utilice normas basadas en el contenido del campo de “tipo de servicio” (TOS) en la cabecera IP. Por ejemplo, si una petición de cliente llega con un valor TOS que indica servicio normal, puede direccionarse a un conjunto de servidores. Si una petición de cliente diferente llega con un valor de TOS distinto que indica una prioridad de servicio más alta, puede direccionarse a un grupo de servidores distinto.
La norma TOS permite configurar completamente cada bit del byte TOS utilizando el mandato dscontrol rule. Para bits significativos que desee hacer coincidir en el byte TOS, utilice 0 o 1. Si no, utilice el valor x. A continuación se muestra un ejemplo de adición de una norma TOS:
dscontrol rule add 9.67.131.153:80:tsr type service tos 0xx1010x
Este tipo de norma está disponible en los componentes Dispatcher y CBR.
Utilice reglas basadas en conexiones por segundo si necesita compartir algunos de los servidores con otras aplicaciones. Por ejemplo, puede establecer dos normas:
O, puede utilizar Telnet y reservar dos de los cinco servidores para Telnet, excepto cuando las conexiones por segundo superen un determinado nivel. De esta forma, Dispatcher equilibrará la carga en todos los cinco servidores durante las horas punta.
Si establece la opción de evaluación de normas "upserversonrule" junto con la norma de tipo "conexión": cuando se utiliza la norma de tipo conexión y se establece la opción upserversonrule, si algunos de los servidores del conjunto de servidores están inactivos, puede garantizar que no se sobrecargarán los servidores restantes. Consulte el apartado Opción de evaluación del servidor para normas para obtener más información.
Este tipo de norma está disponible en el componente Dispatcher o CBR.
Utilice reglas basadas en el total de conexiones activas en un puerto si los servidores se sobrecargan y empiezan a descartar paquetes. Determinados servidores Web seguirán aceptando conexiones incluso cuando no tengan suficientes hebras para responder a la petición. Como resultado, las peticiones de cliente excederán el tiempo de espera y no se atenderá al cliente procedente del sitio Web. Utilice normas basadas en conexiones activas para equilibrar la capacidad dentro de una agrupación de servidores.
Por ejemplo, sabe por experiencia que los servidores dejarán de dar servicio una vez que han aceptado 250 conexiones. Cree una norma utilizando el mandato dscontrol rule o el mandato cbrcontrol rule, por ejemplo:
dscontrol rule add 130.40.52.153:80:pool2 type active
beginrange 250 endrange 500
o
cbrcontrol rule add 130.40.52.153:80:pool2 type active
beginrange 250 endrange 500
A continuación, añada a la norma los servidores actuales y a algunos servidores adicionales, que si no se utilizarán para otro proceso.
Las normas de ancho de banda reservado y ancho de banda compartido sólo están disponibles en el componente Dispatcher.
Para las reglas de ancho de banda, Dispatcher calcula el ancho de banda como la velocidad a la que un conjunto de servidores entregan los datos a los clientes. Dispatcher realiza un seguimiento de la capacidad en los niveles de servidor, norma, puerto, clúster y ejecutor. Para cada uno de estos niveles, hay un campo de contador de bytes: kilobytes transferidos por segundo. Dispatcher calcula estas velocidades a un intervalo de 60 segundos. Puede ver estas velocidades en la GUI o en la salida de un informe de línea de mandatos.
La norma de ancho de banda reservado permite controlar el número de kilobytes por segundos que entregan un conjunto de servidores. Si se establece un umbral (asignando un rango de ancho de banda específico) para cada conjunto de servidores en toda la configuración, puede controlar y garantizar la cantidad de ancho de banda que utiliza cada combinación de clúster-puerto.
A continuación se muestra un ejemplo de adición de una norma de ancho de banda reservado:
dscontrol rule add 9.67.131.153:80:rbw type reservedbandwidth
beginrange 0 endrange 300
El inicio del rango y el final del rango se especifican en kilobytes por segundo.
Antes de configurar la norma de ancho de banda compartido, debe especificar la cantidad máxima de ancho de banda (kilobytes por segundo) que puede compartirse en el nivel de ejecutor o clúster utilizando el mandato dscontrol executor o dscontrol cluster con la opción sharedbandwidth. El valor de sharebandwidth no debe exceder el ancho de banda total (capacidad total de la red) disponible. Si se utiliza el mandato dscontrol para establecer el ancho de banda compartido sólo se proporciona un límite superior para la norma.
A continuación se muestran ejemplos de la sintaxis de mandato:
dscontrol executor set sharedbandwidth tamaño
dscontrol cluster [add | set] 9.12.32.9 sharedbandwidth tamaño
El tamaño para sharedbandwidth es un valor entero (kilobytes por segundo). El valor predeterminado es cero. Si el valor es cero, el ancho de banda no puede compartirse.
El ancho de banda compartido en el nivel de clúster permite que el clúster utilice el máximo ancho de banda especificado. Mientras el ancho de banda utilizado por el clúster esté por debajo de la cantidad especificada, esta norma se evaluará como true. Si el ancho de banda total utilizado es superior a la cantidad especificada, esta norma se evaluará como false.
Si se comparte el ancho de banda en el nivel de ejecutor, se permitirá que toda la configuración de Dispatcher comparta una cantidad máxima de ancho de banda. Mientras el ancho de banda utilizado en el nivel de ejecutor esté por debajo de la cantidad especificada, esta norma se evaluará como true. Si el ancho de banda total utilizado es superior al definido, esta norma se evaluará como false.
A continuación se muestran ejemplos de la adición o definición de una norma de ancho de banda compartido:
dscontrol rule add 9.20.30.4:80:shbw type sharedbandwidth sharelevel valor
dscontrol rule set 9.20.34.11:80:shrule sharelevel valor
El valor para sharelevel es executor o cluster. Sharelevel es un parámetro necesario en la norma de ancho de banda compartido.
Dispatcher permite asignar un ancho de banda específico a conjuntos de servidores dentro de la configuración mediante la norma de ancho de banda reservado. Si especifica un inicio y un final del rango puede controlar el rango de kilobytes entregados por un conjunto de servidores a los clientes. Cuando la norma ya no se evalúe como true (se excede el final del rango), se evaluará la norma con prioridad más baja siguiente. Si la norma de prioridad más baja siguiente es una norma "siempre cierta", se podría seleccionar un servidor para responder al cliente con una respuesta de "sitio ocupado".
Por ejemplo, suponga un grupo de tres servidores en el puerto 2222. Si el ancho de banda reservado se establece en 300, la cantidad máxima de kbytes por segundo es de 300, en un periodo de 60 segundos. Cuando esta velocidad se excede, la norma ya no se evaluará como true. Si ésta fuera la única norma, Dispatcher seleccionaría uno de los tres servidores para manejar la petición. Si hubiera una norma "siempre cierta" con prioridad más baja, la petición podría dirigirse a otro servidor y responderse con "sitio ocupado".
La norma de ancho de banda compartido puede proporcionar a los clientes acceso a servidores adicionales. En concreto, cuando se utiliza como una norma de prioridad más baja después de una norma de ancho de banda reservado, un cliente seguirá pudiendo acceder a un servidor incluso si se ha excedido el ancho de banda reservado.
Por ejemplo, si utiliza una norma de ancho de banda compartido después de una norma de ancho de banda reservado, puede permitir a los clientes que accedan a los tres servidores de una forma controlada. Mientras haya un ancho de banda compartido para utilizarse, la norma se evaluará como true y se otorgará el acceso. Si no hay ningún ancho de banda compartido disponible, la norma no es true y se evalúa la norma siguiente. Si a continuación hay una norma "siempre cierta", la petición puede redirigirse según sea necesario.
Si utiliza el ancho de banda reservado y compartido tal como se describe en el ejemplo anterior, se podrá ejercer una mayor flexibilidad al otorgar (o denegar) acceso a los servidores. Los servidores de un puerto específico pueden limitarse al uso de un ancho de banda, mientras que otros pueden utilizar un ancho de banda adicional mientras esté disponible.
Este tipo de norma sólo está disponible en el componente Selector de sitio.
Para la norma de toda la métrica, elija una métrica del sistema (cpuload, memload, o su propio script de métrica de sistema personalizado) y el Site Selector compara el valor de métrica del sistema (devuelto por el agente de Metric Server que reside en cada servidor con equilibrio de carga) con el inicio y el final del rango que se especifica en la norma. El valor de métrica del sistema actual para todos los servidores del conjunto de servidores debe estar dentro del rango para que se active la norma.
A continuación se muestra un ejemplo de adición a la configuración de una norma de toda la métrica:
sscontrol rule add dnsload.com:allrule1 type metricall
metricname cpuload beginrange 0 endrange 100
Este tipo de norma sólo está disponible en el componente Selector de sitio.
Para la regla de media de la métrica, elija una métrica del sistema (cpuload, memload, o su propio script de métrica de sistema personalizado) y el Site Selector compara el valor de métrica del sistema (devuelto por el agente de Metric Server que reside en cada servidor con equilibrio de carga) con el inicio y el final del rango que se especifica en la regla. La media de los valores de métrica del sistema actuales para todos los servidores del conjunto de servidores debe estar dentro del rango para que se active la norma.
A continuación se muestra un ejemplo de adición a la configuración de una norma de media de la métrica:
sscontrol rule add dnsload.com:avgrule1 type metricavg
metricname cpuload beginrange 0 endrange 100
Este tipo de norma está disponible en el componente Dispatcher, CBR o Site Selector.
Puede crearse una norma que sea “siempre cierta.” Dicha norma siempre estará seleccionada, a menos que los servidores asociados estén inactivos. Por esta razón, habitualmente debe tener una prioridad más baja que las otras normas.
También puede tener varias normas “siempre cierta”, con un conjunto de servidores asociado a cada una de ellas. Se selecciona la primera norma true que tenga un servidor disponible. Por ejemplo, suponga que tiene seis servidores. Desea que dos de ellos controlen el tráfico en todas las circunstancias, a menos los dos estén inactivos. Si los dos primeros servidores están inactivos, se recomienda disponer de un segundo conjunto de servidores que controle el tráfico. Si los cuatro servidores están inactivos, utilizará los dos últimos servidores para gestionar el tráfico. Puede establecer hasta tres normas “siempre cierta”. Así pues siempre se seleccionará el primer conjunto de servidores siempre y cuando haya uno activo como mínimo. Si los dos están inactivos, se optará por uno del segundo conjunto y así sucesivamente.
Otro ejemplo sería si deseara una norma “siempre cierta” para asegurarse de que no se atenderá a los clientes entrantes si estos no coinciden con ninguna de las normas establecidas. Puede crear una norma utilizando el mandato dscontrol rule como la siguiente:
dscontrol rule add 130.40.52.153:80:jamais type true priority 100
Entonces no añadiría ningún servidor a la norma, lo que provocaría que los paquetes de clientes se dejaran sin respuesta.
Puede definir más de una norma “siempre cierta” y, a partir de ahí, ajustar cuál se ejecuta cambiando los niveles de prioridad.
Este tipo de norma está disponible en el componente CBR o el componente Dispatcher (cuando se utiliza el método de reenvío CBR de Dispatcher).
Se recomienda utilizar normas de tipo de contenido para enviar peticiones a conjuntos de servidores establecidos específicamente para manejar algún subconjunto del tráfico del sitio. Por ejemplo, si desea utilizar un conjunto de servidores para manejar todas las peticiones cgi-bin, otro conjunto para manejar todas las peticiones de audio de modalidad continua y un tercer conjunto para manejar las demás peticiones. Añada una norma con un patrón que coincida con la vía de acceso al directorio cgi-bin, otra que coincida con el tipo de archivo de los archivos de audio de modalidad continua y una tercera norma siempre cierta para manejar el resto del tráfico. A continuación, añada los servidores adecuados a cada una de las normas.
Importante: si desea ver ejemplos y casos de cómo utilizar la norma de contenido y la sintaxis de patrón válida para la norma de contenido, consulte el Apéndice B. Sintaxis de la norma de contenido (patrón).
Con la alteración temporal de afinidad entre puertos, puede alterar temporalmente la permanencia en memoria de un puerto para un servidor específico. Por ejemplo, si utiliza una norma para limitar la cantidad de conexiones para cada servidor de aplicaciones y tiene un servidor de desbordamiento con una norma siempre cierta que indica “por favor, inténtelo más adelante" para dicha aplicación. El puerto tiene un valor de permanencia en memoria de 25 minutos, por lo tanto no desea que el cliente sea permanente en memoria para dicho servidor. Con la alteración temporal de afinidad entre puertos, puede cambiar el servidor de desbordamiento para alterar temporalmente la afinidad que normalmente está asociada a dicho puerto. La próxima vez que el cliente emite una petición al clúster, se equilibra su carga con el mejor servidor de aplicaciones disponible, no el servidor de desbordamiento.
Consulte el apartado dscontrol server — configurar servidores, para obtener información detallada sobre la sintaxis del mandato de alteración temporal de afinidad entre puertos, utilizando la opción sticky del servidor .
Para añadir normas mediante el mandato dscontrol rule add, edite el archivo de configuración de ejemplo o utilice la interfaz gráfica de usuario (GUI). Puede añadir una o más normas a cada puerto definido.
Es un proceso de dos pasos: añadir la norma y definir qué servidores la atenderán si la norma es cierta. Por ejemplo, el administrador del sistema desea realizar un seguimiento del uso de los servidores proxy que realiza cada una de las secciones del sitio. Se han otorgado direcciones IP a cada sección. Cree el primerconjunto de normas basándose en la dirección IP de cliente para separar la carga de cada sección:
dscontrol rule add 130.40.52.153:80:div1 type ip b 9.1.0.0 e 9.1.255.255
dscontrol rule add 130.40.52.153:80:div2 type ip b 9.2.0.0 e 9.2.255.255
dscontrol rule add 130.40.52.153:80:div3 type ip b 9.3.0.0 e 9.3.255.255
A continuación, añada un servidor distinto para cada norma y mida la carga en cada uno de los servidores para poder facturar correctamente a la sección por los servicios que está utilizando. Por ejemplo:
dscontrol rule useserver 130.40.52.153:80:div1 207.72.33.45
dscontrol rule useserver 130.40.52.153:80:div2 207.72.33.63
dscontrol rule useserver 130.40.52.153:80:div3 207.72.33.47
La opción de evaluación del servidor sólo está disponible en el componente Dispatcher.
En el mandato dscontrol rule hay una opción de evaluación del servidor para normas. Utilice la opción evaluate para optar por evaluar la condición de la norma en todos los servidores del puerto o evaluar la condición de la norma sólo en los servidores incluidos en la norma. (En versiones anteriores de Load Balancer, sólo se podía medir la condición de cada norma en todos los servidores del puerto).
A continuación se muestran ejemplos de la adición o definición de la opción de evaluación en una norma de ancho de banda reservado:
dscontrol rule add 9.22.21.3:80:rbweval type reservedbandwidth evaluate level
dscontrol rule set 9.22.21.3:80:rbweval evaluate nivel
El nivel de la evaluación puede establecerse en port, rule o upserversonrule. El valor por omisión es port.
La opción de medir la condición de la norma en todos los servidores a los que se aplica le permite configurar dos normas con las siguientes características:
El resultado es que cuando el tráfico excede el umbral de los servidores a los que se aplica la primera norma, el tráfico se envía al servidor “sitio ocupado" al que se aplica la segunda norma. Cuando el tráfico está por debajo del umbral de los servidores en la primera regla, el tráfico nuevo continúa de nuevo en los servidores en la primera regla.
Si utiliza las dos normas del ejemplo anterior, si establece la opción de evaluación en port para la primera norma (evaluar condición de la norma en todos los servidores del puerto), cuando el tráfico excede el umbral de dicha norma, se envía al servidor “sitio ocupado" asociado a la segunda norma.
La primera norma mide todo el tráfico del servidor (incluido el servidor “sitio ocupado") en el puerto para determinar si el tráfico excede el umbral. Cuando la congestión disminuye en todos los servidores asociados a la primera norma, puede producirse un resultado involuntario en el que el tráfico sigue dirigiéndose al servidor “sitio ocupado" porque el tráfico en el puerto todavía supera el umbral de la primera norma.