ขั้นตอนการสร้าง AWS EC2 Instance
AWS EC2 ย่อมาจาก Elastic Compute Cloud คือ บริการให้ผู้ใช้สร้าง Virtual Machine(VM) ของตัวเอง ซึ่งผู้ใช้สามารถติดตั้ง Software หรือ Service ต่างๆ ลงใน Server ของตัวเอง รวมทั้งยังสามารถปรับ Configuration ต่างๆภายในเครื่องที่เราสร้างขึ้นได้ด้วย
ค่าบริการของ EC2
การคิดค่าบริการ AWS จะคิดค่าบริการตามจำนวนชั่วโมงที่ใช้งานไปนับตั้งแต่ Start จนกระทั่งเรา Stop instance นั้นๆ ส่วนค่าบริการรายชั่วโมงนั้นจะขึ้นอยู่กับ Region และ Spec ของเครื่องที่เราสร้างขึ้นมา
ถ้าเป็น Instance ที่ใช้ OS และ Database เหล่านี้
- Linux
- Windows
- Windows ที่มี SQL Enterprise
- Windows ที่มี SQL Standard
- Windows ที่มี SQL Web Instances
จะเรียกเก็บเงินเป็นรายวินาที แต่ถ้าเป็น Instance อื่นๆนอกจากนี้จะคิดเป็นรายชั่วโมงทั้งหมด
AWS มี t2.micro เป็น Free-tier ให้เราใช้งานได้ฟรี 750 ชั่วโมงต่อเดือน และจะสามารถใช้ได้นาน 12 เดือนนับตั้งแต่วันที่สมัคร Account
ประเภทของ EC2 Instance
เราสามารถเลือก Instance Types ให้เหมาะกับการใช้งานแต่ละแบบตามความต้องการของ Application ได้ โดยจะมี Instance Types เราจะแบ่งออกเป็น Instance families และ Instance sizes
Instance Families
Instance Families เป็นการแบ่งแยกประเภท Compute Unit ตามการใช้งาน โดยมี Instance Families ต่างๆดังนี้
- General Purpose
- Computed Optimization
- Memory Optimization
- Storage Optimization
- Accelerate Computing
Instance Sizes
เป็นขนาดของ Instance ซึ่งจะแบ่งตามขนาดของ CPU และ Memory โดยจะแบ่งออกเป็น
Model | vCPU | CPU Credits/Hour | Mem(GiB) | Network Performance |
---|---|---|---|---|
t2.nano | 1 | 3 | 0.5 | Low |
t2.micro | 1 | 6 | 1 | Low to Moderate |
t2.small | 1 | 12 | 2 | Low to Moderate |
t2.medium | 2 | 24 | 4 | Low to Moderate |
t2.large | 2 | 36 | 8 | Low to Moderate |
t2.xlarge | 4 | 54 | 16 | Moderate |
t2.2xlarge | 8 | 81 | 32 | Moderate |
CPU Credits คือ ประสิทธิภาพสูงสุดของ CPU 1 Core ต่อ 1 นาทีซึ่ง เมื่อ EC2 Instance ใช้งาน CPU ก็จะนับ CPU Credits ถ้ามีการใช้งานน้อยกว่าปกติก็จะมี CPU Credits Balance มากขึ้น(จะแสดงตัววัดนี้ใน CloudWatch)
ประเภทของ EC2 Instance
เราสามารถเลือกประเภทของ EC2 ได้ 4 แบบดังนี้
- On-demand เป็นการใช้งานแบบ default ที่เราพูดถึงการใช้งาน EC2 มาก่อนหน้านี้จะเป็นแบบ On-demand
- Reserved Instance(RI) ในกรณีที่เราใช้งานระยะยาว 1-3 ปีแบบแน่นอน เราสามารถใช้ Reserved Instance เพื่อประหยัดค่าใช้จ่ายลงได้
- Spot Instance เป็น Instance แบบชั่วคราว ในงานที่ไม่ได้ต้องการ Availability ตลอดเวลาเราสามารถเลือก Spot Instance เข้ามาช่วยทำงานได้(ราคาของ Spot Instance จะถูกมาก)
Reserved Instance(RI)
การสร้าง EC2 Instance ก่อนหน้านี้จะเป็นการสร้างตามความต้องการแบบ(On-Demand) เรียกว่า On-Demand Instance แต่ถ้าเรามีความต้องการใช้งาน Instance ในระยะยาวเราสามารถเลือกใช้ Reserved Instances(RI) เพื่อประหยัดค่าใช้จ่ายได้ ซึ่งลักษณะของ Reserved Instance(RI) มีดังนี้
- สั่งซื้อล่วงหน้า 1 - 3 ปี
- ได้รับส่วนลดสูงสุดถึง 75%
- การใช้งานไม่ยืดหยุ่นเหมือน On-Demand แต่ราคาถูกกว่า
Reserved Instances(RI) มีให้เลือก 3 ประเภทดังนี้
- Standard สามารถปรับเปลี่ยนได้ตราบใดที่ยังใช้ Instance Type แบบเดิม และสามารถขายคืนได้ผ่านทาง Amazon Reserved Instance Marketplace
- Convertible สามารถปรับเปลี่ยน Instance Type ที่ใหญ่ขึ้นกว่าเดิมได้ แต่จะไม่สามารถขายคืนได้
- Scheduled เป็น Reserved Instances แบบกำหนดช่วงเวลาเป็น รายวัน(Daily), รายสัปดาห์(Weekly) หรือรายเดือน(Monthly)
Spot Instance
Spot Instance คือ Instance ที่ใช้ Resource ที่เหลือจากการใช้งาน ซึ่ง Spot Instance เป็นอีกทางเลือกสำหรับการประหยัดค่าใช้จ่าย แต่การใช้งาน Spot Instance นั้นไม่สามารถ garantee ความพร้อมใช้งานได้(ไม่มี High Availability) เพราะเหมือนเราไปขอยืมใช้ resource ของคนอื่นตอนที่เค้าไม่ได้ใช้งาน(ราคาเลยถูก) พอเจ้าของเค้าต้องใช้งาน resource นี้เราก็ต้องคืน resource แ ให้เค้าไป
ขั้นตอนการขอใช้ Spot Instance
- Login เข้าไปหน้า AWS Console
- เลือก EC2 Instance
- เลือกเมนู Spot Request ทางด้านซ้าย
- กำหนดราคาสูงสุด(Maximum Price) เพราะคนที่ให้ราคาสูงสุดจะได้เข้าใช้งาน Resource นั้น(Bidding)
- กดปุ่ม Request Spot Instance หลังจากนั้นก็ทำตาม Wizard เหมือนกับตอนสร้าง EC2 Instance ปกติทั่วไป
Tenancy
เราสามารถเลือกได้ว่าจะให้ EC2 Instance ของเราอยู่ใน Environment แบบไหน โดยจะแบ่งออกเป็น 3 ประเภทดังนี้
- Shared Tenancy เป็น Environment แบบปกติ ซึ่งเราจะอาศัยอยู่กับเพื่อนบ้านหลายๆคน แบบนี้จะมีความปลอดภัยต่ำสุด
- Dedicated Instance ถ้าเราต้องการความปลอดภัยมากขึ้น เราจะเลือกแบบ Dedicated Instance ซึ่งเราจะอยู่คนเดียวใน Physical Server เครื่องเดียว แต่เราจะไม่สามาถเข้าไปจัดการกับ Physical Server ด้านล่างได้
- Dedicated Hosts เมื่อถูกกำหนดจาก มาตรฐานที่เราต้อง Compile หรือ ข้อกำหนดของ License ที่ต้องอยู่ใน Physical Server เพียงคนเดียวและต้องสามารถเข้าไปจัดกับกับ Physical Server ด้านล่างได้ และราคาของ Dedicated Hosts จะมีราคาแพงกว่า EC2 Instance แบบอื่นๆ
Amazon Machine Image(AMI)
ในการทำงานกับ EC2 Instance เราจะต้องเลือก Image ซึ่งอาจจะมี แค่ Operating System(OS) อย่างเดียวหรือมี Database ด้วยก็ได้ จะเหมือนกับ ISO ไฟล์ใน Virtual Machine ทั่วไป
AMI จะประกอบไปด้วย
- Root Volume Template เป็น Hard drive(Instance Store Volume) ที่จัดเก็บ OS, Software และ Source code
- Launch Permissions ระบุ AWS Account ที่สามารถใช้ AMI ในการ launch instance ได้
- Block Device Mapping ระบุ Drive(EBS Volume) ที่ต้องการ Attach เข้าไปใน instance(เพิ่มจาก Root Volume)
เราสามารถสร้างและใช้งาน AMI จาก Amazon ได้โดยไม่มีค่าใช้จ่าย และนอกจากนี้เรายังสามารถซื้อหรือขาย AMI ผ่านทาง AWS Marketplace ได้ด้วย
ตอนที่เราเลือก AMI จะมีอยู่ 4 ทางเลือกดังนี้
- Quick AMI เป็น AMI ที่มีคนใช้เยอะมากๆ เป็นหน้าที่รวมเอส AMI ที่ popular มาให้เราเลือกใช้ได้ง่ายๆ
- My AMI เป็น AMI ของเราเอง ที่เราได้สร้างขึ้น
- AMI Market Place เป็น AMI ที่มาจาก Third-Party ที่น่าเชื่อถือซึ่งจะต้องมีค่า Subscription(ไม่ฟรี)
- Public AMI เป็น AMI ที่เป็น Public สามารถใช้งานได้ฟรี
EC2 Instance Lifecycle
การทำงานของ Instance จะมี Lifecycle ตามนี้
- เมื่อ Launch Instance ขึ้นมาเราต้องเลือก AMI หลังจากจบขั้นตอนการติดตั้ง Instance จะมี state เป็น Pending
- หลังจาก Boot เสร็จเรียบร้อยสถานะของ Instance จะเปลี่ยนเป็น Running
- เราสามารถเลือกที่จะหยุดการทำงานด้วยการ Stop หรือ Terminate
- Stop เราจะสามารถ Start กลับมาใหม่ได้
- Terminate จะเป็นการลบ Instance นั้นออกเลย ไม่สามารถนำกลับมาใช้งานใหม่ได้
Elastic Blob Storage(EBS)
Storage Volume คือ Disk ที่เราจะ attach เข้าไปใช้งานใน EC2 Instance มีอยู่ 2 ประเภทคือ
- Instance Store Volume คือ Disk ที่ attach เข้าไปใน EC Instance โดยจะใช้ในการ Boot(Root Volume) ซึ่งลักษณะของ Instance Store Volume จะเป็นดังนี้
- Physical Attach Disk เป็น Disk ที่อยุ่ในเครื่อง Server จริงๆ
- จะมี Volume ประเภทนี้แต่บาง Instance Type เท่านั้น
- ถ้าเป็น Root Volume จะไม่เสียค่าใช้จ่าย
- EBS Volumes คือ Disk ที่ attac้h เข้าไปใน Instance โดยผ่านทาง Network(ไม่ได้ต่อเข้าไปใน Server ตรงๆ) ซึ่งลักษณะของ EBS จะเป็นดังนี้
- EBS จะมีการ Replicate ข้าม Availability Zone(AZ) โดยอัตโนมัติ นั่นคือ EBS จะมี High Availability โดย default
- สามารถ Attach เข้าไปใน EC2 Instance ได้แค่ Instance เดียวเท่านั้น
- สามารถ Monitor การใช้งาน Storage ผ่านทาง CloudWatch ได้
- สามารถกำหนดให้ EBS และ Snapshot เข้ารหัส(Encryption) ข้อมูลที่อยู่ใน Disk ได้
- AWS คิดค่าใช้จ่ายแค่ storage ที่เราใช้เท่านั้น
EBS Snapshort
เราสามารถสร้าง Snapshot เพื่อบันทึกข้อมูลที่อยุ่ใน Disk ณ ขณะนั้นเก็บไว้(Backup) เหมือนกับ Virtual Machine ทั่วไป ซึ่ง EBS Snapshort จะมีลักษณะดังนี้
- การ Snapshot แต่ละครั้งจะเก็บแค่การเปลี่ยนแปลงเท่านั้น(Differencial Backup)
- เราสามารถลบ Snapshort ก่อนหน้าออกได้
- AWS จะคิดค่าใช้จ่ายตามปริมาณของข้อมูล(Gigabyte) ต่อเดือน
Snapshort จะถูกเข้ารหัสเมื่อเรา Enable Encryption ที่ EBS Volume
ขั้นตอนการสร้าง EC2 Instance
การสร้าง Instance ใน AWS EC2 มีดังนี้
-
Login เข้าไปที่ AWS Console
เมื่อ Loging เข้ามาแล้วให้คลิกที่เมนู Services ซ้ายบนและเลือกหัวข้อ EC2
-
เข้าไปที่ Instance และกดปุ่ม Launch instances เพื่อสร้าง Instance ใหม่
-
กรอกชื่อของ Instance ที่ต้องการสร้าง
-
เลือก Amazon Machine Image(AMI) AMI คือ Image ที่กำหนดค่าไว้ ทำหน้าที่เป็น Template สำหรับ Instance เราสามารถเลือกได้จาก Amazon Linux, MacOS, Ubuntu, Windows หรือตัวเลือกอื่นๆ
-
เลือก Instance Type Instance Type จะเป็นตัวกำหนดทรัพยากรที่ใช้ในการประมวลผล คือ CPU, Ram และอื่นๆ ซึ่งจะคิดค่าบริการแตกต่างกันไปตามประเภทที่เราเลือก ตั้งแต่ขนาดเล็กและราคาประหยัด ไปจนถึงขนาดใหญ่และประสิทธิภาพสูง
-
สร้าง Key Pair
-
ตั้งค่า Network Security Group ทำหน้าที่เสมือนเป็น Firewalls สำหรับ EC2 Instance ซึ่งจะควบคุมการรับส่งข้อมูล ทั้งขาเข้าและขาออก เราสามารถกำหนดค่า Security Group เพื่ออนุญาตหรือปฏิเสธการรับส่งข้อมูลจาก IP Address, Protocols และ Ports ได้ โดยในขั้นตอนนี้ เราจะสามารถเลือกสร้าง Security Group ใหม่ หรือเลือกจาก Security Group ที่มีอยู่แล้วก็ได้
เราไม่ควรมีจำนวน Security Group มากเกินไป และใน 1 Security Group ก็ไม่ควรมี Rules เยอะเกินไป
-
ตั้งค่า Storage Instance ต้องการพื้นที่ Storage สำหรับจัดเก็บทรพยากร Operating system, Applications และข้อมูล Data อื่นๆ เราสามารถเพิ่มและตั้งค่า Storage ได้ในขั้นตอนนี้
-
กดปุ่ม Launch เพิ่มยืนยันการสร้าง Instance
เพียงเท่านี้เราก็จะได้ EC2 Instance มาใช้งาน โดยมีรายละเอียดดังรูป
EC2 User data
เราสามารถใส่ Shell script เข้าไปเพื่อให้ทำงานตอนที่สร้าง Instance ขึ้นมาโดยระบุ User data ซึ่งในตอนที่เราสร้าง EC2 Instance เราจะต้องคลิกที่หัวข้อ Advanced Details และเลื่อนลงไปล่างสุดเราจะเจอช่องให้ใส่ User data ดังรูป ซึ่งเราสามารถใส่ Shell script เข้าไปแบบนี้
|
|
ในตัวอย่างนี้จะเป็นการติดตั้ง Apache Webserver และสร้าง index.html ขึ้นมาใน /var/www/html หลังจากที่เราสร้าง EC2 Instance เรียบร้อยเราก็จะสามารถเข้าถึงหน้า Web นี้ได้โดยกด Link ที่ Public DNS
EC2 Metadata
EC2 Metadata คือ ข้อมูลของ EC2 Instance เช่น Private IP Address, Public IP Address หรือ Public DNS ซึ่ง EC2 Metadata นั้นจะได้มาหลังจากที่เราสร้าง EC2 Instance ขึ้นมา
ซึ่งเราสามารถเข้าถึง Metadata ของ EC2 Instance ได้ด้วย curl command ดังนี้
|
|
ในตัวอย่างนี้เราจะใช้ curl command ในการดึง Instance ID ออกมาแสดงผลในหน้า Web ซึ่ง IP Address ที่เราสามารถสอบถาม Metadata ได้ก็คือ 169.254.169.254