关于虚拟网络接口
虚拟网络接口 (VNI) 是子网中网络接口的逻辑抽象。 它可以连接到目标资源,为该资源提供网络连接。 作为具有 CRN 的顶级资源,VNI 的生命周期独立于它所连接到的目标资源 (除非 auto_delete
设置为 true
)。 此外,它还具有自己的一组 IAM 许可权。
VNI 具有以下用于定义联网策略的属性:
- 主 IP 和辅助 IP
- 安全组
- IP 电子欺骗
- 基础架构 NAT
- 协议状态过滤
当 VNI 从目标拆离并连接到其他目标时,将保留这些策略。 用于更改属性的许可权是在 VNI 上设置的,而不是在 VNI 的目标上设置的。
浮动 IP 和流日志收集器是可以连接到 VNI 的资源。 当 VNI 将连接从一个目标切换到另一个目标时,这些连接的资源将保持连接到 VNI。 此外:
- 对连接到 VNI 的浮动 IP 的引用可作为 VNI 的子集合进行检索。
- 可以通过列出流日志收集器,按
target.id
进行过滤,然后指定 VNI 的id
来检索连接到 VNI 的流日志收集器。
并非所有受支持的目标资源都支持所有 VNI 策略。 有关更多信息,请参阅已知限制。
主要优势和功能
虚拟网络接口亮点包括:
- 能够从 VPC 子网分配多个辅助专用 IPv4 IP 地址。
- 用于定义和实施安全组和唯一 IAM 策略的选项,使您能够更好地控制网络安全性。
- 高可用性解决方案的可扩展性和灵活性。
- 存在而不连接到服务器,以及从一个实例或资源移动到另一个实例或资源的选项,可减少故障转移时间。
- 连接浮动 IP,主/辅助保留 IP 和安全组的能力。
规划注意事项
在创建 VNI 之前,请查看以下注意事项:
-
将继续支持使用子网络接口创建资源,但仅在虚拟网络接口上支持新的联网功能,例如辅助 IP 地址。
-
虚拟网络接口上的所有 IP 地址必须位于同一子网中。
-
虽然实例或裸机服务器不允许混合使用接口类型,但子网允许混合使用实例和裸机服务器,其中有些具有子网络接口,有些具有虚拟网络接口。
-
创建虚拟网络接口时,必须配置主 IP 地址。 您可以在创建虚拟网络接口时配置其他 (辅助) 保留 IP 地址,也可以稍后单独添加辅助 IP 地址。 所有辅助 IP 地址必须与主 IP 地址位于同一子网中。
-
基础架构 NAT 将目标地址从通过浮动 IP 分配的公共 IP 地址转换为虚拟服务器实例的专用 IP 地址。 您可以在启用了基础架构 NAT 的虚拟网络接口上配置一个浮动 IP 地址。 这样配置的虚拟网络接口可以由实例或裸机服务器使用。
-
对于允许 IP 电子欺骗且已禁用基础架构 NAT 的虚拟网络接口,您可以配置多个浮动 IP 地址。 这样配置的虚拟网络接口只能由裸机服务器使用。
-
如果虚拟网络接口的
auto-delete
属性设置为false
,那么如果您随后删除虚拟服务器实例,那么虚拟网络接口将保留。 然后,可以将虚拟网络接口连接到其他目标资源。 -
从目标拆离 VNI 后,可以将其重新连接到下列其中一项:
- 新的共享安装目标 (如果禁用了 IP 欺骗,没有辅助 IP,基础架构 NAT 设置为
true
,并且未禁用协议状态过滤) - 实例上的新网络连接 (如果基础架构 NAT 设置为
true
) - 裸机服务器上的新网络连接 (支持裸机时)
- 新的共享安装目标 (如果禁用了 IP 欺骗,没有辅助 IP,基础架构 NAT 设置为
协议状态过滤方式
协议状态过滤会监视流经虚拟网络接口 (VNI) 的每个网络连接,并根据当前连接状态和协议删除任何无效的包。 如果使用双向 ECMP 路由,例如在双虚拟网络功能 (VNF) 上为主动/主动 HA 配置配置配置的路由,那么可以禁用过滤以避免丢包。 禁用过滤将允许安全组规则和网络 ACL 允许的包,但不会强制每个 TCP 连接与 RFC 793 TCP 协议保持一致。
在 创建 或 更新 VNI 时,可以选择协议状态过滤方式 (auto
,enable
,disable
)。 缺省值 (auto
)
根据 VNI 的目标资源类型启用或禁用过滤。 如果目标类型是裸机服务器,那么将禁用过滤; 对于虚拟服务器实例或文件共享安装,将启用过滤。
协议状态过滤方式仅在 VNI 上可用。 在旧式网络接口上,方式不可见,并且行为始终设置为 auto
。
虚拟网络接口入门
您可以使用 VNI 来管理具有独立于目标资源的生命周期的独立资源中的 IP 地址和安全组。
-
确保连接了 VPC 和子网。 有关更多信息,请参阅 使用 IBM Cloud 控制台 或 使用 CLI 和 API 创建 来创建 VPC 资源。
-
确保您具有正确的 IAM 许可权 来创建 VNI。
-
使用专用 IP 地址,公共 IP 地址和安全组 创建虚拟网络接口。
-
供应目标时,将 VNI 连接到受支持的目标资源。 目前,有三种受支持的目标类型:
- 虚拟服务器实例
- Bare metal server
- 供应裸机服务器时,将 VNI 连接到主网络连接子资源。 请参阅 在 VPC 上创建 Bare Metal Servers。
- 如果您具有具有主网络连接的现有裸机服务器,那么可以在裸机服务器上供应额外的网络连接,从而将 VNI 连接到新的网络连接。 请参阅 创建网络连接。
- 文件共享安装
- 供应新的文件共享安装时,将 VNI 连接到文件共享安装目标。 请参阅 创建文件共享和安装目标 和 文件共享的安装目标。
还可以在供应其中每个目标的上下文中创建 VNI。 换句话说,您不需要提前创建 VNI。 稍后,您可以通过确保 --auto-delete
为 false
(自动发行版 开关) 来删除实例并保留 VNI。 然后,可以使用相同的 VNI 创建新实例。
用例 1: 具有虚拟网络接口的高可用性
虚拟网络接口可缩短切换到故障转移实例所需的时间。 在不使用虚拟网络接口的虚拟服务器实例中,故障转移需要路由更改,这些更改可能需要几分钟才能传播。 在以下示例中,您配置了具有网络接口的主虚拟服务器实例,以及具有其自己的网络接口的备份虚拟服务器实例。 如果主虚拟服务器实例发生故障,那么必须使备份虚拟服务器实例联机,并重新配置路径以使用备份实例的网络接口。
通过使用虚拟网络接口,可以将其从一个实例移至另一个实例。 虚拟网络接口的独立生命周期意味着它会保留其 IP 地址,并且您不必重新配置路由,从而将故障转移时间缩短到秒。
{: caption="虚拟网络接口工作流程虚拟网络接口工作" caption-side="bottom"}
用例 2: 具有虚拟网络接口的辅助 IP 地址
可以对运行应用程序的多个实例的虚拟服务器实例进行分段,使应用程序的每个实例都有自己的 IP 地址。
在这个例子中,一个虚拟服务器实例运行着三个SQL数据库应用程序实例。 每个 SQL 实例都需要有自己的 IP 地址。 通过在虚拟网络接口上使用辅助 IP 地址,可以将不同的 IP 地址分配给每个应用程序实例。
对旧 API 客户机的支持
为了与旧客户机兼容,API 响应提供了每个网络连接及其关联虚拟网络接口作为子网络接口的只读表示:
- 检索 实例网络接口 时,将按如下所示派生属性:
网络接口属性 | 映射自 |
---|---|
allow_ip_spoofing |
virtual_network_interface.allow_ip_spoofing |
created_at |
network_attachment.created_at |
floating_ips |
virtual_network_interface.floating_ips |
href |
network_attachment.href (/network_attachments 已替换为 /network_interfaces ) |
id |
network_attachment.id |
name |
network_attachment.name |
port_speed |
network_attachment.port_speed |
primary_ip |
virtual_network_interface.primary_ip |
resource_type |
"network_interface" |
security_groups |
virtual_network_interface.security_groups |
status |
请参阅“实例网络接口状态值”表 |
subnet |
virtual_network_interface.subnet |
type |
network_attachment.type |
根据下表确定 status
值:
网络连接 lifecycle_state |
VNI lifecycle_state |
status |
---|---|---|
deleting |
任意值 | deleting |
任意值 | deleting |
deleting |
failed |
任何其他 deleting |
failed |
任何其他 deleting |
failed |
failed |
pending , suspended , updating , waiting |
任何其他 deleting 或 failed |
pending |
任何其他 deleting 或 failed |
pending , suspended , updating , waiting |
pending |
stable |
stable |
available |
- 在检索 裸机服务器网络接口 时,除了以下特定于裸机服务器网络接口的属性外,还会派生相同的属性:
网络接口属性 | 映射自 |
---|---|
enable_infrastructure_nat |
virtual_network_interface.enable_infrastructure_nat |
mac_address |
virtual_network_interface.mac_address |
interface_type |
network_attachment.interface_type |
allowed_vlans |
network_attachment.allowed_vlans |
vlan |
network_attachment.vlan |
allow_interface_to_float |
network_attachment.allow_interface_to_float |