この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
จุดเริ่มต้น
สวัสดีครับ ผมไลท์ครับ ในครั้งนี้เลยอยากจะมาแนะนำวิธีการใช้งาน instance ใหม่ โดยใช้ Private IP กับ MAC Address ให้เหมือนกับตัวก่อนครับ โดยปกติหากคุณลบ EC2 instance ผ่าน management console MAC Address หรือ private IP addresses จะหายไป พอสร้าง instance ใหม่ทั้ง 2 อย่างนี้ก็เปลี่ยนเป็นตัวใหม่ไปแล้ว ซึ่งอาจเป็นปัญหาสำหรับบางท่านที่มีการใช้ซอฟต์แวร์ที่เชื่อมกับ MAC Address หรือ private IP addresses ตัวก่อนทำให้ใช้งานต่อได้ไม่ราบรื่นนักครับ
วิธีทำ
จากเอกสารนี้จะระบุว่า ENI(Elastic Network Interface)จะเก็บข้อมูลได้หลากหลายรวมไปถึง Private IP , MAC Address ด้วยครับ ด้วยเหตุนี้เราจึงสามารถใช้งาน ec2 instance ใหม่โดยไม่ลบ ENI และทำให้สามารถใช้ MAC Address และ Private IP เดิมแทนได้แม้ว่าจะลบ EC2 เดิมไปแล้วก็ตาม
ลงมือทำ
เริ่มที่ทำการสร้าง EC2 instance ให้อยู่ในสถานะพร้อมใช้งานก่อนครับ
โดยสามารถอ้างอิงขั้นตอนการสร้างจาก Blog ทางด้านบนได้เลยครับ
รายละเอียดของ EC2 instance ที่สร้างขึ้นมาครับ
Name : ENI_TEST_2.1
AMI : Amazon Linux 2 AMI Kernel 5.10
Instnce Type : t2.micro
KeyPair : ENI_TEST_2.1
Network Setting :
Security group name : ENI_TEST_2.1
Description : ENI_TEST_2.1
Security group rule 1
Type: ssh
Source type:My IP
ไปที่ EC2 instance ที่เปิดใช้งานแล้วเข้าไปตรวจสอบ MAC address และ Private IP รวมไปถึง instance ID เพื่อนำไปใช้เปรียบเทียบครับ โดยครั้งนี้จะใช้ PuTTY ในการตรวจสอบครับ
$ ip address
〜〜〜〜เนื้อหาที่ย่อแล้ว〜〜〜〜
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 qdisc pfifo_fast state UP group default qlen 1000
link/ether 02:d6:06:fa:68:4a brd ff:ff:ff:ff:ff:ff
inet 172.31.28.106/20 brd 172.31.31.255 scope global dynamic eth0
〜〜〜〜เนื้อหาที่ย่อแล้ว〜〜〜〜
$ curl http://169.254.169.254/latest/meta-data/instance-id
i-042**************
- " 02:d6:06:fa:68:4a " คือ MAC Address (link/ether 02:d6:06:fa:68:4a brd ff:ff:ff:ff:ff:ff)
- " 172.31.28.106/20 " คือ Private IP (inet 172.31.28.106/20 brd 172.31.31.255 scope global dynamic eth0)
- " i-042************** " คือ instance id
หรือจะตรวจสอบผ่านหน้า Management console ก็ได้ครับ
จากหน้า EC2 instance ไปที่หัวข้อ Networking
→ Interface ID
จะพบ ENI (eni-xxxxxxxx)
ของ EC2 instance ซึ่งจะแสดงรายละเอียดต่างๆ รวมไปถึง Private IP และ MAC address ด้วยครับ
จากนั้นเลือกที่ ENI ของ instance ไปที่ action
เลือก change termination behavior
✅ออกที่Delete on instance termination
เพื่อไม่ให้ ENI นี้หายไปหลังจากลบ instance ไปแล้วครับ จากนั้นเลือกSAVE
ก็เสร็จการตั้งค่าครับ
จากนั้นterminate
ec2 instance ผ่าน management console
หลังจาก instance ถูกลบแล้วสถานะ ENI ก็เปลี่ยนจาก In-use (ถูกใช้งานอยู่) เป็น available (พร้อมใช้งาน)
**ถ้าไม่เอา✅ออกจาก Delete on instance terminationในขั้นตอนก่อนหน้านี้ ENI นี้จะถูกลบไปด้วยครับ**
สร้าง instance ใหม่
ในขั้นตอนนี้เราจะนำ EC2 instance ใหม่ให้กลับมาใช้ ENI ตัวเดิมกันครับ
ถ้าต้องการ copy ข้อมูล instance ตัวก่อนสามารถทำได้ด้วยใช้ AMI ครับ สามารถดูรายละเอียดที่ Blog ด้านล่างครับ
และเลือก subnet
ตัวเดียวกับ ec2 instance ที่ลบไปแล้ว
**หากไม่เลือก subnet และ VPC เดียวกับ EC2 instance ที่ลบไปแล้วจะไม่สามารถเลือก ENI ตัวเดิมได้ครับ**
ในหัวข้อ network interface
คลิกที่เมนู pull down แล้วเลือก ENI เมื่อสักครู่เข้าไปได้เลย
*การเลือก ENI จะไม่สามารถระบุ SecurityGroup ได้ เพราะ ENI จะมีผูก SecurityGroup ตัวก่อนไว้อยู่แล้ว *
จากนั้นทำการ start instance
ตามปกติ แล้วรอขึ้นสถานะ "Running"
เมื่อ instance พร้อมใช้งานแล้วเข้าระบบไปที่ตรวจสอบ Private IP และ MAC Address
$ ip address
〜〜〜〜เนื้อหาที่ย่อแล้ว〜〜〜〜
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 qdisc pfifo_fast state UP group default qlen 1000
link/ether 02:d6:06:fa:68:4a brd ff:ff:ff:ff:ff:ff
inet 172.31.28.106/20 brd 172.31.31.255 scope global dynamic eth0
〜〜〜〜เนื้อหาที่ย่อแล้ว〜〜〜〜
$ curl http://169.254.169.254/latest/meta-data/instance-id
i-0ee**************
หรือจะเข้าไปตรวจสอบผ่าน network interface
บน Management console ก็ได้ครับ
จะเห็นได้ว่า instance ID เปลี่ยนแต่ Private IP และ MAC address เดิมยังอยู่แล้วสามารถใช้งานต่อได้ครับ
- " 02:d6:06:fa:68:4a " คือ MAC Address (link/ether 02:d6:06:fa:68:4a brd ff:ff:ff:ff:ff:ff)
- " 172.31.28.106/20 " คือ Private IP (inet 172.31.28.106/20 brd 172.31.31.255 scope global dynamic eth0)
- " i-0ee************** " คือ instance id
สุดท้ายนี้
เท่านี้เราก็สามารถเก็บ Private IP และ MAC Address เดิมไว้ใช้ได้แล้วครับ แต่ว่าหากลืมลบ ENI ที่ไม่จำเป็นต้องใช้งานแล้วแนะนำให้ลบดีกว่าเพราะว่ามันมีค่าบริการครับหวังว่าบทความนี้จะมีประโยชน์แก่ทุกท่านนะครับ