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

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

标头

StyleBook 的前六行构成标头部分。在此示例中,标头部分编写如下:
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"
标头部分包括以下详细信息:
  • name:此 StyleBook 的名称。
  • description:描述此 StyleBook 功能的说明。此说明显示在 NetScaler Console 上。
  • display-name:显示在 NetScaler Console 上的 StyleBook 的描述性名称。
  • namespace:命名空间是 StyleBook 唯一标识符的一部分,以避免名称冲突。
  • schema-version:在此版本中始终取值“1.0”。
  • version:StyleBook 的版本号。您可以在更新 StyleBook 时更改版本号。
name、namespace 和 version 的组合在系统中唯一标识一个 StyleBook。在 NetScaler Console 中,不能有两个 StyleBook 具有相同的 name、namespace 和 version 组合。但是,您可以有两个 StyleBook 具有相同的 name 和 version 但不同的 namespace,或者具有相同的 namespace 和 version 但不同的 name。
注意
假设您已更新 StyleBook 并且您有一个更新的版本号。现在,如果您在其他 StyleBook 中引用(即导入)此 StyleBook,请务必也在其他 StyleBook 中更新版本号,以便它们使用导入的 StyleBook 的正确版本。

导入 StyleBook

“header”后的部分称为“import-stylebooks”。在此部分中,您必须声明要在当前 StyleBook 中引用的任何其他 StyleBook 的命名空间和版本号。这使您能够导入和重用其他 StyleBook,而不是在自己的 StyleBook 中重新构建相同的配置。
在此示例中,import-stylebooks 部分的编写方式如下:
import-stylebooks:
 -
  namespace: netscaler.nitro.config
  prefix: ns
  version: "10.5"
如果任何 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。
也有可能存在根本不导入 NITRO 命名空间的 StyleBook。这意味着 StyleBook 不需要直接定义 NITRO 组件,但可以导入(依赖)定义 NITRO 组件的 StyleBook。导入其他 StyleBook 的 StyleBook 始终获取其依赖项层次结构中最高的 NITRO 版本。并且,它用于配置该版本或更高版本的 NetScaler。

参数

参数部分允许您声明 StyleBook 中所需的所有参数。作为 StyleBook 开发人员,您必须决定希望 StyleBook 用户指定哪些输入。在此示例中,您构建 StyleBook 的方式要求其用户提供虚拟服务器的名称、其 IP 地址和负载平衡方法。
参数部分如下所示:
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
注意
如果您不提供参数的标签,则 NetScaler Console 在显示此参数时会使用名称属性。您必须始终为参数定义标签,以便您可以控制它们在 NetScaler Console 中的显示方式。
但是,在使用 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 Console 显示此参数的值时,它会显示为星号 (*****)。
  • certfile:一个证书文件。
  • keyfile:一个证书私钥文件。
  • file:此类型的参数要求用户上传文件,例如证书文件或密钥文件。
  • object:由多个元素组成,每个元素都是一个参数。此类型可用于将多个相关参数分组到一个父参数下。
  • required:指示参数是强制性的还是可选的。如果设置为 true,则该参数是强制性的,用户在使用此 StyleBook 创建配置时必须为此参数提供一个值。默认情况下,所有参数都是可选的。在此示例中,name 和 ip 是强制参数,而 lb-alg 是可选参数,其默认值为“ROUNDROBIN。”
使用 default 属性为可选参数分配默认值。在创建配置时,如果用户未指定值,则使用默认值。例如,对于 lb-alg 参数,默认值为 ROUNDROBIN。
使用 allowed-values 属性定义用户在创建配置时可以选择的特定值。在此示例中,您为 lb-alg 参数指定了两个值 - ROUNDROBIN 和 LEASTCONNECTION。
当您导入并使用您的 StyleBook 时,NetScaler Console 会显示一个包含这三个参数的表单。名称和 IP 字段允许输入字符串和 ipaddress 类型的值,而 lb-alg 字段则显示为下拉列表,其中 ROUNDROBIN 被选为默认值。
注意
除了内置类型之外,参数还可以将另一个 StyleBook 作为其类型。这是一种重用其他 StyleBook 中定义的参数的方法。

组件

此 StyleBook 中的最后一个部分称为组件部分,被认为是 StyleBook 中最重要的部分。在此部分中,您定义了必须由 StyleBook 创建的配置对象。
对于此示例,您必须按如下方式编写组件部分:
components:
 -
  name: lbvserver-comp
  description: This StyleBook component (a Builtin Nitro StyleBook) builds a NetScaler lbvserver configuration object.
  type: ns::lbvserver
  properties:
   name: $parameters.name
   ipv46: $parameters.vip-ipaddress
   lbmethod: $parameters.lb-alg
   servicetype: HTTP
   port: 80
此示例仅包含一个组件。组件的主要属性是名称、类型和属性。组件的类型决定了该组件提供哪些属性。组件分为两种类型:
  • 内置类型:此类型由系统提供,您无需定义它,例如 NITRO 实体类型 lbvserver 或 servicegroup。在此示例中,您正在使用内置组件类型。
  • 复合类型:此类型是您创建并导入到 NetScaler Console 中的 StyleBook,或者是 NetScaler Console 随附的默认 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)来引用参数部分中定义的参数名称。
注意
按照惯例,前缀“ns”始终用于在“import-stylebooks”部分中指定 NetScaler NITRO 命名空间。尽管这不是强制性的,但 Citrix 建议您在自己的 StyleBook 中使用相同的约定以保持一致性。

构建您的 StyleBook

既然您已经定义了此 StyleBook 的所有必需部分,请将它们组合起来构建您的第一个 StyleBook。将 StyleBook 内容复制并粘贴到文本编辑器中,然后将文件保存为 lb-vserver.yaml。Citrix 建议您使用 StyleBooks 中内置的 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 lbvserver configuration object.
  type: ns::lbvserver
  properties:
   name: $parameters.name
   ipv46: $parameters.vip-ipaddress
   lbmethod: $parameters.lb-alg
   servicetype: HTTP
   port: 80
要开始使用您的 StyleBook 创建配置,您必须将其导入 NetScaler Console,然后才能使用它。有关更多信息,请参阅 如何使用用户定义的 StyleBook。
您还可以将此 StyleBook 导入其他 StyleBook(使用 import-stylebooks 构造)。或者,您可以修改此 StyleBook 以包含更多参数和组件,如下一节所述。