在云中首次启动 NetScaler 设备时应用 NetScaler VPX 配置
您可以在云环境中首次启动 NetScaler 设备时应用 NetScaler VPX 配置。本文档将此阶段称为 preboot 阶段。因此,在某些情况下,例如 ADC 池化许可,特定的 VPX 实例可以在更短的时间内启动。此功能在 Microsoft Azure、Google Cloud Platform 和 AWS 云中可用。
什么是用户数据
在云环境中预置 VPX 实例时,您可以选择将用户数据传递给该实例。用户数据允许您执行常见的自动化配置任务、自定义实例的启动行为,并在实例启动后运行脚本。首次启动时,NetScaler VPX 实例执行以下任务:
- 读取用户数据。
- 解释用户数据中提供的配置。
- 在启动时,系统会应用新添加的配置。
如何在云实例中提供预启动用户数据
您可以以 XML 格式向云实例提供预启动用户数据。不同的云提供不同的接口来提供用户数据。
使用 AWS 控制台提供预启动用户数据
当您使用 AWS 控制台预置 NetScaler VPX 实例时,导航到 配置实例详细信息 > 高级详细信息,并在 用户数据 字段中提供预启动用户数据配置。
有关每个步骤的详细说明,请参阅 使用 AWS Web 控制台在 AWS 上部署 NetScaler VPX 实例。 有关更多信息,请参阅 AWS 文档中的 启动实例。

注意:
预启动用户数据功能的 AWS IMDSv2 仅限模式从 NetScaler VPX 13.1.48.x 及更高版本开始支持。
使用 AWS CLI 提供预启动用户数据
在 AWS CLI 中键入以下命令:
aws ec2 run-instances \
--image-id ami-0abcdef1234567890 \
--instance-type t2.micro \
--count 1 \
--subnet-id subnet-08fc749671b2d077c \
--key-name MyKeyPair \
--security-group-ids sg-0b0384b66d7d692f9 \
--user-data file://my_script.txt
<!--NeedCopy-->
有关更多信息,请参阅 AWS 文档中的 运行实例。
有关更多信息,请参阅 AWS 文档中的 使用实例用户数据
使用 Azure 控制台提供预启动用户数据
使用 Azure 控制台预配 NetScaler VPX 实例时,导航到“创建虚拟机 > 高级”选项卡。在“自定义数据”字段中,提供预启动用户数据配置。

使用 Azure CLI 提供预启动用户数据
在 Azure CLI 中键入以下命令:
az vm create \
--resource-group myResourceGroup \
--name MyVm \
--image debian \
--custom-data MyCloudInitScript.txt \
<!--NeedCopy-->
示例:
az vm create --resource-group MyResourceGroup -name MyVm --image debian --custom-data MyCloudInitScript.txt
<!--NeedCopy-->
您可以将自定义数据或预启动配置作为文件传递给“–custom-data”参数。在此示例中,文件名为 MyCloudInitScript.txt。
有关更多信息,请参阅 Azure CLI 文档。
使用 GCP 控制台提供预启动用户数据
使用 GCP 控制台预配 NetScaler VPX 实例时,填写实例属性。展开“管理、安全性、磁盘、网络、单租户”。导航到“管理”选项卡。在“自动化”部分中,在“启动脚本”字段中提供预启动用户数据配置。
有关使用谷歌云平台创建 VPX 实例的详细信息,请参阅 在谷歌云平台上部署 NetScaler VPX 实例。

使用 gcloud CLI 提供预启动用户数据
在 GCP CLI 中输入以下命令:
gcloud compute instances create INSTANCE_NAMES --metadata-from-file=startup-script=LOCAL_FILE_PATH
<!--NeedCopy-->
metadata-from-file - 从
有关更多信息,请参阅 gcloud CLI 文档
预启动用户数据格式
预启动用户数据必须以 XML 格式提供给云实例。您在启动期间通过云基础设施提供的 NetScaler 预启动用户数据可包含以下四个部分:
- 由
<NS-CONFIG>标签表示的 NetScaler 配置。 - 由
<NS-BOOTSTRAP>标签表示的自定义引导 NetScaler。 - 由
<NS-SCRIPTS>标签表示的在 NetScaler 中存储用户脚本。 - 由
<NS-LICENSE-CONFIG>标签表示的池化许可配置。
您可以在 ADC 预启动配置中以任何顺序提供上述四个部分。 提供预启动用户数据时,请务必严格遵循以下各节中所示的格式。
注意:
整个预启动用户数据配置必须包含在
<NS-PRE-BOOT-CONFIG>标签中,如下例所示。
示例 1:
<NS-PRE-BOOT-CONFIG>
<NS-CONFIG> </NS-CONFIG>
<NS-BOOTSTRAP> </NS-BOOTSTRAP>
<NS-SCRIPTS> </NS-SCRIPTS>
<NS-LICENSE-CONFIG> </NS-LICENSE-CONFIG>
</NS-PRE-BOOT-CONFIG>
<!--NeedCopy-->
示例 2:
<NS-PRE-BOOT-CONFIG>
<NS-LICENSE-CONFIG> </NS-LICENSE-CONFIG>
<NS-SCRIPTS> </NS-SCRIPTS>
<NS-BOOTSTRAP> </NS-BOOTSTRAP>
<NS-CONFIG> </NS-CONFIG>
</NS-PRE-BOOT-CONFIG>
<!--NeedCopy-->
使用 <NS-CONFIG> 标签提供需要在预启动阶段应用于 VPX 实例的特定 NetScaler VPX 配置。
注意:
<NS-CONFIG>部分必须包含有效的 ADC CLI 命令。不会验证 CLI 的语法错误或格式。
NetScaler 设备的配置信息
使用 <NS-CONFIG> 标签提供需要在预启动阶段应用于 VPX 实例的特定 NetScaler VPX 配置。
注意:
<NS-CONFIG>部分必须包含有效的 ADC CLI 命令。不会验证 CLI 的语法错误或格式。
示例:
在以下示例中,<NS-CONFIG> 部分包含配置的详细信息。配置了 ID 为“5”的 VLAN 并将其绑定到 SNIP (5.0.0.1)。还配置了负载平衡虚拟服务器 (4.0.0.101)。

您可以从此处复制前面屏幕截图中显示的配置:
<NS-PRE-BOOT-CONFIG>
<NS-CONFIG>
add vlan 5
add ns ip 5.0.0.1 255.255.255.0
bind vlan 5 -IPAddress 5.0.0.1 255.255.255.0
enable ns feature WL SP LB RESPONDER
add server 5.0.0.201 5.0.0.201
add service preboot_s5_201 5.0.0.201 HTTP 80 -gslb NONE -maxClient 0 -maxReq 0 -cip DISABLED -usip
NO -useproxyport YES -sp OFF -cltTimeout 180 -svrTimeout 360 -CKA NO -TCPB NO -CMP NO
add lb vserver preboot_v4_101 HTTP 4.0.0.101 80 -persistenceType NONE -cltTimeout 180
</NS-CONFIG>
</NS-PRE-BOOT-CONFIG>
<!--NeedCopy-->
NetScaler VPX 实例将使用 <NS-CONFIG> 部分中应用的配置启动,如以下插图所示。


用户脚本
使用 <NS-SCRIPTS> 标签提供必须存储并在 NetScaler VPX 实例中运行的任何脚本。
您可以在 <NS-SCRIPTS> 标签中包含多个脚本。每个脚本都必须包含在 <SCRIPT> 标签中。
每个 <SCRIPT> 部分对应一个脚本,并使用以下子标签包含脚本的所有详细信息。
-
<SCRIPT-NAME>:指示必须存储的脚本文件的名称。 -
<SCRIPT-CONTENT>:指示必须存储的文件的内容。 -
<SCRIPT-TARGET-LOCATION>:指示必须存储此文件的指定目标位置。如果未提供目标位置,则文件或脚本默认保存在“/nsconfig”目录中。 -
<SCRIPT-NS-BOOTUP>:指定用于运行脚本的命令。- 如果您使用
<SCRIPT-NS-BOOTUP>部分,则该部分中提供的命令将存储在“/nsconfig/nsafter.sh”中,并且这些命令将在数据包引擎启动后作为“nsafter.sh”执行的一部分运行。 - 如果您不使用
<SCRIPT-NS-BOOTUP>部分,则脚本文件将存储在您指定的目标位置。
- 如果您使用
示例 1:
在此示例中,<NS-SCRIPTS> 标签仅包含一个脚本的详细信息:script-1.sh。“script-1.sh”脚本保存在“/var”目录中。脚本将填充指定内容,并在数据包引擎启动后使用“sh /var/script-1.sh”命令运行。

您可以从此处复制前面屏幕截图中显示的配置:
<NS-PRE-BOOT-CONFIG>
<NS-SCRIPTS>
<SCRIPT>
<SCRIPT-CONTENT>
#Shell script
echo "Running script 1" > /var/script-1.output
date >> /var/script-1.output
</SCRIPT-CONTENT>
<SCRIPT-NAME> script-1.sh </SCRIPT-NAME>
<SCRIPT-TARGET-LOCATION> /var/ </SCRIPT-TARGET-LOCATION>
<SCRIPT-NS-BOOTUP>sh /var/script-1.sh</SCRIPT-NS-BOOTUP>
</SCRIPT>
</NS-SCRIPTS>
</NS-PRE-BOOT-CONFIG>
<!--NeedCopy-->
在以下快照中,您可以验证“script-1.sh”脚本是否保存在“/var/”目录中。“Script-1.sh”脚本已运行,并已正确创建输出文件。

示例 2:
在以下示例中,<NS-SCRIPTS> 标签包含两个脚本的详细信息。
- 第一个脚本以“script-1.sh”的形式保存在“/var”目录中。该脚本填充了指定内容,并在数据包引擎启动后通过命令“sh /var/script-1.sh”运行。
- 第二个脚本以“file-2.txt”的形式保存在“/var”目录中。此文件填充了指定内容。但它不会运行,因为未提供启动执行命令
<SCRIPT-NS-BOOTUP>。

您可以从此处复制前面屏幕截图中显示的配置:
<NS-PRE-BOOT-CONFIG>
<NS-SCRIPTS>
<SCRIPT>
<SCRIPT-CONTENT>
#Shell script
echo "Running script 1" > /var/script-1.output
date >> /var/script-1.output
</SCRIPT-CONTENT>
<SCRIPT-NAME> script-1.sh </SCRIPT-NAME>
<SCRIPT-TARGET-LOCATION> /var/ </SCRIPT-TARGET-LOCATION>
<SCRIPT-NS-BOOTUP>sh /var/script-1.sh</SCRIPT-NS-BOOTUP>
</SCRIPT>
<SCRIPT>
<SCRIPT-CONTENT>
This script has no execution point.
It will just be saved at the target location
NS Consumer module should consume this script/file
</SCRIPT-CONTENT>
<SCRIPT-NAME>file-2.txt</SCRIPT-NAME>
<SCRIPT-TARGET-LOCATION>/var/</SCRIPT-TARGET-LOCATION>
</SCRIPT>
</NS-SCRIPTS>
</NS-PRE-BOOT-CONFIG>
<!--NeedCopy-->
在以下快照中,您可以验证 script-1.sh 和 file-2.txt 已在“/var/”目录中创建。Script-1.sh 已运行,并已正确创建输出文件。

许可管理
使用 <NS-LICENSE-CONFIG> 标签在启动 VPX 实例时应用 NetScaler 池化许可。在 <NS-LICENSE-CONFIG> 部分中使用 <LICENSE-COMMANDS> 标签提供池化许可命令。这些命令必须在语法上有效。
您可以使用标准池化许可命令在 <LICENSE-COMMANDS> 部分中指定池化许可详细信息,例如许可证类型、容量和许可证服务器。有关详细信息,请参阅配置 NetScaler 池化容量许可。
应用 <NS-LICENSE-CONFIG> 后,VPX 在启动时会显示请求的版本,并且 VPX 会尝试从许可证服务器签出配置的许可证。
- 如果许可证签出成功,则会将配置的带宽应用于 VPX。
- 如果许可证签出失败,则在大约 10-12 分钟内无法从许可证服务器检索到许可证。结果,系统会重新启动并进入未授权状态。
示例:
在以下示例中,应用 <NS-LICENSE-CONFIG> 后,VPX 在启动时会以 Premium 版本运行,并尝试从许可证服务器 (10.102.38.214) 签出配置的许可证。

您可以从此处复制前面屏幕截图中显示的配置:
<NS-PRE-BOOT-CONFIG>
<NS-LICENSE-CONFIG>
<LICENSE-COMMANDS>
add ns licenseserver 10.102.38.214 -port 2800
set ns capacity -unit gbps -bandwidth 3 edition platinum
</LICENSE-COMMANDS>
</NS-LICENSE-CONFIG>
</NS-PRE-BOOT-CONFIG>
<!--NeedCopy-->
如以下插图所示,您可以运行“show license server”命令,并验证许可证服务器 (10.102.38.214) 已添加到 VPX。

引导过程
使用 <NS-BOOTSTRAP> 标签提供自定义引导信息。您可以在 <NS-BOOTSTRAP> 部分中使用 <SKIP-DEFAULT-BOOTSTRAP> 和 <NEW-BOOTSTRAP-SEQUENCE> 标签。此部分告知 NetScaler 设备是否避免默认引导。如果避免默认引导,此部分为您提供了一个选项来提供新的引导序列。
默认的启动引导配置
NetScaler 设备中的默认引导配置遵循以下接口分配:
- Eth0 - 具有特定 NSIP 地址的管理接口。
- Eth1 - 具有特定 VIP 地址的面向客户端接口。
- Eth2 - 具有特定 SNIP 地址的面向服务器接口。
自定义启动引导配置
您可以跳过默认引导序列,为 NetScaler VPX 实例提供新的引导序列。使用 <NS-BOOTSTRAP> 标签提供自定义引导信息。例如,您可以更改默认引导,其中管理接口 (NSIP)、面向客户端接口 (VIP) 和面向服务器接口 (SNIP) 始终按特定顺序提供。
下表显示了 <SKIP-DEFAULT-BOOTSTRAP> 和 <NEW-BOOTSTRAP-SEQUENCE> 标签允许的不同值所对应的引导行为。
SKIP-DEFAULT-BOOTSTRAP |
NEW-BOOTSTRAP-SEQUENCE |
引导配置行为 |
|---|---|---|
| 是 | 是 | 默认的引导行为被跳过,并运行 <NS-BOOTSTRAP> 部分中提供的新自定义引导序列。 |
| 是 | 否 | 默认的引导行为被跳过。运行 <NS-CONFIG> 部分中提供的引导命令。 |
您可以通过以下三种方法对引导配置进行自定义:
- 仅提供接口详细信息
- 提供接口详细信息以及 IP 地址和子网掩码
- 在
<NS-CONFIG>部分中提供引导相关命令
方法 1:仅通过指定接口详细信息进行自定义引导
您指定管理、面向客户端和面向服务器的接口,但不指定它们的 IP 地址和子网掩码。IP 地址和子网掩码通过查询云基础设施来填充。
AWS 的自定义引导示例
您提供自定义引导序列,如以下示例所示。有关更多信息,请参阅如何在云实例中提供预引导用户数据。Eth1 接口被分配为管理接口 (NSIP),Eth0 接口被分配为客户端接口 (VIP),Eth2 接口被分配为服务器接口 (SNIP)。<NS-BOOTSTRAP> 部分仅包含接口详细信息,不包含 IP 地址和子网掩码的详细信息。

创建 VM 实例后,在 AWS 门户中,您可以按如下方式验证网络接口属性:
- 导航到 AWS 门户 > EC2 实例,然后选择您通过提供自定义引导信息创建的实例。
- 在描述选项卡中,您可以验证每个网络接口的属性,如以下插图所示。



您可以在 ADC CLI 中运行 show nsip 命令,并验证在 ADC 设备首次启动期间应用于 NetScaler VPX 实例的网络接口。

Azure 的自定义引导示例
您提供自定义引导序列,如以下示例所示。有关更多信息,请参阅如何在云实例中提供预引导用户数据。Eth2 接口被分配为管理接口 (NSIP),Eth1 接口被分配为客户端接口 (VIP),Eth0 接口被分配为服务器接口 (SNIP)。<NS-BOOTSTRAP> 部分仅包含接口详细信息,不包含 IP 地址和子网掩码的详细信息。

您可以看到 NetScaler VPX 实例是使用三个网络接口创建的。导航到 Azure 门户 > VM 实例 > 网络,并验证这三个 NIC 的网络属性,如以下插图所示。



您可以在 ADC CLI 中运行 “show nsip” 命令,并验证 <NS-BOOTSTRAP> 部分中指定的新引导序列是否已应用。您可以运行 “show route” 命令来验证子网掩码。

GCP 的自定义引导示例
您可以按照以下示例提供自定义引导序列。有关更多信息,请参阅 如何在云实例中提供预引导用户数据。Eth1 接口被分配为管理接口 (NSIP),Eth0 接口被分配为客户端接口 (VIP),Eth2 接口被分配为服务器接口 (SNIP)。<NS-BOOTSTRAP> 部分仅包含接口详细信息,不包含 IP 地址和子网掩码的详细信息。

在 GCP 门户中创建 VM 实例后,您可以按如下方式验证网络接口属性:
- 选择您已通过提供自定义引导信息而创建的实例。
- 导航到“网络接口属性”并按如下方式验证 NIC 详细信息:

您可以在 ADC CLI 中运行 show nsip 命令,并验证在 ADC 设备首次启动期间应用于 NetScaler VPX 实例的网络接口。

方法 2:通过指定接口、IP 地址和子网掩码进行自定义引导
您可以指定管理、面向客户端和面向服务器的接口及其 IP 地址和子网掩码。
适用于 AWS 的自定义引导示例
在以下示例中,您跳过默认引导,并为 NetScaler 设备运行新的引导序列。对于新的引导序列,您需要指定以下详细信息:
- 管理接口: 接口 - Eth1,NSIP - 172.31.52.88,子网掩码 - 255.255.240.0
- 面向客户端的接口: 接口 - Eth0,VIP - 172.31.5.155,子网掩码 - 255.255.240.0。
- 面向服务器的接口: 接口 - Eth2,SNIP - 172.31.76.177,子网掩码 - 255.255.240.0。

您可以在 ADC CLI 中运行 show nsip 命令,并验证 <NS-BOOTSTRAP> 部分中指定的新引导序列是否已应用。您可以运行“show route”命令来验证子网掩码。

适用于 Azure 的自定义引导示例
在以下示例中,提到了 ADC 的新引导序列,并跳过了默认引导。您需要提供接口详细信息以及 IP 地址和子网掩码,如下所示:
- 管理接口 (eth2)、NSIP (172.27.2.53) 和子网掩码 (255.255.255.0)
- 面向客户端的接口 (eth1)、VIP (172.27.1.53) 和子网掩码 (255.255.255.0)
- 面向服务器的接口 (eth0)、SNIP (172.27.0.53) 和子网掩码 (255.255.255.0)

您可以看到 NetScaler VPX 实例是使用三个网络接口创建的。导航到 Azure 门户 > 虚拟机实例 > 网络,并验证三个 NIC 的网络属性,如以下插图所示。



您可以在 ADC CLI 中运行 show nsip 命令,并验证 <NS-BOOTSTRAP> 部分中指定的新引导序列是否已应用。您可以运行“show route”命令来验证子网掩码。

GCP 的自定义引导示例
在以下示例中,提到了 ADC 的新引导序列,并跳过了默认引导。您提供接口详细信息以及 IP 地址和子网掩码,如下所示:
- 管理接口 (eth2)、NSIP (10.128.4.31) 和子网掩码 (255.255.255.0)
- 面向客户端的接口 (eth1)、VIP (10.128.0.43) 和子网掩码 (255.255.255.0)
- 面向服务器的接口 (eth0)、SNIP (10.160.0.75) 和子网掩码 (255.255.255.0)

在 GCP 门户中使用自定义引导创建 VM 实例后,您可以按如下方式验证网络接口属性:
- 请选择您通过提供自定义引导信息所创建的实例。
- 导航到“网络接口属性”并按如下方式验证 NIC 详细信息。
GCP 网卡详细信息(/zh-cn/vpx/media/gcp-nic-method2.png)
您可以在 ADC CLI 中运行 show nsip 命令,并验证 <NS-BOOTSTRAP> 部分中指定的新引导序列是否已应用。您可以运行“show route”命令来验证子网掩码。

方法 3:通过在 <NS-CONFIG> 部分中提供引导相关命令进行自定义引导
您可以在 <NS-CONFIG> 部分中提供引导相关命令。在 <NS-BOOTSTRAP> 部分中,您必须将 <NEW-BOOTSTRAP-SEQUENCE> 指定为“No”,以运行 <NS-CONFIG> 部分中的引导命令。您还必须提供用于分配 NSIP、默认路由和 NSVLAN 的命令。此外,请提供与您使用的云相关的命令。
在提供自定义引导之前,请确保您的云基础设施支持特定的接口配置。
适用于 AWS 的自定义引导示例
在此示例中,引导相关命令在 <NS-CONFIG> 部分中提供。<NS-BOOTSTRAP> 部分指示跳过默认引导,并运行 <NS-CONFIG> 部分中提供的自定义引导信息。您还必须提供用于创建 NSIP、添加默认路由和添加 NSVLAN 的命令。
AWS 自定义引导方法3(/zh-cn/vpx/media/aws-custom-bootstrap-method3.png)
您可以从此处复制前面屏幕截图中显示的配置:
<NS-PRE-BOOT-CONFIG>
<NS-CONFIG>
set ns config -IPAddress 172.31.52.88 -netmask 255.255.240.0
add route 0.0.0.0 0.0.0.0 172.31.48.1
set ns config -nsvlan 10 -ifnum 1/2 -tagged NO
add route 172.31.0.2 255.255.255.255 172.31.48.1
enable ns feature WL SP LB RESPONDER
add server 5.0.0.201 5.0.0.201
add service preboot_s5_201 5.0.0.201 HTTP 80 -gslb NONE -maxClient 0 -maxReq 0 -cip DISABLED -usip NO - useproxyport YES -sp OFF -cltTimeout 180 -svrTimeout 360 -CKA NO -TCPB NO -CMP NO
add lb vserver preboot_v4_101 HTTP 4.0.0.101 80 -persistenceType NONE -cltTimeout 180
</NS-CONFIG>
<NS-BOOTSTRAP>
<SKIP-DEFAULT-BOOTSTRAP>YES</SKIP-DEFAULT-BOOTSTRAP>
<NEW-BOOTSTRAP-SEQUENCE> NO </NEW-BOOTSTRAP-SEQUENCE>
</NS-BOOTSTRAP>
</NS-PRE-BOOT-CONFIG>
<!--NeedCopy-->
创建 VM 实例后,在 AWS 门户中,您可以按如下方式验证网络接口属性:
- 导航到 AWS Portal > EC2 实例,并选择您通过提供自定义引导信息创建的实例。
- 在“描述”选项卡中,您可以验证每个网络接口的属性,如以下插图所示。
AWS eth1 接口的第三种方法(/zh-cn/vpx/media/aws-eth1-method3.png)
AWS eth0 接口的第三种方法(/zh-cn/vpx/media/aws-eth0-method3.png)

您可以在 ADC CLI 中运行 show nsip 命令,并验证在 ADC 设备首次启动期间应用于 NetScaler VPX 实例的网络接口。

Azure 的自定义引导示例
在此示例中,引导相关命令在 <NS-CONFIG> 部分中提供。<NS-BOOTSTRAP> 部分指示跳过默认引导,并运行 <NS-CONFIG> 部分中提供的自定义引导信息。
注意:
对于 Azure 云,实例元数据服务器 (IMDS) 和 DNS 服务器只能通过主接口 (Eth0) 访问。因此,如果 Eth0 接口未用作管理接口 (NSIP),则 Eth0 接口至少必须配置为 SNIP,IMDS 或 DNS 访问才能正常工作。还必须添加通过 Eth0 网关到 IMDS 端点 (169.254.169.254) 和 DNS 端点 (168.63.129.16) 的路由。

<NS-PRE-BOOT-CONFIG>
<NS-CONFIG>
set ns config -IPAddress 172.27.2.61 -netmask 255.255.255.0
add route 0.0.0.0 0.0.0.0 172.27.2.1
set ns config -nsvlan 10 -ifnum 1/2 -tagged NO
add ns ip 172.27.0.61 255.255.255.0 -type SNIP
add route 169.254.169.254 255.255.255.255 172.27.0.1
add route 168.63.129.16 255.255.255.255 172.27.0.1
add vlan 5
bind vlan 5 -IPAddress 5.0.0.1 255.255.255.0
enable ns feature WL SP LB RESPONDER
add server 5.0.0.201 5.0.0.201
add service preboot_s5_201 5.0.0.201 HTTP 80 -gslb NONE -maxClient 0 -maxReq 0 -cip DISABLED -usip NO -useproxyport YES -sp OFF -cltTimeout 180 -svrTimeout 360 -CKA NO -TCPB NO -CMP NO
add lb vserver preboot_v4_101 HTTP 4.0.0.101 80 -persistenceType NONE -cltTimeout 180
</NS-CONFIG>
<NS-BOOTSTRAP>
<SKIP-DEFAULT-BOOTSTRAP>YES</SKIP-DEFAULT-BOOTSTRAP>
<NEW-BOOTSTRAP-SEQUENCE> NO </NEW-BOOTSTRAP-SEQUENCE>
</NS-BOOTSTRAP>
</NS-PRE-BOOT-CONFIG>
<!--NeedCopy-->
您可以看到 NetScaler VPX 实例是使用三个网络接口创建的。导航到 Azure portal > VM instance > Networking,并验证这三个网卡的网络属性,如以下插图所示。



您可以在 ADC CLI 中运行 show nsip 命令,并验证 <NS-BOOTSTRAP> 部分中指定的新引导序列是否已应用。您可以运行 “show route” 命令来验证子网掩码。

GCP 的自定义引导示例
在此示例中,引导相关命令在 <NS-CONFIG> 部分提供。<NS-BOOTSTRAP> 部分表示跳过默认引导,并应用 <NS-CONFIG> 部分中提供的自定义引导信息。

您可以从此处复制前面屏幕截图中显示的配置:
<NS-PRE-BOOT-CONFIG>
<NS-CONFIG>
set ns config -IPAddress 10.128.0.2 -netmask 255.255.255.0
add route 0.0.0.0 0.0.0.0 10.128.0.1
set ns config -nsvlan 10 -ifnum 1/1 -tagged NO
enable ns feature WL SP LB RESPONDER
add server 5.0.0.201 5.0.0.201
add service preboot_s5_201 5.0.0.201 HTTP 80 -gslb NONE -maxClient 0 -maxReq 0 -cip DISABLED -usip NO -useproxyport YES -sp OFF -cltTimeout 180 -svrTimeout 360 -CKA NO -TCPB NO -CMP NO
add lb vserver preboot_v4_101 HTTP 4.0.0.101 80 -persistenceType NONE -cltTimeout 180
</NS-CONFIG>
<NS-BOOTSTRAP>
<SKIP-DEFAULT-BOOTSTRAP>YES</SKIP-DEFAULT-BOOTSTRAP>
<NEW-BOOTSTRAP-SEQUENCE> NO </NEW-BOOTSTRAP-SEQUENCE>
</NS-BOOTSTRAP>
</NS-PRE-BOOT-CONFIG>
<!--NeedCopy-->
在 GCP 门户中使用自定义引导创建 VM 实例后,您可以按如下方式验证网络接口属性:
- 请选择您通过提供自定义引导信息所创建的实例。
- 导航到“网络接口属性”并验证 NIC 详细信息,如插图所示。

您可以在 ADC CLI 中运行 show nsip 命令,并验证前面 <NS-CONFIG> 部分中提供的配置是否在 ADC 设备首次启动时应用。

在 AWS 和 Azure 中连接和分离 NIC 的影响
AWS 和 Azure 提供了将网络接口连接到实例以及从实例分离网络接口的选项。连接或分离接口可能会改变接口位置。因此,Citrix 建议您不要从 NetScaler VPX 实例分离接口。如果在配置自定义引导时分离或连接接口,NetScaler VPX 实例会将新可用接口的主 IP 重新分配为管理接口位置的 NSIP。如果您分离的接口之后没有其他接口可用,则第一个接口将成为 NetScaler VPX 实例的管理接口。
例如,一个 NetScaler VPX 实例启动时带有 3 个接口:Eth0 (SNIP)、Eth1 (NSIP) 和 Eth2 (VIP)。如果您从实例中分离 Eth1 接口(这是一个管理接口),ADC 会将下一个可用接口 (Eth2) 配置为管理接口。因此,NetScaler VPX 实例仍然可以通过 Eth2 接口的主 IP 访问。如果 Eth2 也不可用,则剩余的接口 (Eth0) 将成为管理接口。因此,对 NetScaler VPX 实例的访问将继续存在。
让我们考虑以下不同的接口分配:Eth0 (SNIP)、Eth1 (VIP) 和 Eth2 (NSIP)。如果您分离 Eth2 (NSIP),由于 Eth2 之后没有新的接口可用,则第一个接口 (Eth0) 将成为管理接口。