用于创建负载均衡虚拟服务器的样式簿
在此示例中,您设计一个基本的样式簿,用于创建 HTTP 协议类型并侦听端口 80 的负载均衡虚拟服务器。虚拟服务器名称、IP 地址和负载均衡方法参数接受用户定义的值,也就是说,它们是样式簿的参数。
标头
样式簿的前六行构成标头部分。在此示例中,标头部分编写如下:
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"
标头部分包括以下详细信息:
-
name:此样式簿的名称。
-
description:描述此样式簿的功能。此描述显示在 NetScaler Console 上。
-
display-name:样式簿的描述性名称,显示在 NetScaler Console 上。
-
namespace:命名空间是样式簿唯一标识符的一部分,以避免名称冲突。
-
schema-version:在此版本中始终取值“1.0”。
-
version:样式簿的版本号。更新样式簿时可以更改版本号。
name、namespace 和 version 的组合在系统中唯一标识一个样式簿。在 NetScaler Console 中,不能有两个样式簿具有相同的 name、namespace 和 version 组合。但是,您可以有两个样式簿具有相同的 name 和 version 但不同的 namespace,或者具有相同的 namespace 和 version 但不同的 name。
注意
假设您已更新样式簿并拥有更新的版本号。现在,如果您在其他样式簿中引用(即导入)此样式簿,请务必同时更新其他样式簿中的版本号,以便它们使用导入样式簿的正确版本。
导入样式簿
标头后面的部分称为“import-stylebooks”。在此部分中,您必须声明要在当前样式簿中引用的任何其他样式簿的命名空间和版本号。这使您能够导入并重用其他样式簿,而不是在自己的样式簿中重新构建相同的配置。
在此示例中,import-stylebooks 部分编写如下:
import-stylebooks:
-
namespace: netscaler.nitro.config
prefix: ns
version: "10.5"
如果任何样式簿直接使用 NITRO 配置对象,则必须引用 netscaler.nitro.config 命名空间。此命名空间包含所有 NetScaler NITRO 类型,例如 lbvserver。由于支持 10.5 及更高版本的软件,您可以使用您的样式簿在运行 10.5 及更高版本的任何 NetScaler 实例上创建并运行配置。
import-stylebooks 部分中使用的前缀是引用命名空间和版本组合的速记。在此示例中,ns 指的是 netscaler.nitro.config 的 10.5 版本。在样式簿的后续部分中,您无需使用命名空间和版本来引用导入的样式簿,而是可以使用所选的前缀字符串,例如上面示例中的 ns。
样式簿中使用的版本是 NetScaler NITRO 版本。基于 Nitro X 版本的样式簿可用于配置任何版本为 X 或更高版本的 NetScaler。
注意
为确保您的样式簿可用于配置任何 10.5 或更高版本的 NetScaler 实例,为实现最大兼容性,我们建议您在直接使用 Nitro 内置样式簿(命名空间:netscaler.nitro.config,版本:10.5)的样式簿中导入 Nitro 10.5 命名空间。
重要的是,导入其他样式簿的样式簿需要基于与其导入的样式簿相同或更高版本的 Nitro 版本。例如,基于 Nitro 10.5 版本的样式簿不能依赖、使用或导入基于 11.1 版本的样式簿。但基于 11.1 版本的样式簿可以导入基于任何低于 11.1 版本的样式簿。
也可能存在根本不导入 Nitro 命名空间的样式簿。这意味着样式簿无需直接定义 Nitro 组件,但可以导入(依赖)定义 Nitro 组件的样式簿。导入其他样式簿的样式簿总是获取其依赖项层次结构中的最高 Nitro 版本,因此可用于配置该版本或更高版本的 NetScaler。
参数
参数部分允许您声明样式簿中所需的所有参数。作为样式簿开发人员,您必须决定希望样式簿用户指定哪些输入。在此示例中,您已构建样式簿,要求其用户提供虚拟服务器的名称、其 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
注意
如果您不提供参数的标签,则 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 会显示一个包含这三个参数的表单。为 name 和 ip 显示的字段允许输入字符串和 ipaddress 类型的值,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
此示例仅包含一个组件。组件的主要属性是名称、类型和属性。组件的类型决定了此组件提供的属性。组件分为两种类型:
-
内置类型。此类型由系统提供,您无需定义它,例如 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。我们建议您使用 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 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
要开始使用您的 StyleBook 创建配置,您必须将其导入 NetScaler Console,然后才能使用它。有关更多信息,请参阅如何使用用户定义的 StyleBook。
您还可以将此 StyleBook 导入其他 StyleBook(使用 import-stylebooks 构造)。或者,您可以修改此 StyleBook 以包含更多参数和组件,如下一节所述。