高级概念

在 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)的步骤

  1. 在 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。

    VPC 控制台图像

    VPC 配置向导图像,步骤 1

    VPC 向导图像,步骤 2

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

    步骤 1 的图像,选择 AMI

    步骤 2 的图像,选择实例类型

    选择您在前面步骤中创建的 VPC。禁用 自动分配公共 IP步骤 3 的图像,配置实例详细信息

    为实例命名一个易于识别的名称。我们将在后续步骤中创建许多实例,因此有必要识别每个实例以进行进一步配置。

    安全组会自动填充。点击 下一步 完成实例启动的其余步骤。

    向导图像

  3. 创建一个 Windows Server 2019 或 2016 Base 堡垒主机,以访问您的 VPX 实例。

    此实例可以是 m4.xlarge,并且必须与 Citrix ADC 构建在相同的 VPC 和可用区 (AZ) 中,并具有自动分配的公共 IP。根卷至少需要 45 GiB 的通用型 SSD (gp2)。

    注意:

    如果环境允许创建弹性 IP (EIP),您可以跳过堡垒主机的创建,VPX 实例可以直接从网络或互联网连接。出于安全考虑以及在气隙环境中 EIP 不可用,我们建议使用堡垒主机。

    步骤 1 的图像,选择 AMI

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

    步骤 5 的图像,添加标签

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

    步骤 6 的图像,配置安全组

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

    注意:

    不要配置此 VPX!只需以 nsroot 身份登录以验证功能。

  4. 从 AWS 控制台关闭 思杰 ADC 实例。从 思杰 ADC 实例分离根 EBS 卷。

    新 EC2 映像

    要分离根卷,请单击根设备 /dev/sda1,然后单击卷 ID。在“卷”选项卡中,选择该卷,将其命名为易于识别的名称(例如,SC2S: Commercial Root Vol),并记下卷 ID。单击 操作 > 分离卷 > 确定。卷状态现在应为 可用

    实例详细信息映像

  5. 部署新的 Amazon Linux EC2 实例(Amazon Linux 2 AMI (HVM)、SSD 卷类型、64 位、EBS 支持、启用 ENA)。此实例应与之前部署的 VPX 实例具有相同的实例类型(例如 m4.xlarge),并且应位于相同的 VPC 和子网中,并禁用“自动分配公共 IP”设置。将实例命名为易于识别的名称(例如 SC2S: Linux Low)。暂时将安全组设置为允许所有流量。实例启动后,将其关闭。

    添加标签映像

  6. 将从 VPX 分离的根 EBS 卷附加到 Linux EC2 实例。

    新 EC2 映像

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

    附加卷映像

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

    创建并附加卷

    创建并附加卷

    创建并附加卷

  8. 启动 Linux 实例,并使用私钥文件从堡垒主机通过 SSH 连接到它。以 ec2-user* 身份登录。

  9. 在新 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-->
    

    验证设备已挂载,并且有三个设备(例如 xvdaxvdfxvdg)。

    lsblk
    <!--NeedCopy-->
    

    使用 fdisk 创建分区,选择 n 表示新建,p 表示主分区,1 表示分区号,并对第一个和最后一个扇区使用默认值(回车,回车)。按 CRTL+C 退出。

    sudo fdisk /dev/xvdg
    >n
    >p
    >1
    >enter
    >enter
    >CTRL+C
    <!--NeedCopy-->
    
  10. 将 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-->
    
  11. 使用 WinSCP 将 citrixADC.img 文件传输到可以 DTO 到高侧的位置。如有必要,堡垒机足够大,可以复制镜像文件。

在 SC2S 中创建 VPX - 高侧步骤

  1. 创建与低侧步骤 1 中相同的 CIDR 块和子网的 VPC,或者使用现有 VPC。在此示例中,VPC 的 CIDR 为 10.0.0.0/16,子网 IP 空间为 10.0.0.0/16。这极其重要,因为最终创建的 VPX 必须与商业市场中的原始 VPX 具有相同的 IP。

    图片占位符

  2. 在新 VPC 和子网中,启动一个 Amazon Linux 实例(Amazon Linux 2 AMI (HVM),SSD 卷类型,EBS 支持,ENA 启用,64 位),其实例类型与低侧部署的 Citrix ADC 实例相同(例如 m4.xlarge)。为实例命名一个易于识别的名称(例如 SC2S: Linux High)。当实例准备就绪后,将其关闭。

    图片占位符

  3. 添加两个 EBS 卷,其容量高于传输文件大小(例如 35 GiB)。这些卷必须与低侧创建的卷具有相同的 SSD 类型 (gp2)。
    1. 第一个卷用于从低侧复制。为该卷命名一个易于识别的名称(例如“SC2S: Copy High Vol”)。将此卷作为 /dev/sdf 附加到 SC2S 中的新 Linux 实例。这是实例上 /dev/xvdf 的符号链接。

    图片占位符

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

    图片占位符

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

    图片占位符

  4. 以与低侧堡垒机相同的方式创建高侧 Windows Server 2019 或 2016 基础堡垒机。此实例应位于新创建的 VPC 和子网中,并且文件传输空间应至少为 45 GiB。将“自动分配公共 IP”设置为启用。为实例命名一个易于识别的名称(例如“SC2S: WS2016 Bastion_High”),并将安全组设置为暂时允许“所有流量”。

  5. 堡垒机准备就绪后,使用公共 IP 通过 RDP 连接到机器,下载 PuTTY 和 WinSCP,并复制用于创建 VPX 实例的密钥对。这需要使用 PuTTYgen 将 .pem 转换为 .ppk。在服务器管理器中,暂时禁用 Windows 防火墙和 Internet Explorer 增强安全配置。

  6. 将 citrixADC.img 文件复制到新的堡垒机。

  7. 从堡垒主机使用 AWS 私钥和用户名 ec2-user 启动到新的 Linux 实例(例如“SC2S: Linux High”)的 PuTTY 会话。

  8. 使用 lsblk 验证实例上是否存在所有设备。

    图片占位符

  9. 验证 /dev/xvdf 设备没有文件系统,然后创建一个。

    注意:

    请勿在 /dev/xvdg 设备上创建文件系统。

    sudo file –s /dev/xvdf
    sudo mkfs –t xfs /dev/xvdf
    <!--NeedCopy-->
    

    图片占位符

  10. 为设备创建挂载点,挂载设备,并验证卷挂载点为 /copy

    sudo mkdir /copy
    sudo mount /dev/xvdf /copy
    lsblk
    <!--NeedCopy-->
    

    图片占位符

  11. 使用 fdisk 创建分区。

    sudo fdisk /dev/xvdf
     >n
     >p
     >1
     >enter
     >enter
     >CTRL+C
    <!--NeedCopy-->
    

    图片占位符

  12. 更改 /copy 目录的权限。

    sudo chmod 777 /copy
    <!--NeedCopy-->
    

    图片占位符

  13. 在堡垒主机上使用 WinSCP 连接到 Linux 实例。将 citrixADC.img 文件复制到 /copy 目录。文件复制完成后,从 WinSCP 控制台更改权限,允许所有用户读取、写入和执行。

  14. 在 Linux CLI 中,使用以下命令将镜像文件复制到 /dev/xvdg 设备:

    sudo dd if=/copy/citrixADC.img of=/dev/xvdg status=progress
    <!--NeedCopy-->
    

    图片占位符

  15. 复制完成后,运行 lsblk 命令以验证 Citrix ADC 的分区是否显示在 /dev/xvdg 设备上。

    lsblk
    <!--NeedCopy-->
    

    图片占位符

  16. Power off the Linux instance and detach the /dev/xvdg (/dev/sdg) volume (for example “SC2S: Final VPX Vol”).

    图片占位符

    图片占位符

  17. 部署一个新的 Linux 实例,其实例类型与低侧 VPX 的实例类型完全相同,位于高侧创建的相同 VPC 和子网中(Amazon Linux 2 AMI (HVM),SSD 卷类型,EBS 支持,启用 ENA,64 位,m4.xlarge,安全组设置为允许“所有流量”)。在设置过程中,将 IP 设置为与本文档上一节中提到的低侧 VPX 的 IP 相同。实例准备就绪后,关闭该实例。

    图片占位符

  18. 分离新部署的 Linux 实例的根卷并附加分离的实例(例如“SC2S: Final VPX Vol”)。在附加过程中,将设备指定为根卷(即 /dev/xvda)。

    图片占位符

  19. 启动实例。使用高侧堡垒主机,通过 PuTTY/SSH 连接到实例以验证 VPX 的功能。使用本文档上一节中提到的实例 ID 密码以 nsroot 身份登录,并执行一个简单命令。

    sh version
    <!--NeedCopy-->
    

    图片占位符

从已启动的 VPX 实例创建 AMI

  1. 登录到 Citrix ADC 实例。进入 shell 以 root 身份执行必要的修改。

    shell
    <!--NeedCopy-->
    

    图片占位符

  2. 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’

    图像占位符:rm -rf

    或运行此脚本:

    #!/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-->
    
  3. 将 /flash/nsconfig 目录的权限更改为 755。

    chmod 755 /flash/nsconfig
    <!--NeedCopy-->
    

    图像占位符

  4. 请验证没有残留的密钥。如果存在残留密钥,请强制并递归地将其删除。

    find / -type f -name “authorized*”
    rm -rf <filename>
    <!--NeedCopy-->
    

    图像占位符

  5. 验证 /nsconfig/license 中没有剩余的许可证。如果存在,请强制递归删除它们。

    注意:

    此文件夹中将有其他目录和文件(例如 SSL 和 XML),仅在存在时删除许可证文件。

    ls /nsconfig/license
    ls /nsconfig/license/ssl
    ls /nsconfig/license/xml
    <!--NeedCopy-->
    

    图像占位符

  6. 从 AWS 控制台关闭机器。实例停止后,从该实例创建 AMI。

    图像占位符

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

    图像占位符

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

    图片占位符

  8. 将 AMI 的权限设置为 Public,以便 SC2S 的所有管理员都可以使用它。

如何升级到新版本

  • 对于 SC2S 中现有的 Citrix ADC VPX:使用 https://citrix.com/downloads 提供的升级软件升级 VPX,将文件 DTO 到高侧。按照 升级 Citrix ADC 独立设备 中的指导进行安装。推荐的升级方法是使用命令行。

  • 对于 SC2S 中新的 Citrix ADC VPX:创建一个 AMI 以公开共享。从现有 AMI 启动一个实例,按照上一节所述升级机器,并执行本文档中“从已启动的 VPX 实例创建 AMI”一节中的步骤。

在 SC2S 中创建 VPX 亚马逊机器镜像 (AMI)