Application Delivery Management

StyleBook 用于创建负载平衡虚拟服务器

在此示例中,您将设计一个基本 StyleBook,用于创建 HTTP 协议类型并在端口 80 上侦听的负载平衡虚拟服务器。虚拟服务器名称、IP 地址和负载平衡方法参数接受用户定义的值,也就是说,它们是 StyleBook 的参数。

标头

StyleBook 的前六行构成标头部分。在此示例中,标头部分编写如下:

name: lb-vserver
description: This StyleBook defines a load balancing virtual server configuration.
display-name: Load Balancing Virtual Server (HTTP)
namespace: com.example.stylebooks
schema-version: "1.0"
version: "0.1"
<!--NeedCopy-->

标头部分包含以下详细信息:

  • name:此 StyleBook 的名称。
  • description:定义此 StyleBook 功能的描述。此描述显示在 NetScaler® ADM 上。
  • display-name:StyleBook 的描述性名称,显示在 NetScaler ADM 上。
  • namespace:命名空间构成 StyleBook 唯一标识符的一部分,以避免名称冲突。
  • schema-version:在此版本中始终采用值“1.0”。
  • version:StyleBook 的版本号。更新 StyleBook 时可以更改版本号。

namenamespaceversion 的组合在系统中唯一标识一个 StyleBook。在 NetScaler ADM 中,不能有两个 StyleBook 具有相同的 name、namespace 和 version 组合。但是,可以有两个 StyleBook 具有相同的 name 和 version 但命名空间不同,或者具有相同的命名空间和 version 但名称不同。

注意

假设您已更新 StyleBook 并且具有更新的版本号。现在,如果您在其他 StyleBook 中引用(即导入)此 StyleBook,请务必同时更新其他 StyleBook 中的版本号,以便它们使用导入 StyleBook 的正确版本。

导入 StyleBook

标头后面的部分称为“import-stylebooks”。在此部分中,您必须声明要在当前 StyleBook 中引用的任何其他 StyleBook 的命名空间和版本号。这使您能够导入和重用其他 StyleBook,而不是在自己的 StyleBook 中重新构建相同的配置。

在此示例中,“import-stylebooks”部分编写如下:

import-stylebooks:
 -
  namespace: netscaler.nitro.config
  prefix: ns
  version: "10.5"
<!--NeedCopy-->

如果 StyleBook 直接使用任何 NITRO 配置对象,则必须引用 netscaler.nitro.config 命名空间。此命名空间包含所有 NetScaler NITRO 类型,例如 lbvserver。由于支持软件版本 10.5 及更高版本,因此您可以使用 StyleBook 在运行版本 10.5 及更高版本的任何 NetScaler 实例上创建和运行配置。

“import-stylebooks”部分中使用的前缀是引用命名空间和版本组合的简写。在本例中,ns 指的是版本 10.5 的 netscaler.nitro.config。在 StyleBook 的后续部分中,您可以使用所选的前缀字符串(例如,上述示例中的 ns)来引用导入的 StyleBook,而不是使用命名空间和版本。

StyleBook 中使用的版本是 NetScaler NITRO 版本。基于 Nitro 版本 X 的 StyleBook 可用于配置版本 X 或更高版本的任何 NetScaler。

注意

为确保您的 StyleBook 可用于配置版本 10.5 或更高版本的任何 NetScaler 实例,Citrix 建议,为实现最大兼容性,您应在直接使用 Nitro 内置 StyleBook 的 StyleBook 中导入 Nitro 10.5 命名空间(命名空间:netscaler.nitro.config,版本:10.5)。

重要的是,导入其他 StyleBook 的 StyleBook 需要基于与所导入 StyleBook 相同或更高版本的 Nitro 版本。例如,基于 Nitro 版本 10.5 的 StyleBook 不能依赖、使用或导入基于 11.1 的 StyleBook。但基于版本 11.1 的 StyleBook 可以导入基于任何低于 11.1 版本的 StyleBook。

StyleBook 也有可能根本不导入 Nitro 命名空间。这意味着 StyleBook 不需要直接定义 Nitro 组件,但可以导入(依赖)定义 Nitro 组件的 StyleBook。导入其他 StyleBook 的 StyleBook 始终获取其依赖项层次结构中最高的 Nitro 版本,因此可用于配置该版本或更高版本的 NetScaler。

参数

参数部分允许您声明 StyleBook 中所需的所有参数。作为 StyleBook 开发人员,您必须决定希望 StyleBook 用户指定哪些输入。在此示例中,您构建 StyleBook 的方式要求其用户提供虚拟服务器的名称、其 IP 地址和负载平衡方法。

参数部分如下所示:

parameters:
 -
  name: name
  type: string
  label: Application Name
  description: Name of the application configuration.
  required: true

 -
  name: ip
  type: ipaddress
  label: Application Virtual IP (VIP)
  description: Application VIP that the clients access.
  required: true

-
  name: lb-alg
  type: string
  label: LoadBalancing Algorithm
  description: Choose the load balancing algorithm (method) used for load balancing client request between the application servers.
  allowed-values:
   -  ROUNDROBIN
   -  LEASTCONNECTION
   default: ROUNDROBIN
<!--NeedCopy-->

注意

如果不提供参数的标签,则 NetScaler ADM 在显示此参数时会使用 name 属性。您必须始终为参数定义标签,以便控制它们在 NetScaler ADM 中的显示方式。

但是,在使用 API 时,参数由其名称指定。

在本节中,您已声明三个参数,由其 name 属性值指示 - name 用于虚拟服务器名称,ip 用于虚拟服务器的 IP 地址,lb-alg 用于负载平衡方法。

  • type。这些参数可以采用的值类型。例如,name 和 lb-alg 可以采用字符串值,而 ip 值必须是 IP 地址类型。StyleBook 中的参数可以是以下任何内置类型:
  • string。字符数组。如果未指定长度,则字符串值可以采用任意数量的字符。但是,您可以使用 min-length 和 max-length 属性限制字符串类型的长度。
  • number。整数。您可以使用 min-value 和 max-value 属性指定此类型可以采用的最小和最大数字。
  • boolean。可以是 true 或 false。另请注意,所有文字都被 YAML 视为布尔值(例如,Yes 或 No)。
  • ipaddress。表示有效 IPv4 或 IPv6 地址的字符串。
  • tcp-port。一个介于 0 和 65535 之间的数字,表示 TCP 或 UDP 端口。
  • password。不透明/秘密字符串值。当 NetScaler ADM 显示此参数的值时,它会显示为星号 (****)。
  • certfile。证书文件。
  • keyfile。证书私钥文件。
  • file。此类型的参数要求用户上传文件,例如证书或密钥文件。
  • object。由多个元素组成,每个元素都是一个参数。此类型可用于将多个相关参数分组到一个父参数下。
  • required。说明参数是强制性的还是可选的。如果设置为 true,则参数是强制性的,用户在使用此 StyleBook 创建配置时必须为此参数提供值。默认情况下,所有参数都是可选的。在此示例中,nameip 是强制参数,而 lb-alg 是可选参数,其默认值为“ROUNDROBIN”。

使用 default 属性为可选参数分配默认值。创建配置时,如果用户未指定值,则使用默认值。例如,对于 lb-alg 参数,默认值为 ROUNDROBIN。

使用 allowed-values 属性定义用户在创建配置时可以选择的特定值。在此示例中,您已为 lb-alg 参数指定了两个值 - ROUNDROBIN 和 LEASTCONNECTION。

导入并使用 StyleBook 时,NetScaler ADM 会显示一个包含这三个参数的表单。为 name 和 ip 显示的字段允许输入字符串和 IP 地址类型的值,lb-alg 字段显示为下拉列表,其中 ROUNDROBIN 作为默认值选中。

注意

除了内置类型之外,参数还可以将另一个 StyleBook 作为其类型。这是重用其他 StyleBook 中定义的参数的一种方式。

组件

此 StyleBook 中的最后一部分称为组件部分,被认为是 StyleBook 中最重要的部分。在此部分中,您定义必须由 StyleBook 创建的配置对象。

对于此示例,您必须按如下方式编写组件部分:

components:
 -
  name: lbvserver-comp
  type: ns::lbvserver
  properties:
   name: $parameters.name
   servicetype: HTTP
   ipv46: $parameters.ip
   port: 80
   lbmethod: $parameters.lb-alg
<!--NeedCopy-->

此示例仅包含一个组件。组件的主要属性是 name、type 和 properties。组件的类型决定了此组件提供哪些属性。组件分为两种类型:

  • 内置类型。此类型由系统提供,您无需定义它,例如 NITRO 实体类型“lbvserver”或“servicegroup”。在此示例中,您使用的是内置组件类型。
  • 复合类型。此类型是您创建并导入到 NetScaler ADM 中的 StyleBook,或者是 NetScaler ADM 随附的默认 StyleBook。您可以在创建复合 StyleBook 中了解有关复合 StyleBook 的更多信息。

在此示例中,您已定义了一个名为 lbvserver-comp 的组件。此组件的类型为 ns::lbvserver(内置 Nitro 类型),其中“ns”是引用您在 import-stylebooks 部分中指定的命名空间 netscaler.nitro.config 和版本 10.5 的前缀,而“lbvserver”是此命名空间中的 Nitro 资源。

此处定义的 properties 是“lbvserver”资源的属性。要了解有关所有可用 NetScaler Nitro 资源及其属性的更多信息,请参阅 NetScaler NITRO REST API 文档

本节中的属性包括“lbvserver”资源的强制属性,并允许您为此类属性指定值。在此示例中,您为 servicetype 和 port 指定静态值,而 name、ipv46 和 lbmethod 属性从输入参数获取其值。在 StyleBook 的其余部分中,您可以使用 $parameters.<parameter-name> 表达式(例如 $parameters.ip)引用参数部分中定义的参数名称。

注意

按照惯例,“import-stylebooks”部分中始终使用前缀“ns”来指定 NetScaler Nitro 命名空间。尽管这不是强制性的,但 Citrix 建议您在自己的 StyleBook 中使用相同的约定以保持一致性。

构建 StyleBook

定义完此 StyleBook 的所有必需部分后,将它们组合在一起以构建您的第一个 StyleBook。将 StyleBook 内容复制并粘贴到文本编辑器中,然后将文件另存为 lb-vserver.yaml。Citrix 建议您使用 StyleBook 中内置的 YAML 验证器来验证和导入 YAML 内容。

文件 lb-vserver.yaml 的完整内容如下所示:

name: lb-vserver
namespace: com.example.stylebook
version: "1.0"
display-name: Load Balancing Virtual Server (HTTP)
description: "This stylebook defines a very simple load balancing HTTP virtual server configuration"
schema-version: "1.0"

import-stylebooks:
 -
  namespace: netscaler.nitro.config
  version: "10.5"
  prefix: ns
 -
  namespace: com.citrix.adc.stylebooks
  version: "1.0"
  prefix: stlb

parameters:
 -
  name: name
  label: "Application Name"
  description: "Give a name to the application configuration."
  type: string
  required: true
 -
  name: vip-ipaddress
  label: "Load Balancer IP Address"
  description: "The Application VIP that clients access"
  type: ipaddress
  required: true
 -
  name: lb-alg
  label: LB Algorithm
  description: Load Balancing Algorithm
  type: string
  default: ROUNDROBIN
  allowed-values:
   -  ROUNDROBIN
   -  LEAST-CONNECTION

components:
 -
  name: lbvserver-comp
  description: This StyleBook component (a Builtin Nitro StyleBook) builds a NetScaler load balancing virtual server configuration object.
  type: ns::lbvserver
  properties:
   name: $parameters.name
   ipv46: $parameters.vip-ipaddress
   lbmethod: $parameters.lb-alg
   servicetype: HTTP
   port: 80
<!--NeedCopy-->

要开始使用 StyleBook 创建配置,您必须将其导入 NetScaler ADM,然后使用它。有关详细信息,请参阅如何使用用户定义的 StyleBook

您还可以将此 StyleBook 导入其他 StyleBook(使用 import-stylebooks 构造)。或者,您可以修改此 StyleBook 以包含更多参数和组件,如下一节所述。

StyleBook 用于创建负载平衡虚拟服务器