彈性網卡(Elastic Network Interfaces,簡稱ENI)是一種在專有網絡VPC中為ECS實例提供網絡接口和IP地址的虛擬網絡接口。每臺ECS實例可以附加一個或多個彈性網卡。輔助彈性網卡可以在不同ECS實例之間進行解綁和綁定操作,這使得網絡配置更加靈活和可擴展,以滿足不同業務場景下的網絡需求。例如,實現多IP地址、多網卡、高可用網絡方案等。
每個彈性網卡可以包含以下主要屬性:
您的專有網絡VPC信息,包括交換機、可用區等。
您的VPC交換機子網的IPv4地址范圍內的一個主要私有IPv4地址。
您的VPC交換機子網的IPv4地址范圍內的一個或者多個輔助私有IPv4地址。
一個或多個公有IPv4地址。
一個或多個IPv6地址。
一個MAC地址。
一個或多個安全組。
基本概念
概念 | 說明 |
網卡類型 | 網卡類型包括主網卡(Primary)和輔助彈性網卡(Secondary)。VPC網絡中的每個實例都有默認的網卡,稱為主網卡,您無法獨立創建和從實例卸載主網卡;您可以創建并額外綁定到實例上的網卡,稱為輔助彈性網卡。 |
私有IPv4地址 | 每個彈性網卡都有一個交換機地址范圍內的私有IPv4地址,稱為主私網地址。您可以在創建輔助彈性網卡時指定主私網地址,如果不指定,我們將為您隨機分配。此外,您還可以為彈性網卡分配一個或者多個輔助私有IPv4地址,隨后回收該輔助私有IP地址,再分配給其他彈性網卡。彈性網卡的IP地址數量由實例規格決定。更多信息,請參見實例規格族中的單網卡私有IPv4地址數指標。 |
私有IPv6地址 | 如果專有網絡VPC和交換機開通了IPv6網段,您可以為彈性網卡分配一個或者多個輔助私有IPv6地址,有關開通交換機IPv6網段的信息,請參見創建和管理交換機。您使用的彈性網卡的IP地址數量由實例規格決定。更多信息,請參見實例規格族中的單網卡IPv6地址數指標。IPv6地址支持VPC內網通信,您可以通過開通IPv6公網帶寬來訪問公網或被公網訪問,更多信息,請參見Windows開通IPv6公網帶寬或者Linux開通IPv6公網帶寬。 |
彈性公網IP地址 | 您可以為彈性網卡綁定一個或者多個彈性公網IP,用于公網通信。更多信息,請參見綁定和解綁彈性公網IP。 |
多隊列 | 網卡多隊列是指實例規格支持的最大網卡隊列數。當單臺ECS實例的vCPU處理網絡中斷存在性能瓶頸時,您可以將實例中的網絡中斷分散給不同的vCPU處理,從而提升性能。更多信息,請參見配置網卡多隊列。 |
物理網卡映射 | 為了支持更高的網絡性能,部分實例規格支持物理網卡映射,即附加網卡時通過NetworkCardIndex參數映射到物理機的網卡上,從而避免帶寬爭搶,提升實例的帶寬能力。您可以使用DescribeInstanceTypes接口查詢實例規格支持的物理網卡信息。附加網卡時,若您要指定物理網卡索引,主網卡的物理網卡索引必須為0,輔助彈性網卡可根據實例規格中物理網卡的索引信息進行設置。您需要將輔助網卡和主網卡設置在不同索引上,才能最大限度發揮實例的網絡性能。相關使用方法,請參見基于JavaSDK實現彈性網卡操作最佳實踐。 |
常見場景
容器網絡方案:您可以使用基于彈性網卡的CNI (Container Network Interface)插件來管理K8s集群Pod的網絡地址和通信。例如,您可以使用阿里云開源的基于專有網絡VPC彈性網卡的容器網絡接口CNI插件Terway。它支持基于Kubernetes標準的網絡策略來定義容器間的訪問策略,提供了基于彈性網卡的VPC模式和基于彈性網卡輔助IP的ENI多IP模式,您可以靈活選擇來實現Kubernetes集群內部的網絡互通。更多信息,請參見使用Terway網絡插件。
網絡與安全管理:多塊網卡可以實現虛擬化網絡設備功能,例如配置有多塊網卡的負載均衡器、網絡地址轉換(NAT)服務器和代理服務器等。安全虛擬設備通常配置多個虛擬網卡,每塊網卡都配置有自己的專有IP地址,并根據需要配置公網IP地址與防火墻。一種典型設置是實例上的主網卡處理外部公網流量,輔助彈性網卡處理內部流量,并連接到您的VPC中的各個子網。主網卡有一個關聯的安全組控制從Internet(或者公網負載均衡器的TCP 80和443端口)對服務器的訪問,而私有網卡關聯的安全組只控制來自VPC內允許的私有子網的訪問。外部流量只能從公共外部客戶端通過主網卡的虛擬防火墻(安全組)強制卡點訪問專用VPC網絡。所有可從互聯網訪問的資源都應該與您的內部網絡及其服務分離開來。這在很大程度上限制了安全違規可能影響的范圍及造成的損害。
外網隔離:在分層網絡架構方面,一項最佳實踐是將面向公眾的服務與內部網絡及其服務隔離開來。您可以在連接到中層網絡(存在應用服務器)的每個網絡服務器上都掛載一塊輔助彈性網卡。一塊網卡接收面向公眾的流量,另一塊網卡處理訪問控制比較嚴格的后端專用流量。每個雙宿主實例會先接收和處理前端請求,然后啟動到后端的連接,接著將請求發送至后端網絡上的服務器。通過配置獨立網卡(一個面向公眾,另一個專用),您可以將獨立的防火墻規則和訪問控制分別應用到每塊網卡,并在從公開網域到專用網域的通信過程中強制實施安全功能。
高可用:如果您的實例失效,其網卡可掛載到預配置的熱/冷備用實例,以快速恢復服務。例如,您可以將一塊網卡用作連接數據庫實例或NAT實例等關鍵服務的主要或輔助網卡。如果實例失效,您(或更有可能是代表您運行的代碼)可以將網卡掛載到熱備用實例。由于網卡保留了私有IP地址、彈性EIP地址和MAC地址,因此只要您將網卡掛載到替代實例,網絡流量就會立即開始流向備用實例。
流量隔離:在某些應用中,某些流量極其敏感。在這種情況下,可使用彈性網卡將這部分流量與其他流量分離開來,以保證在出現流量高峰或流量擁塞時可以使用最低帶寬。每塊網卡都設置一個虛擬隊列。虛擬隊列可防止一個VPC網絡出現的帶寬高峰和DDoS攻擊影響其他VPC網絡。每塊網卡的虛擬隊列還可以防止隊頭阻塞,并使每個I/O接口都能公平共用該實例的CPU。
最佳實踐
彈性網卡是免費的,但數量是有限制的。更多信息,請參見彈性網卡數量限制。
您可以在實例運行時(熱)、實例停止時或實例啟動時(冷)將彈性網卡綁定到相同可用區的實例上,每臺實例可以綁定的網卡數量由實例規格決定,更多信息,請參見實例規格族中的彈性網卡數。但是,您不能卸載主網卡,更多信息,請參見綁定彈性網卡。
如果實例位于相同可用區時,您可以將網卡從一個實例卸載,然后掛載到另一個實例,將彈性網卡綁定到實例不會增加或加倍主機實例的網絡帶寬。
您創建彈性網卡時可同時為網卡指定多個安全組,多個安全組的規則會疊加作用于當前網卡,如果您為網卡設置了多個輔助IPv4或者IPv6地址,這些IPv4或者IPv6地址也同時屬于您指定的安全組且不可更改,如果您要調整網卡的安全組,請參見修改彈性網卡屬性。調整后自動生效,關于安全組的更多信息,請參見安全組概述。
通過API方式查詢網卡列表,您可以使用更加穩定、高效的NextToken方式。更多信息,請參見DescribeNetworkInterfaces。
CentOS 6.8 64位、CentOS 7.3 64位、Windows Server 2008 R2及更高版本等鏡像的實例會自動在該實例的操作系統上配置網卡,其他鏡像的實例需要您自己手動配置。更多信息,請參見配置輔助彈性網卡。
使用CLI、API或開發工具包啟動實例時,您可以指定輔助彈性網卡。更多信息,請參見綁定彈性網卡。
您可以使用阿里云開源的基于專有網絡VPC彈性網卡的容器網絡接口CNI插件Terway來管理K8s集群Pod的網絡地址和通信。更多信息,請參見使用Terway網絡插件。
如果將來自同一子網的兩個或多個網卡附加到一個實例,可能會遇到非對稱路由等聯網問題。您可以通過在一張彈性網卡(包括主網卡和輔助彈性網卡)上分配一個或多個輔助私網IP地址,實現專有網絡VPC類型ECS實例的高利用率和負載故障時的流量轉移。更多信息,請參見分配輔助私網IP地址。
單臺ECS實例vCPU處理網絡中斷存在性能瓶頸時,您可以將實例中的網絡中斷分散給不同的CPU處理,從而提升性能。更多信息,請參見配置網卡多隊列。
您可以使用eRDMA彈性網卡將線下的RDMA應用平滑遷移到云上,獲取成本更低、彈性更好的高性能RDMA服務,例如高性能計算、AI訓練、大數據處理等。更多信息,請參見eRDMA概述。
彈性網卡數量較多時,您可以通過標簽服務來分組管理。更多信息,請參見標簽概述。
您可以通過彈性網卡添加負載均衡SLB的后端服務器。更多信息,請參見通過彈性網卡添加后端服務器。
管理彈性網卡
通過ECS控制臺或者調用API,您可以對彈性網卡資源進行全面的管理和配置。
通過ECS控制臺管理:您可以直觀地查看、創建、編輯和刪除彈性網卡,以及進行綁定和解綁操作。
通過調用API管理:您可以編寫腳本或使用SDK來批量管理、自動化操作和集成彈性網卡資源。
通過調用API管理
創建一個輔助彈性網卡:CreateNetworkInterface
刪除一個輔助彈性網卡:DeleteNetworkInterface
查詢彈性網卡列表:DescribeNetworkInterfaces
將輔助彈性網卡綁定至實例:AttachNetworkInterface
為一塊彈性網卡分配一個或多個輔助私有IP地址:AssignPrivateIpAddresses
從一塊彈性網卡刪除一個或多個輔助私有IP地址:UnassignPrivateIpAddresses
從實例上解綁輔助彈性網卡:DetachNetworkInterface
修改彈性網卡名稱、所屬安全組和描述:ModifyNetworkInterfaceAttribute
查詢實例上附加的彈性網卡信息:DescribeInstances