View a markdown version of this page

Snowball Edge 上计算实例的网络配置 - AWS Snowball Edge开发人员指南

AWS Snowball Edge不再向新客户提供。新客户应探索AWS DataSync在线传输、用于安全物理传输AWS的数据传输终端或AWS合作伙伴解决方案。对于边缘计算,请浏览 AWS Out posts。

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

Snowball Edge 上计算实例的网络配置

在 Snowball Edge 上启动计算实例后,必须通过创建网络接口为其提供 IP 地址。Snowball Edges 支持两种网络接口,一种是虚拟网络接口,另一种是直接网络接口。

虚拟网络接口 (VNI)-虚拟网络接口是连接到 Snowball Edge 上的 EC2-compatible实例的标准网络接口。无论您是否还使用直接网络接口,都必须为每个 EC2-compatible 实例创建一个 VNI。通过 VNI 的流量受您设置的安全组保护。您只能将 VNI 与用于控制 Snowball Edge 的物理网络端口相关联。

注意

VNI 将使用与管理 Snowball Edge 相同的物理接口(RJ45、SFP+ 或 QSFP)。不使用用于设备管理的物理接口而在其他物理接口上创建 VNI 可能会导致意外结果。

直接网络接口(DNI):直接网络接口(DNI)是一项高级网络特征,可实现组播流、传递路由和负载均衡等应用场景。通过在不进行任何中间转换或过滤的情况下为实例提供第 2 层网络访问权限,您可以在 Snowball Edge 的网络配置上获得更大的灵活性并提高网络性能。DNI 支持 VLAN 标记和自定义 MAC 地址。DNI 上的流量不受安全组保护。

在 Snowball Edge 设备上,DNI 可以与 RJ45、SFP 或 QSFP 端口相关联。每个物理端口最多支持 63 个 DNI。DNI 不必与用于管理 Snowball Edge 的同一个物理网络端口相关联。

注意

Snowball Edge Storage Optimized(具有 EC2 计算功能)设备不支持 DNI。

在 Snowball Edge 上使用 DNI 或 VNI 的先决条件

在配置 VNI 或 DNI 之前,请确保您已符合以下先决条件。

  1. 确保设备已通电并且某个物理网络接口(如 RJ45 端口)已连接到 IP 地址。

  2. 获取与你在 Snowball Edge 上使用的物理网络接口关联的 IP 地址。

  3. 配置 Snowball Edge 客户端。有关更多信息,请参阅 为 Snowball Edge 客户端配置配置文件

  4. 配置AWS CLI。有关更多信息,请参阅《AWS Command Line Interface用户指南》AWS CLI中的《入门》。

  5. 解锁设备。

    • 用于AWS OpsHub解锁设备。有关更多信息,请参阅使用 nowball Edge。AWS OpsHub

    • 使用 Snowball Edge 客户端解锁设备。有关更多信息,请参阅 解锁 Snowball Edge

  6. 在设备上启动 EC2-compatible 实例。您将要将 VNI 与该实例相关联。

  7. 使用 Snowball Edge 客户端运行 describe-device 命令。该命令的输出将提供物理网络接口 ID 的列表。有关更多信息,请参阅 查看 Snowball Edge 的状态

  8. 标识您要使用的物理网络接口的 ID 并记下它。

在 Snowball Edge 上设置虚拟网络接口 (VNI)

在确定物理网络接口的 ID 后,您可以使用该物理接口设置虚拟网络接口(VNI)。请使用以下过程设置 VNI。在创建 VNI 之前,请务必执行先决条件任务。

创建 VNI 并关联 IP 地址
  1. 使用 Snowball Edge 客户端运行 create-virtual-network-interface 命令。以下示例显示使用两种不同的 IP 地址分配方法(DHCPSTATIC)运行此命令。DHCP 方法使用动态主机配置协议(DHCP)。

    snowballEdge create-virtual-network-interface \ --physical-network-interface-id s.ni-abcd1234 \ --ip-address-assignment DHCP \ --profile profile-name //OR// snowballEdge create-virtual-network-interface \ --physical-network-interface-id s.ni-abcd1234 \ --ip-address-assignment STATIC \ --static-ip-address-configuration IpAddress=192.0.2.0,Netmask=255.255.255.0 \ --profile profile-name

    该命令返回一个 JSON 结构,其中包含 IP 地址。记下该 IP 地址,以便在稍后的流程中与该ec2 associate-addressAWS CLI命令一起使用。

    每当你需要这个 IP 地址时,都可以使用 Snowball Edge Client 命令 Snow describe-virtual-network-interfaces ball Edge 客户端命令或AWS CLI命令aws ec2 describe-addresses来获取它。

  2. 使用AWS CLI将 IP 地址与 EC2-compatible 实例关联,将红色文本替换为您的值:

    aws ec2 associate-address --public-ip 192.0.2.0 --instance-id s.i-01234567890123456 --endpoint http://Snowball Edge physical IP address:8008

在 Snowball Edge 上设置直接网络接口 (DNI)

注意

直接网络接口功能将于 2021 年 1 月 12 日当天或之后推出,并且在所有可用 Snowball Edges AWS 区域的地方都可用。

在 Snowball Edge 上获得 DNI 的先决条件

在设置直接网络接口(DNI)前,您必须执行先决条件部分中的任务。

  1. 在设置 DNI 之前,请执行先决条件任务。有关说明,请参阅在 Snowball Edge 上使用 DNI 或 VNI 的先决条件

  2. 此外,您必须在设备上启动实例,创建 VNI 并将其与该实例关联。有关说明,请参阅在 Snowball Edge 上设置虚拟网络接口 (VNI)

    注意

    如果您通过执行现场软件更新为现有设备添加了直接联网,则必须重新启动设备两次才能完全启用该特征。

创建 DNI 并关联 IP 地址
  1. 通过运行以下命令创建直接网络接口并将其连接到 Amazon EC2-compatible 实例。在下一步中,您需要设备的 MAC 地址。

    create-direct-network-interface [--endpoint endpoint] [--instance-id instanceId] [--mac macAddress] [--physical-network-interface-id physicalNetworkInterfaceId] [--unlock-code unlockCode] [--vlan vlanId]

    选项

    --endpoint <endpoint> 要将此请求发送到的端点。您设备的端点将是一个使用 https 方案且后跟一个 IP 地址的 URL。例如,如果您设备的 IP 地址为 123.0.1.2,则您的设备的终端节点将是 https://123.0.1.2.

    --instance-id <instanceId>要连接接口的 EC2-compatible 实例 ID(可选)。

    --mac <macAddress> 设置网络接口的 MAC 地址(可选)。

    --physical-network-interface-id <physicalNetworkInterfaceId> 用于创建新虚拟网络接口的物理网络接口 ID。您可以使用 describe-device 命令确定 Snowball Edge 上可用的物理网络接口。

    --vlan <vlanId> 为接口设置分配的 VLAN(可选)。指定后,从接口发送的所有流量都将使用指定的 VLAN ID 进行标记。对指定的 VLAN ID 对传入流量进行筛选,并在传递到实例之前删除所有 VLAN 标记。

  2. 创建 DNI 并将其与您的 EC2-compatible 实例关联后,您必须在 Amazon EC2-compatible 实例中进行两项配置更改。

    • 首先是进行更改,确保发送给与 EC2-compatible 实例关联的 VNI 的数据包通过 eth0 发送。

    • 第二项更改应将您的直接网络接口配置为在启动时使用 DCHP 或静态 IP。

    以下是适用于亚马逊 Linux 2 和 CentOS Linux 的 shell 脚本的示例,这些脚本可进行这些配置更改。

    Amazon Linux 2
    # Mac address of the direct network interface. # You got this when you created the direct network interface. DNI_MAC=[MAC ADDRESS FROM CREATED DNI] # Configure routing so that packets meant for the VNI always are sent through eth0. PRIVATE_IP=$(curl -s http://169.254.169.254/latest/meta-data/local-ipv4) PRIVATE_GATEWAY=$(ip route show to match 0/0 dev eth0 | awk '{print $3}') ROUTE_TABLE=10001 echo "from $PRIVATE_IP table $ROUTE_TABLE" > /etc/sysconfig/network-scripts/rule-eth0 echo "default via $PRIVATE_GATEWAY dev eth0 table $ROUTE_TABLE" > /etc/sysconfig/network-scripts/route-eth0 echo "169.254.169.254 dev eth0" >> /etc/sysconfig/network-scripts/route-eth0 # Query the persistent DNI name, assigned by udev via ec2net helper. # changable in /etc/udev/rules.d/70-persistent-net.rules DNI=$(ip --oneline link | grep -i $DNI_MAC | awk -F ': ' '{ print $2 }') # Configure DNI to use DHCP on boot. cat << EOF > /etc/sysconfig/network-scripts/ifcfg-$DNI DEVICE="$DNI" NAME="$DNI" HWADDR=$DNI_MAC ONBOOT=yes NOZEROCONF=yes BOOTPROTO=dhcp TYPE=Ethernet MAINROUTETABLE=no EOF # Make all changes live. systemctl restart network
    CentOS Linux
    # Mac address of the direct network interface. You got this when you created the direct network interface. DNI_MAC=[MAC ADDRESS FROM CREATED DNI] # The name to use for the direct network interface. You can pick any name that isn't already in use. DNI=eth1 # Configure routing so that packets meant for the VNIC always are sent through eth0 PRIVATE_IP=$(curl -s http://169.254.169.254/latest/meta-data/local-ipv4) PRIVATE_GATEWAY=$(ip route show to match 0/0 dev eth0 | awk '{print $3}') ROUTE_TABLE=10001 echo from $PRIVATE_IP table $ROUTE_TABLE > /etc/sysconfig/network-scripts/rule-eth0 echo default via $PRIVATE_GATEWAY dev eth0 table $ROUTE_TABLE > /etc/sysconfig/network-scripts/route-eth0 # Configure your direct network interface to use DHCP on boot. cat << EOF > /etc/sysconfig/network-scripts/ifcfg-$DNI DEVICE="$DNI" NAME="$DNI" HWADDR="$DNI_MAC" ONBOOT=yes NOZEROCONF=yes BOOTPROTO=dhcp TYPE=Ethernet EOF # Rename DNI device if needed. CURRENT_DEVICE_NAME=$(LANG=C ip -o link | awk -F ': ' -vIGNORECASE=1 '!/link\/ieee802\.11/ && /'"$DNI_MAC"'/ { print $2 }') ip link set $CURRENT_DEVICE_NAME name $DNI # Make all changes live. systemctl restart network