用于创建负载均衡虚拟服务器的 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"
标头部分包括以下详细信息:
-
name:此 StyleBook 的名称。
-
description:描述此 StyleBook 功能的说明。此说明显示在 NetScaler® ADM 上。
-
display-name:显示在 NetScaler ADM 上的 StyleBook 的描述性名称。
-
namespace:命名空间是 StyleBook 唯一标识符的一部分,以避免名称冲突。
-
schema-version:在此版本中始终取值“1.0”。
-
version:StyleBook 的版本号。更新 StyleBook 时可以更改版本号。
name、namespace 和 version 的组合在系统中唯一标识一个 StyleBook。在 NetScaler ADM 中,不能有两个 StyleBook 具有相同的名称、命名空间和版本组合。但是,您可以有两个 StyleBook 具有相同的名称和版本但命名空间不同,或者具有相同的命名空间和版本但名称不同。
注意
假设您已更新 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。
也有可能某个 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
注意
如果您不提供参数的标签,则 NetScaler ADM 在显示此参数时会使用名称属性。您必须始终为参数定义标签,以便您可以控制它们在 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 创建配置时必须为此参数提供值。默认情况下,所有参数都是可选的。在此示例中,name 和 ip 是强制参数,而 lb-alg 是可选参数,其默认值为“ROUNDROBIN”。
使用 default 属性为可选参数分配默认值。在创建配置时,如果用户未指定值,则使用默认值。例如,对于 lb-alg 参数,默认值为 ROUNDROBIN。
使用 allowed-values 属性定义用户在创建配置时可以选择的特定值。在此示例中,您为 lb-alg 参数指定了两个值 - ROUNDROBIN 和 LEASTCONNECTION。
当你导入并使用你的StyleBook时,NetScaler ADM会显示一个包含这三个参数的表单。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 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。
注意
按照惯例,“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 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 ADM,然后才能使用它。有关更多信息,请参阅 如何使用用户定义的 StyleBook。
您还可以将此 StyleBook 导入其他 StyleBook(使用 import-stylebooks 构造)。或者,您可以修改此 StyleBook 以包含更多参数和组件,如下一节所述。