關於虛擬網路介面
虛擬網路介面 (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 路徑 (例如針對雙重「虛擬網路功能 (VNFs)」上主動/主動 HA 配置所配置的路徑),則可以停用過濾以避免封包流失。 停用過濾功能允許安全群組規則和網路 ACL 允許的套件,但不會強制每個 TCP 連線與 RFC 793 TCP 通訊協定一致。
在 建立 或 更新 VNI 時,您可以選擇通訊協定狀態過濾模式 (auto、enable、disable)。 預設值 (auto)
會根據 VNI 的目標資源類型啟用或停用過濾。 如果目標類型是裸機伺服器,則會停用過濾; 對於虛擬伺服器實例或檔案共用裝載,則會啟用過濾。
通訊協定狀態過濾模式僅適用於 VNI。 在舊樣式網路介面上,模式是隱藏的,且行為一律設為 auto。
開始使用虛擬網路介面
您可以使用 VNI 來管理個別資源中的 IP 位址及安全群組,其生命週期與目標資源無關。
-
請確定您已連接 VPC 及子網路。 如需相關資訊,請參閱 使用 IBM Cloud 主控台 建立 VPC 資源或 使用 CLI 及 API 建立。
-
確保您具有正確的 IAM 許可權 來建立 VNI。
-
使用專用 IP 位址、公用 IP 位址及安全群組 建立虛擬網路介面。
-
佈建目標時,將 VNI 連接至支援的目標資源。 目前有三種支援的目標類型:
- 虛擬伺服器實例
- Bare metal server
- 佈建裸機伺服器時,請將 VNI 連接至主要網路連接子項資源。 請參閱 在 VPC 上建立 Bare Metal Servers。
- 如果您具有具有主要網路連接的現有裸機伺服器,則可以在裸機伺服器上佈建其他網路連接,將 VNI 連接至新的網路連接。 請參閱 建立網路附件。
- 檔案共用裝載
- 佈建新檔案共用裝載時,請將 VNI 連接至檔案共用裝載目標。 請參閱 建立檔案共用及裝載目標 及 檔案共用的裝載目標。
也可以在佈建每一個目標的環境定義中建立 VNI。 換句話說,您不需要提前建立 VNI。 稍後,您可以透過確保 --auto-delete 是 false (自動釋放 交換器),來刪除實例並保留 VNI。 然後,您可以使用相同的 VNI 來建立新的實例。
使用案例 1: 具有虛擬網路介面的高可用性
虛擬網路介面可減少切換至失效接手實例所需的時間。 在不使用虛擬網路介面的虛擬伺服器實例中,失效接手需要遞送變更,可能需要數分鐘才能傳播。 在下列範例中,您具有已配置網路介面的主要虛擬伺服器實例,以及具有自己網路介面的備用虛擬伺服器實例。 如果主要虛擬伺服器實例失敗,您必須讓備份虛擬伺服器實例上線,並重新配置路徑以使用備份實例的網路介面。
透過使用虛擬網路介面,您可以將它從一個實例移至另一個實例。 虛擬網路介面的獨立生命週期表示它會保留其 IP 位址,而且您不需要重新配置路徑,將失效接手時間縮短到秒。
使用案例 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 |
「網路介面」 |
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 |
any | deleting |
| any | 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 |