Roles de instancia
En NetScaler Application Delivery Management (ADM), puede haber un caso en el que tenga que configurar varias instancias de NetScaler 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.
StyleBooks admite actualmente la capacidad de crear un paquete de configuración y aplicar la misma configuración en varias instancias de NetScaler. 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 una función StyleBook con funciones de instancia para crear un paquete de configuración, cada instancia de ADC de un paquete de configuración puede tener asignada una función diferente. Este rol 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 destinos mínimos especifican el número mínimo obligatorio de instancias ADC a las que se debe asignar este rol al crear un paquete de configuración a partir de este StyleBook, y max-targets especifican el número máximo de instancias ADC a las que se puede asignar este rol al crear un 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 una instancia de ADC no está asignada con 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, independientemente de su rol. Puede utilizar esta función de manera 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 quiere 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:
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 puede utilizar la función “Dry Run” al crear un paquete de configuración para ver y verificar la asignación correcta de roles 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:
Uso de API
Al utilizar la API REST, puede 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 NetScaler en la que desea 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-->