Application Delivery Management

Roles de instancia

En NetScaler Application Delivery Management (ADM), puede haber un caso en el que tenga que configurar varias instancias de NetScaler ADC para una sola aplicación, pero también en el que cada instancia de ADC requiera una configuración diferente para implementarlas. Un ejemplo de este caso es el predeterminado de Microsoft Skype Empresarial StyleBook.

Actualmente, StyleBooks admite la posibilidad de crear un paquete de configuración y aplicar la misma configuración en varias instancias de Citrix ADC. Tal caso en el que la configuración es idéntica en todas las instancias ADC, puede denominarse configuración simétrica.

Ahora, con la función «roles de instancia» de StyleBooks, puede crear una configuración asimétrica, es decir, un paquete de configuración que se puede aplicar en varias instancias de ADC, pero con diferentes configuraciones en diferentes instancias de ADC.

Cuando se utiliza un StyleBook con funciones de instancia para crear un paquete de configuración, a cada instancia de ADC de un paquete de configuración se le puede asignar una función diferente. Esta función determina los objetos de configuración del paquete de configuración que recibirá la instancia de ADC.

Puntos a tener en cuenta:

  • El conjunto de roles de instancia en un StyleBook se define al crear el StyleBook.
  • Los roles se asignan a una instancia de ADC específica al crear o actualizar el paquete de configuración.

Sección de roles de destino

Se introduce una nueva sección en un StyleBook llamada “roles de destino”, donde se declaran todos los roles admitidos por el StyleBook.

Esta sección suele colocarse después de la sección “Importar libros de estilos” de un StyleBook y antes de la sección de parámetros.

En el siguiente ejemplo de StyleBook, se definen dos funciones en la sección “funciones de destino”: A y B.

target-roles:

  -
   name: A
   name: B
     min-targets: 2
     max-targets: 5
<!--NeedCopy-->

Puede ver que el rol B también define dos sub-propiedades opcionales, min-targets y max-targets.

Aunque estas dos subpropiedades son opcionales, los objetivos mínimos especifican el número mínimo obligatorio de instancias de ADC a las que se les debe asignar esta función al crear un paquete de configuración a partir de este StyleBook, y los objetivos máximos especifican el número máximo de instancias de ADC a las que se les puede asignar esta función al crear un paquete de configuración a partir de este StyleBook.

Si no se especifican estas subpropiedades, no hay límite en el número de instancias ADC que se pueden configurar para ese rol. Si min-targets = 0, la configuración asociada a ese rol es opcional y si min-targets = 1, esa configuración es obligatoria y al menos se debe configurar una instancia ADC para ese rol.

Función “predeterminada”

Además de los roles explícitamente definidos, hay un rol implícito que tienen todos los StyleBooks, y ese rol se llama como un rol predeterminado. Este rol se puede usar como cualquier otro rol en un StyleBook. Al crear un paquete de configuración, si a una instancia de ADC no se le asigna un rol específico, la instancia se asigna implícitamente al rol «predeterminado». La instancia recibirá ahora todos los objetos de configuración generados por los componentes que tengan la función “predeterminada”.

Componentes con roles

Una vez definidas las funciones que admite un StyleBook (incluida la función “predeterminada”), las funciones se pueden utilizar en la sección de componentes de un StyleBook. Si quiere que un componente se implementación solo en instancias ADC que desempeñan un determinado rol, puede especificar el atributo roles como parte del componente, como se ilustra en el siguiente ejemplo de componente:

  -
    name: C1
    type: ns::lbvserver
    roles:
      - A
    properties:
      name: lb1
      servicetype: HTTP
      ipv46: 1.1.1.1
      port: 80
<!--NeedCopy-->

En el ejemplo anterior, el componente genera un “lbvserver” que se implementará en las instancias que desempeñen la función A. Tenga en cuenta que el atributo roles de un componente es una lista y que a un componente se le pueden asignar varias funciones. Estas funciones se habrían declarado en la sección “funciones de destino” del StyleBook.

Nota: Si un componente de un StyleBook no especifica un atributo de rol, los objetos de configuración generados por el componente se crean en todas las instancias de NetScaler ADC, independientemente de su rol. Puede utilizar esta función de forma eficaz para crear objetos de configuración que se puedan aplicar a todas las instancias de un paquete de configuración.

Supongamos que hay un StyleBook con dos roles definidos: A y B, y que contiene cuatro componentes.

  • El componente C1 tiene los roles A y B
  • El componente C2 tiene el rol B
  • El componente C3 no tiene ningún rol definido
  • El componente C4 tiene la función “predeterminada”

La sección de componentes de este StyleBook se reproduce a continuación:

components:
  -
    name: C1
    type: ns::lbvserver
    roles:
      - A
      - B
    properties:
      name: lb1
      servicetype: HTTP
      ipv46: 1.1.1.1
      port: 80
  -
    name: C2
    type: ns::lbvserver
    roles:
      - B
    properties:
      name: lb2
      servicetype: HTTP
      ipv46: 12.12.12.12
      port: 80
  -
    name: C3
    type: ns::lbvserver
    properties:
      name: lb3
      servicetype: HTTP
      ipv46: 13.13.13.13
      port: 80
  -
    name: C4
    type: ns::lbvserver
    roles:
      - default
    properties:
      name: lb4
      servicetype: HTTP
      ipv46: 14.14.14.14
      port: 80
<!--NeedCopy-->

Tenga en cuenta que el componente C3 no tiene un rol definido, lo que significa que el componente se implementa en todas las instancias, independientemente de su rol. Por otro lado, el componente C4 tiene la función “predeterminada”, lo que significa que se aplica a cualquier instancia que no tenga asignada una función explícita.

Ahora, considere que desea crear un paquete de configuración con este StyleBook e implementarlo en cinco instancias de ADC. En esta etapa, puede asignar los roles a las instancias de la siguiente manera:

  • La función A se asigna a las instancias T1, T2, T3 y T4
  • La función B está asignada a las instancias T2, T3 y T4
  • A la instancia T5 no se le asigna ningún rol

La siguiente imagen resume las asignaciones de roles y muestra la configuración resultante que recibirá cada instancia de ADC:

imagen traducida

Tenga en cuenta que el componente C3 se implementa en todas las instancias independientemente del rol, ya que este componente no tenía atributo roles.

También puedes usar la función «Ejecutar en seco» al crear un paquete de configuración para ver y verificar la asignación correcta de las funciones y los objetos de configuración que se crearán en cada instancia de ADC.

Crea su StyleBook

El contenido completo del StyleBook “demo-target-roles” se muestra a continuación:

---
name: demo-target-roles
namespace: com.example.stylebooks
version: "1.2"
schema-version: "1.0"
import-stylebooks:
  -
    namespace: netscaler.nitro.config
    prefix: ns
    version: "10.5"
parameters:
  -
    name: appname
    type: string
    required: true
    key: true
target-roles:
  -
    name: A
  -
    name: B
    min-targets: 2
    max-targets: 5
components:
  -
    name: C1
    type: ns::lbvserver
    roles:
      - A
      - B
    properties:
      name: lb1
      servicetype: HTTP
      ipv46: 1.1.1.1
      port: 80
  -
    name: C2
    type: ns::lbvserver
    roles:
      - B
    properties:
      name: lb2
      servicetype: HTTP
      ipv46: 12.12.12.12
      port: 80
  -
    name: C3
    type: ns::lbvserver
    properties:
      name: lb3
      servicetype: HTTP
      ipv46: 13.13.13.13
      port: 80
  -
    name: C4
    type: ns::lbvserver
    roles:
      - default
    properties:
      name: lb4
      servicetype: HTTP
      ipv46: 14.14.14.14
      port: 80
<!--NeedCopy-->

La siguiente imagen muestra los objetos creados para un paquete de configuración de ejemplo:

imagen traducida

Uso de API

Al usar la API REST, puedes especificar roles para cada instancia de ADC al crear o actualizar el paquete de configuración de la siguiente manera. En el bloque «destinos», especifique el UUID de la instancia específica de Citrix ADC en la que quiere implementar los componentes individuales.

"targets": [
            {
             "id": "<ADC-UUID>",
             "roles": ["A"]
            },
           ]
<!--NeedCopy-->

Se proporciona una API REST de muestra completa para su referencia.

POST/<ADM-IP>/stylebook/nitro/v1/config/stylebooks/com.example.stylebooks/1.2/demo-target-roles/configpacks

{
  "configpack": {
     "parameters": {
     "appname": "app1"
    },
     "targets": [
        {
          "id": "f53c35c3-a6bc-4619-b4b4-ad7ab6a94ddb",
        "roles": ["A"]
        },
        {
          "id": "c08caa1c-1011-48aa-b8c7-9aed1cd38ed0",
          "roles": ["A", "B"]
        },
        {
          "id": "88ac90cb-a5cb-445b-8617-f83d0ef6174e",
          "roles": ["A", "B"]
        },
        {
          "id": "bf7b0f74-7a83-4856-86f4-dcc951d3141e",
          "roles": ["A", "B"]
        },
        {
          "id": "fa5d97ab-ca29-4adf-b451-06e7a234e3da",
          "roles": ["default"]
        }
      ]
    }
}
<!--NeedCopy-->
Roles de instancia