簡體   English   中英

更改兩個 EC2 實例之間的主彈性網絡接口 (ENI)

[英]Change Primary Elastic Network Interface(ENI) between two EC2 Instances

我們可以將主彈性網絡接口從 Ec2 實例更改為另一個 Ec2 嗎?

我能夠在 Ec2 實例之間交換輔助 ENI,但無法將主 ENI 從一個 Ec2 實例更改為另一個。

是否可以更改主要 ENI?

這是不可能的。 主 ENI 在實例的生命周期內鎖定到實例,即使實例停止也是如此。

VPC 中的每個實例都有一個默認網絡接口,稱為主網絡接口 (eth0)。 您無法從實例中分離主網絡接口。

https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-eni.html

您可以替換幾乎所有其他內容(例如塊卷、用戶數據和屬性),而不是移動主 ENI。

就像在我的情況下,我想用它的 Dockerized 版本替換我的舊實例,但想重用它的舊 IP 地址。

我設法通過停止舊實例和新實例來做到這一點。 分離了兩個實例上的塊卷。 將新塊卷附加到舊實例上。 更新舊實例的用戶數據以匹配新實例的用戶數據。 更新了舊實例類型以匹配新實例類型。 而且我還必須通過在不同的主機上執行以下操作來啟用 ENA 支持:

aws ec2 modify-instance-attribute --instance-id <instance id> --ena-support

然后我再次啟動了舊實例。

不確定這是否完全回答了您的問題。 我想在這里區分兩個術語。 主要/次要和首選。 可以將輔助接口設為首選接口。

假設有兩個 EC2 實例 A 和 B。每個實例都有一個主 ENI - ENI_A 和 ENI_B,它們是 A 和 B 各自的操作系統用來路由流量的首選 ENI。 現在需要創建另一個 ENI,比如說 ENI_C (eth1),它可以用於遷移。 這個 ENI_C 可以從實例 A 上分離並附加到另一個實例 B 上,反之亦然(正如您所做的那樣)。

每當 ENI_C 附加到任何實例時,都必須將其設為首選網絡接口以路由流量。

這可以通過創建新的路由表來實現。 在那里添加一條路由到默認網關,並指定何時使用新路由表的條件。

例子:

echo "1   test" >> /etc/iproute2/rt_tables

ip rule add from 10.1.0.0/24 table test                # When to use test routing table

ip route add default via 10.1.0.1 dev eth1 table test  # The default gateway

您也可以通過將 metric 值設置為低於 100 的值,通過 ENI_C 添加高優先級默認路由來達到預期的效果

route add -net default gw 10.1.0.1 netmask 0.0.0.0 dev eth1 metric 50  

相應地更改上面的 IP。

要測試 ENI_C (eth1) 是否是您發送流量的首選 NIC,讓我們看看哪個 NIC 用於發送流量,例如到 Google DNS (8.8.8.8)

ip route get 8.8.8.8

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM