在 SC2S 中创建 VPX 亚马逊机器镜像 (AMI)
贡献者
作者: 吉尔·费彻尔,架构师
SC2S 是一个气隙隔离的 AWS 实例,无法访问 AWS Marketplace。所有 Amazon Machine Images (AMI) 必须使用 vmimport 工具手动上传到环境中。由于 Citrix ADC VPX 设备本身的特性,镜像文件过大,无法使用 vmimport 工具。必须创建 VPX AMI,以便将来可以启动使用。我们专门为 SC2S 创建了以下方法,但它也可用于将来没有 Marketplace 或 Marketplace 中没有 VPX AMI 产品的类似用例。
在 SC2S 中创建 VPX:低侧(商业 AWS)的步骤
-
在 UC2S(商业)中创建一个 VPC 和子网,使用与 Citrix ADC 位于 SC2S 中的 VPC 相同的 CIDR 块。(例如,使用 VPC 向导创建一个大小为 10.0.0.0/16 的 VPC,其中包含一个大小为 10.0.0.0/24 的公共子网。)
这可以通过两种方式之一完成:
- 在 SC2S 中创建一个具有基本 CIDR 和子网划分的测试 VPC
- 复制 SC2S 中使用的 CIDR 和子网划分
注意:
对于 C2S,VPC 创建通过服务完成,并自动从超网分配 IP 空间。在这种情况下,第二种方法是必要的。对于 GovCloud,请等待进一步的指示,或从 Marketplace 下载最新版本的 VPX。



-
从 AWS Marketplace 中的 Citrix ADC AMI 部署一个 EC2 实例。该实例必须是 客户许可的。使用非 Nitro 实例(例如,
m4.xlarge)。

选择您在前面步骤中创建的 VPC。禁用 自动分配公共 IP。

为实例命名一个易于识别的名称。我们将在后续步骤中创建许多实例,因此有必要识别每个实例以进行进一步配置。
安全组会自动填充。点击 下一步 完成实例启动的其余步骤。

-
创建一个 Windows Server 2019 或 2016 Base 堡垒主机,以访问您的 VPX 实例。
此实例可以是
m4.xlarge,并且必须与 Citrix ADC 构建在相同的 VPC 和可用区 (AZ) 中,并具有自动分配的公共 IP。根卷至少需要 45 GiB 的通用型 SSD (gp2)。注意:
如果环境允许创建弹性 IP (EIP),您可以跳过堡垒主机的创建,VPX 实例可以直接从网络或互联网连接。出于安全考虑以及在气隙环境中 EIP 不可用,我们建议使用堡垒主机。

为实例命名一个易于识别的名称(例如,SC2S: WS2016 Bastion Low)。

为简单起见,创建一个允许 所有流量 的安全组。您可以稍后锁定此安全组。

实例准备就绪后,使用公共 IP 通过 RDP 连接到计算机。然后下载 PuTTY 和 WinSCP,并复制用于创建 VPX 实例的密钥对。这需要使用 PuTTYgen 将 .pem 转换为 .ppk。在服务器管理器中,禁用 Windows 防火墙和 Internet Explorer 增强安全配置。使用 PuTTY,验证您是否能够通过 SSH 连接到新部署的 Citrix ADC 设备。记下实例的
nsroot密码。默认情况下,这是 AWS InstanceID。记下实例的私有 IP,因为在后续步骤中需要它。在此阶段,您已拥有一个正常运行的 Citrix ADC 设备。注意:
不要配置此 VPX!只需以
nsroot身份登录以验证功能。 -
从 AWS 控制台关闭 思杰 ADC 实例。从 思杰 ADC 实例分离根 EBS 卷。

要分离根卷,请单击根设备
/dev/sda1,然后单击卷 ID。在“卷”选项卡中,选择该卷,将其命名为易于识别的名称(例如,SC2S: Commercial Root Vol),并记下卷 ID。单击 操作 > 分离卷 > 确定。卷状态现在应为 可用。
-
部署新的 Amazon Linux EC2 实例(Amazon Linux 2 AMI (HVM)、SSD 卷类型、64 位、EBS 支持、启用 ENA)。此实例应与之前部署的 VPX 实例具有相同的实例类型(例如
m4.xlarge),并且应位于相同的 VPC 和子网中,并禁用“自动分配公共 IP”设置。将实例命名为易于识别的名称(例如 SC2S: Linux Low)。暂时将安全组设置为允许所有流量。实例启动后,将其关闭。
-
将从 VPX 分离的根 EBS 卷附加到 Linux EC2 实例。

通过单击 实例 > 附加 选择您创建的 Linux 实例。

-
创建一个容量高于根 VPX 卷的卷。VPX 卷的根卷容量为 30 GiB。创建一个容量为 35 GiB 的卷。将卷类型设置为通用型 SSD (gp2),并将其命名为易于识别的名称(例如,SC2S: Copy Low Vol)。将新卷附加到 Linux 实例。



-
启动 Linux 实例,并使用私钥文件从堡垒主机通过 SSH 连接到它。以
ec2-user*身份登录。 -
在新 EBS 卷上创建分区。
注意:
在此示例中,VPX 根卷 SC2S: Commercial Root Vol 是
/dev/sdf,新创建的 35 GiB 卷 SC2S: Copy Low Vol 是/dev/sdg。分区仅在 SC2S: Copy Low Vol 上创建。在 AWS 控制台中,这些块设备由符号链接表示。在 Linux 实例中,/dev/sdf和/dev/sdg分别被称为/dev/xvdf和/dev/xvdg。在 Linux CLI 中,验证没有文件系统。响应应仅为 data。
sudo file –s /dev/xvdg <!--NeedCopy-->创建文件系统。
sudo mkfs -t xfs /dev/xvdg <!--NeedCopy-->创建挂载点并挂载设备。
sudo mkdir /copy <!--NeedCopy-->sudo mount /dev/svdg /copy <!--NeedCopy-->验证设备已挂载,并且有三个设备(例如
xvda、xvdf和xvdg)。lsblk <!--NeedCopy-->使用
fdisk创建分区,选择n表示新建,p表示主分区,1表示分区号,并对第一个和最后一个扇区使用默认值(回车,回车)。按 CRTL+C 退出。sudo fdisk /dev/xvdg >n >p >1 >enter >enter >CTRL+C <!--NeedCopy--> -
将 VPX 根卷以块级别复制到新的 EBS 卷(例如,将 SC2S: Commercial Root Vol 复制到 SC2S: Copy Low Vol)。此处创建的文件
citrixADC.img随后可以移动到 SC2S 环境中。sudo dd if=/dev/xvdf of=/copy/citrixADC.img status=progress <!--NeedCopy-->此复制过程可能需要数小时。
文件复制完成后,验证文件是否在 /copy 目录中,并更改文件权限以允许读取、写入和执行。
ls /copy sudo chmod 777 /copy/citrixADC.img <!--NeedCopy--> -
使用 WinSCP 将
citrixADC.img文件传输到可以 DTO 到高侧的位置。如有必要,堡垒机足够大,可以复制镜像文件。
在 SC2S 中创建 VPX - 高侧步骤
-
创建与低侧步骤 1 中相同的 CIDR 块和子网的 VPC,或者使用现有 VPC。在此示例中,VPC 的 CIDR 为 10.0.0.0/16,子网 IP 空间为 10.0.0.0/16。这极其重要,因为最终创建的 VPX 必须与商业市场中的原始 VPX 具有相同的 IP。

-
在新 VPC 和子网中,启动一个 Amazon Linux 实例(Amazon Linux 2 AMI (HVM),SSD 卷类型,EBS 支持,ENA 启用,64 位),其实例类型与低侧部署的 Citrix ADC 实例相同(例如
m4.xlarge)。为实例命名一个易于识别的名称(例如 SC2S: Linux High)。当实例准备就绪后,将其关闭。
- 添加两个 EBS 卷,其容量高于传输文件大小(例如 35 GiB)。这些卷必须与低侧创建的卷具有相同的 SSD 类型 (gp2)。
- 第一个卷用于从低侧复制。为该卷命名一个易于识别的名称(例如“SC2S: Copy High Vol”)。将此卷作为
/dev/sdf附加到 SC2S 中的新 Linux 实例。这是实例上/dev/xvdf的符号链接。

- 第二个卷将成为新 VPX 的根卷。为该卷命名一个易于识别的名称(例如“SC2S: Final VPX Vol”)。将此卷作为
/dev/sdg附加到 SC2S 中的新 Linux 实例。这是实例上/dev/xvdg的符号链接。

该实例现在已附加三个块设备,包括根设备。启动实例。

- 第一个卷用于从低侧复制。为该卷命名一个易于识别的名称(例如“SC2S: Copy High Vol”)。将此卷作为
-
以与低侧堡垒机相同的方式创建高侧 Windows Server 2019 或 2016 基础堡垒机。此实例应位于新创建的 VPC 和子网中,并且文件传输空间应至少为 45 GiB。将“自动分配公共 IP”设置为启用。为实例命名一个易于识别的名称(例如“SC2S: WS2016 Bastion_High”),并将安全组设置为暂时允许“所有流量”。
-
堡垒机准备就绪后,使用公共 IP 通过 RDP 连接到机器,下载 PuTTY 和 WinSCP,并复制用于创建 VPX 实例的密钥对。这需要使用 PuTTYgen 将 .pem 转换为 .ppk。在服务器管理器中,暂时禁用 Windows 防火墙和 Internet Explorer 增强安全配置。
-
将 citrixADC.img 文件复制到新的堡垒机。
-
从堡垒主机使用 AWS 私钥和用户名
ec2-user启动到新的 Linux 实例(例如“SC2S: Linux High”)的 PuTTY 会话。 -
使用
lsblk验证实例上是否存在所有设备。
-
验证
/dev/xvdf设备没有文件系统,然后创建一个。注意:
请勿在
/dev/xvdg设备上创建文件系统。sudo file –s /dev/xvdf sudo mkfs –t xfs /dev/xvdf <!--NeedCopy-->
-
为设备创建挂载点,挂载设备,并验证卷挂载点为
/copy。sudo mkdir /copy sudo mount /dev/xvdf /copy lsblk <!--NeedCopy-->
-
使用
fdisk创建分区。sudo fdisk /dev/xvdf >n >p >1 >enter >enter >CTRL+C <!--NeedCopy-->
-
更改 /copy 目录的权限。
sudo chmod 777 /copy <!--NeedCopy-->
-
在堡垒主机上使用 WinSCP 连接到 Linux 实例。将 citrixADC.img 文件复制到 /copy 目录。文件复制完成后,从 WinSCP 控制台更改权限,允许所有用户读取、写入和执行。
-
在 Linux CLI 中,使用以下命令将镜像文件复制到 /dev/xvdg 设备:
sudo dd if=/copy/citrixADC.img of=/dev/xvdg status=progress <!--NeedCopy-->
-
复制完成后,运行
lsblk命令以验证 Citrix ADC 的分区是否显示在 /dev/xvdg 设备上。lsblk <!--NeedCopy-->
-
Power off the Linux instance and detach the /dev/xvdg (/dev/sdg) volume (for example “SC2S: Final VPX Vol”).


-
部署一个新的 Linux 实例,其实例类型与低侧 VPX 的实例类型完全相同,位于高侧创建的相同 VPC 和子网中(Amazon Linux 2 AMI (HVM),SSD 卷类型,EBS 支持,启用 ENA,64 位,
m4.xlarge,安全组设置为允许“所有流量”)。在设置过程中,将 IP 设置为与本文档上一节中提到的低侧 VPX 的 IP 相同。实例准备就绪后,关闭该实例。
-
分离新部署的 Linux 实例的根卷并附加分离的实例(例如“SC2S: Final VPX Vol”)。在附加过程中,将设备指定为根卷(即
/dev/xvda)。
-
启动实例。使用高侧堡垒主机,通过 PuTTY/SSH 连接到实例以验证 VPX 的功能。使用本文档上一节中提到的实例 ID 密码以
nsroot身份登录,并执行一个简单命令。sh version <!--NeedCopy-->
从已启动的 VPX 实例创建 AMI
-
登录到 Citrix ADC 实例。进入 shell 以 root 身份执行必要的修改。
shell <!--NeedCopy-->
-
Forcefully and recursively remove the following directories and files from the ADC software manually. To remove the files and directories manually, add rm –rf in front of each. ‘/nsconfig/ns.conf’ ‘/nsconfig/ssh/’ ‘/nsconfig/ssl/’ ‘/nsconfig/aws_bootstrap’ ‘/nsconfig/rainman.conf’ ‘/var/nslog’ ‘/var/log/messages’ ‘/var/log/.log’ ‘/var/core/’ ‘/nsconfig/.AWS/’ ‘/var/db’ ‘/etc/resolv.conf’ ‘/flash/BUILD’ ‘/mpsconfig/pgxl/.ssh/id_rsa.pub’ ‘/var/pubkey/nsroot/.ssh/authorized_keys’ ‘/var/pubkey/root/.ssh/authorized_keys’

或运行此脚本:
#!/bin/sh -x rm -rf /nsconfig/ns.conf* rm -rf /nsconfig/ssh/* rm -rf /nsconfig/ssl/* rm -rf /nsconfig/aws_bootstrap rm -rf /nsconfig/rainman.conf rm -rf /var/nslog rm -rf /var/log/messages* rm -rf /var/log/*.log rm -rf /var/core/* rm -rf /nsconfig/.AWS/ rm -rf /var/db rm -rf /etc/resolv.conf rm -rf /flash/BUILD rm -rf /mpsconfig/pgxl/.ssh/id_rsa.pub rm -rf /var/pubkey/nsroot/.ssh/authorized_keys rm -rf /var/pubkey/root/.ssh/authorized_keys <!--NeedCopy--> -
将 /flash/nsconfig 目录的权限更改为 755。
chmod 755 /flash/nsconfig <!--NeedCopy-->
-
请验证没有残留的密钥。如果存在残留密钥,请强制并递归地将其删除。
find / -type f -name “authorized*” rm -rf <filename> <!--NeedCopy-->
-
验证 /nsconfig/license 中没有剩余的许可证。如果存在,请强制递归删除它们。
注意:
此文件夹中将有其他目录和文件(例如 SSL 和 XML),仅在存在时删除许可证文件。
ls /nsconfig/license ls /nsconfig/license/ssl ls /nsconfig/license/xml <!--NeedCopy-->
-
从 AWS 控制台关闭机器。实例停止后,从该实例创建 AMI。

为实例命名一个所有人都可识别的名称,因为这会公开共享给 SC2S 的所有管理员(例如“Citrix ADC VPX 13.0–47.24”)

-
一旦 AMI 准备就绪,从中部署一个实例以验证功能。

-
将 AMI 的权限设置为
Public,以便 SC2S 的所有管理员都可以使用它。
如何升级到新版本
-
对于 SC2S 中现有的 Citrix ADC VPX:使用 https://citrix.com/downloads 提供的升级软件升级 VPX,将文件 DTO 到高侧。按照 升级 Citrix ADC 独立设备 中的指导进行安装。推荐的升级方法是使用命令行。
-
对于 SC2S 中新的 Citrix ADC VPX:创建一个 AMI 以公开共享。从现有 AMI 启动一个实例,按照上一节所述升级机器,并执行本文档中“从已启动的 VPX 实例创建 AMI”一节中的步骤。