StyleBook para crear una configuración básica de equilibrio de carga
En esta sección, diseñará un StyleBook que cree una configuración de equilibrio de carga que incluye un servidor virtual de equilibrio de carga, un grupo de servicios y una lista de servicios. El StyleBook enlaza los servicios al grupo de servicios y enlaza el grupo de servicios al servidor virtual.
Para crear una configuración básica de equilibrio de carga, utilice el ejemplo StyleBook,lb-vserver que creó en StyleBook para crear un servidorvirtual de equilibrio de carga y guárdelo como basic-lb-config.yaml.
Header
Para crear este StyleBook, actualice la sección de encabezado. Esta sección es similar a la sección de encabezado que creó en StyleBook para crear un servidor virtual de equilibrio de carga.
Cambie el valor del nombre a basic-lb-config. Actualice la descripción y el nombre de visualización para describir el StyleBook. No es necesario cambiar los valores del espacio de nombres ni de la versión. Como ha cambiado el nombre, se crea un identificador único para este StyleBook en el sistema.
name: basic-lb-config
namespace: com.example.stylebooks
version: "0.1"
display-name: Load Balancing Configuration
description: This StyleBook defines a simple load balancing configuration.
schema-version: "1.0"
<!--NeedCopy-->
Importar StyleBooks
La sección Import-StyleBooks sigue siendo la misma. Se refiere al espacio de nombres netscaler.nitro.config para utilizar los objetos de configuración NITRO.
import-stylebooks:
-
namespace: netscaler.nitro.config
prefix: ns
version: "10.5"
<!--NeedCopy-->
Parámetros
Actualice la sección de parámetros para añadir dos parámetros más.
Los parámetros definen la lista de servicios o servidores y el puerto en el que los servicios escuchan. Los tres primeros parámetros name
, ip
y lb-alg
siguen siendo los mismos.
parameters:
-
name: name
type: string
label: Application Name
description: Give a name to the application configuration.
required: true
-
name: ip
type: ipaddress
label: Application Virtual IP (VIP)
description: The Application VIP that clients access
required: true
-
name: lb-alg
type: string
label: LoadBalancing Algorithm
description: Choose the loadbalancing algorithm (method) used for loadbalancing client requests between the application servers.
allowed-values:
- ROUNDROBIN
- LEASTCONNECTION
default: ROUNDROBIN
-
name: svc-servers
type: ipaddress[]
label: Application Server IPs
description: The IP addresses of all the servers of this application
required: true
-
name: svc-port
type: tcp-port
label: Server Port
description: The TCP port open on the application servers to receive requests.
default: 80
<!--NeedCopy-->
El parámetro svc-serversse agrega para aceptar una lista de direcciones IP de los servidores de fondo de la aplicación. svc-servers es un parámetro obligatorio, como se indica en required: true.
El segundo parámetro, svc-port, indica el número de puerto en el que escuchan los servidores. El número de puerto predeterminado es 80, a menos que el usuario lo especifique.
Componentes
También debe actualizar la sección de componentes para definir más componentes, de modo que utilicen los dos parámetros nuevos y creen la configuración completa de equilibrio de carga.
Para este ejemplo, debe escribir la sección de componentes de la siguiente manera:
components:
-
name: lbvserver-comp
type: ns::lbvserver
properties:
name: $parameters.name + "-lb"
servicetype: HTTP
ipv46: $parameters.ip
port: 80
lbmethod: $parameters.lb-alg
components:
-
name: svcg-comp
type: ns::servicegroup
properties:
name: $parameters.name + "-svcgrp"
servicetype: HTTP
components:
-
name: lbvserver-svg-binding-comp
type: ns::lbvserver_servicegroup_binding
properties:
name: $parent.parent.properties.name
servicegroupname: $parent.properties.name
-
name: members-svcg-comp
type: ns::servicegroup_servicegroupmember_binding
repeat: $parameters.svc-servers
repeat-item: srv
properties:
ip: $srv
port: str($parameters.svc-port)
servicegroupname: $parent.properties.name
<!--NeedCopy-->
En este ejemplo, el componente original lbvserver-comp (del ejemplo anterior) ahora tiene un componente secundario llamado svcg-comp. El componente svcg-comp también tiene dos componentes secundarios. Al anidar un componente dentro de otro componente, el componente anidado puede crear objetos de configuración haciendo referencia a los atributos del componente principal. El componente anidado puede crear uno o más objetos para cada objeto creado en el componente principal.
El componente svcg-comp se utiliza para crear un grupo de servicios en la instancia de NetScaler utilizando los valores proporcionados para los atributos del recurso servicegroup
. En este ejemplo, especificará el valor estático de servicetype
, mientras que name obtiene su valor del parámetro de entrada. Consulte el nombre del parámetro definido en la sección de parámetros mediante la notación $parameters.name + “-svcgrp”, donde “-svcgrp” se añade (concatena) al nombre definido por elusuario.
El componente svcg-comp tiene dos componentes secundarios, lbvserver-svg-binding-comp y members-svcg-comp.
El primer componente secundario, lbvserver-svg-binding-comp, se utiliza para enlazar un objeto de configuración entre el grupo de servicios creado por su componente principal y el servidor virtual de equilibrio de carga (lbvserver
) creado por el componente principal del principal. La notación $principal, también llamada referencia principal, se utiliza para hacer referencia a entidades en los componentes principal. Por ejemplo, servicegroupname: $parent.properties.name hace referencia al grupo de servicios creado por el componente principal svcg-compy el nombre: $parent.parent.properties.name hace referencia al servidor virtual creado por el componente principal lbvserver-comp.
El componente members-svcg se utiliza para vincular los objetos de configuración de la lista de servicios al grupo de servicios creado por el componente principal. La creación de objetos de configuración enlazados se logra mediante el uso de la construcción derepeticiónde StyleBook para repetir la lista de servidores especificada en el parámetro svc-servers. Durante la iteración, este componente StyleBook crea un objeto de configuración NITRO de tipo servicegroup_servicegroupmember_binding para cada servicio (al que se hace referencia como srv
en la construcción repetiat-item ) del grupo de servicios, y establece el atributo ip en cada Objeto de configuración NITRO a la dirección IP del servidor correspondiente.
Por lo general, puede utilizar los componentes fijos de repetición y repeticiónde elementoen un componente para que ese componente genere varios objetos de configuración del mismo tipo. Puede asignar un nombre de variable al componente fijorepetiat-item, por ejemplo srv
, para designar el valor actual en la iteración. Este nombre de variable se hace referencia en las propiedades del mismo componente o en componentes secundarios como$<varname>
, por ejemplo, $srv.
En el ejemplo anterior, el anidamiento de los componentes ayuda a crear fácilmente la configuración. También puede crear la configuración sin anidar, como se muestra en el siguiente ejemplo:
components:
-
name: lbvserver-comp
type: ns::lbvserver
properties:
name: $parameters.name + "-lb"
servicetype: HTTP
ipv46: $parameters.ip
port: 80
lbmethod: $parameters.lb-alg
-
name: svcg-comp
type: ns::servicegroup
properties:
servicegroupname: $parameters.name + "-svcgrp"
servicetype: HTTP
-
name: lbvserver-svg-binding-comp
type: ns::lbvserver_servicegroup_binding
properties:
name: $components.lbvserver-comp.properties.name
servicegroupname: $components.svcg-comp.properties.servicegroupname
-
name: members-svcg-comp
type: ns::servicegroup_servicegroupmember_binding
repeat: $parameters.svc-servers
repeat-item: srv
properties:
ip: $srv
port: 80
servicegroupname: $components.svcg-comp.properties.servicegroupname
<!--NeedCopy-->
En este caso, aunque los componentes no estén anidados, la configuración de NetScaler generada es la misma que la de los componentes anidados utilizados anteriormente.
El orden en que se declaran los componentes en el StyleBook no afecta al orden de creación de los objetos de configuración. En este ejemplo, los componentes svcg-comp y lbvserver-comp, aunque se declararon en último lugar, deben crearse antes de compilar el segundo componente lbvserver-svg-binding-comp, ya que hay referencias directas a estos componentes en el segundo componente.
Nota
Por convención, los nombres de los StyleBooks, los parámetros, las sustituciones, los componentes y las salidas aparecen en minúsculas. Cuando contienen muchas palabras, están separadas por un carácter “-“. Por ejemplo
lb-bindings
,app-name
,rewrite-config
, y así sucesivamente. Otra convención es sufijar nombres de componentes con-comp
cadena.
Resultados
En esta sección, debe especificar qué expone el StyleBook a los usuarios (o a otros StyleBooks) después de crear una configuración. Por ejemplo, puede especificar que se muestren los objetos lbvserver
y servicegroup
de configuración que crea este StyleBook.
outputs:
-
name: lbvserver-comp
value: $components.lbvserver-comp
description: The component that builds the Nitro lbvserver configuration object
-
name: servicegroup-comp
value: $components.svcg-comp
description: The component that builds the Nitro servicegroup configuration object
<!--NeedCopy-->
La sección de salidas de un StyleBook es opcional. No es necesario que un StyleBook devuelva las salidas. Sin embargo, al devolver algunos componentes internos como salidas, permite que cualquier StyleBooks que importe este StyleBook tenga más flexibilidad. Esta funcionalidad resulta útil a la hora de crear un StyleBook compuesto.
Nota
Se recomienda exponer todo un componente del StyleBook en la sección de salidas, en lugar de solo una propiedad de un componente (por ejemplo, exponer todo el $components.lbvserver-comp en lugar de solo el nombre,$components.lbvserver-comp.properties.name). Agregue también una descripción a la salida que explique lo que representa la salida específica.
Crea su StyleBook
Ahora que ha definido todas las secciones requeridas de este StyleBook, reúna todas para crear su segundo StyleBook. Ya ha guardado este archivo StyleBook como basic-lb-config.yaml. Citrix recomienda utilizar el validador YAML integrado en StyleBooks para validar e importar el contenido YAML.
El contenido completo del archivo basic-lb-config.yaml se reproduce de la siguiente manera:
name: basic-lb-config
namespace: com.example.stylebooks
version: "0.1"
display-name: Load Balancing Configuration
description: This StyleBook defines a simple load balancing configuration.
schema-version: "1.0"
import-stylebooks:
-
namespace: netscaler.nitro.config
version: "10.5"
prefix: ns
parameters:
-
name: name
type: string
label: Application Name
description: Give a name to the application configuration.
required: true
-
name: ip
type: ipaddress
label: Application Virtual IP (VIP)
description: The Application VIP that clients access
required: true
-
name: lb-alg
type: string
label: LoadBalancing Algorithm
description: Choose the loadbalancing algorithm (method) used for loadbalancing client requests between the application servers.
allowed-values:
- ROUNDROBIN
- LEASTCONNECTION
default: ROUNDROBIN
-
name: svc-servers
type: ipaddress[]
label: Application Server IPs
description: The IP addresses of all the servers of this application
required: true
-
name: svc-port
type: tcp-port
label: Server Port
description: The TCP port open on the application servers to receive requests.
default: 80
components:
-
name: lbvserver-comp
type: ns::lbvserver
properties:
name: $parameters.name + "-lb"
servicetype: HTTP
ipv46: $parameters.ip
port: 80
lbmethod: $parameters.lb-alg
-
name: svcg-comp
type: ns::servicegroup
properties:
servicegroupname: $parameters.name + "-svcgrp"
servicetype: HTTP
-
name: lbvserver-svg-binding-comp
type: ns::lbvserver_servicegroup_binding
properties:
name: $components.lbvserver-comp.properties.name
servicegroupname: $components.svcg-comp.properties.servicegroupname
-
name: members-svcg-comp
type: ns::servicegroup_servicegroupmember_binding
repeat: $parameters.svc-servers
repeat-item: srv
properties:
ip: $srv
port: 80
servicegroupname: $components.svcg-comp.properties.servicegroupname
outputs:
-
name: lbvserver-comp
value: $components.lbvserver-comp
description: The component that builds the Nitro lbvserver configuration object
-
name: servicegroup-comp
value: $components.svcg-comp
description: The component that builds the Nitro servicegroup configuration object
<!--NeedCopy-->
Para empezar a usar su StyleBook para crear configuraciones, debe importarlo a NetScaler Console y, a continuación, usarlo. Para obtener más información, consulte Cómo utilizar StyleBooks definidos por el usuario.
También puede importar este StyleBook a otros StyleBooks y utilizar sus propiedades como se describe en la siguiente sección.