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 Console 上。

  • display-name:StyleBook 的描述性名称,显示在 NetScaler Console 上。

  • namespace:命名空间是 StyleBook 唯一标识符的一部分,用于避免名称冲突。

  • schema-version:在此版本中始终采用值“1.0”。

  • version:StyleBook 的版本号。更新 StyleBook 时可以更改版本号。

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

注意

假设您已更新 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 实例,我们建议为了获得最大兼容性,您应在直接使用 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 Console 在显示此参数时将使用 name 属性。您必须始终为参数定义标签,以便控制它们在 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 创建配置时必须为此参数提供值。默认情况下,所有参数都是可选的。在此示例中,nameip 是强制参数,而 lb-alg 是可选参数,其默认值为“ROUNDROBIN”。

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

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

当您导入并使用 StyleBook 时,NetScaler Console 会显示一个包含这三个参数的表单。为 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 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。我们建议您使用 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 Console,然后使用它。有关详细信息,请参阅如何使用用户定义的 StyleBook

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

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