Configuración de StyleBook

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.

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.

StyleBook para crear una configuración básica de equilibrio de carga