AWS Cloud Quest · แลป 2
File Systems in the Cloud — Amazon EFS
เป้าหมายของแล็บ
สร้างระบบไฟล์ที่ EC2 หลายเครื่องสามารถ mount และเข้าถึงไฟล์ชุดเดียวกันได้ โดยไม่ต้องสร้างสำเนาไฟล์แยกในแต่ละเครื่อง ตัวอย่างสถานการณ์คือหลายสาขาหรือหลาย web server ต้องใช้ไฟล์ภาพชุดเดียวกัน
Amazon EFS คืออะไร
Amazon Elastic File System (EFS) เป็นบริการ file storage ที่จัดการให้โดย AWS และขยายพื้นที่จัดเก็บตามการใช้งาน รองรับโปรโตคอล NFSv4 และสามารถให้ EC2 หลายเครื่องเข้าถึง file system เดียวกันได้พร้อมกัน
EFS เหมาะกับ shared file system สำหรับ Linux workloads เช่น ไฟล์ที่เว็บเซิร์ฟเวอร์หลายเครื่องต้องใช้ร่วมกัน แตกต่างจาก Amazon S3 ซึ่งเป็น object storage และ Amazon EBS ซึ่งเป็น block storage ที่โดยทั่วไปผูกกับ EC2 ในรูปแบบ volume
ส่วนประกอบที่ต้องรู้
- EFS file system: พื้นที่จัดเก็บไฟล์ที่แชร์ร่วมกัน
- Mount target: จุดเชื่อมต่อเครือข่ายที่ทำให้ client ใน VPC เชื่อมต่อ EFS ได้ โดยปกติจะจัดให้สอดคล้องกับ Availability Zone ที่ต้องการเข้าถึง
- EC2 instance: เครื่องที่ mount file system แล้วอ่าน/เขียนไฟล์
- Security group: ควบคุมการเชื่อมต่อเครือข่ายระหว่าง EC2 กับ EFS
- NFS port 2049/TCP: พอร์ตหลักที่ใช้สำหรับการเชื่อมต่อ NFS ไปยัง EFS
EFS มีชนิดหลักที่ควรรู้:
- Regional: เก็บข้อมูลซ้ำซ้อนข้ามหลาย Availability Zones ภายใน Region เดียว เหมาะเมื่อให้ความสำคัญกับ availability และความทนทาน
- One Zone: จัดเก็บใน Availability Zone เดียว โดยทั่วไปมีต้นทุนต่ำกว่า Regional แต่ความทนทานต่อการสูญเสีย AZ ต่ำกว่า
แนวทางทำแล็บ
- ตรวจสอบ VPC, Availability Zone และ EC2 instances ที่โจทย์เตรียมไว้
- สร้าง EFS file system หรือเลือก file system ที่โจทย์ระบุ
- สร้าง/ตรวจสอบ mount targets ใน Availability Zones ที่ EC2 ต้องใช้งาน
- กำหนด security group ของ EFS ให้รับ inbound TCP 2049 จาก security group ของ EC2 ที่ได้รับอนุญาต ไม่ควรเปิดให้ทุก IP โดยไม่จำเป็น
- ตรวจสอบว่า EC2 มี outbound rule ที่อนุญาตการเชื่อมต่อไปยัง EFS ตามที่ต้องใช้
- ติดตั้ง/ใช้ EFS mount helper ตามระบบปฏิบัติการและคำแนะนำของโจทย์ จากนั้น mount EFS ไปยัง directory
- สร้างไฟล์หรือ directory จาก EC2 เครื่องแรก
- mount file system เดียวกันจาก EC2 เครื่องที่สอง แล้วตรวจว่าเห็นไฟล์เดียวกัน
- ทดสอบสร้างหรืออ่านไฟล์ และให้ Cloud Quest ตรวจสอบผล
คำสั่ง mount ที่ใช้จริงขึ้นกับ AMI, EFS DNS name และคำแนะนำของแล็บ จึงไม่ควรคัดลอกคำสั่งตัวอย่างจากที่อื่นโดยไม่แทนค่าของ environment ตัวเอง
การแก้ปัญหาที่พบบ่อย
- Mount ไม่ได้: ตรวจ mount target, VPC/subnet, DNS, security group และ TCP 2049
- EC2 เครื่องที่สองไม่เห็นไฟล์: ตรวจว่า mount ไปยัง EFS file system เดียวกัน ไม่ใช่คนละ EFS หรือ local directory
- เปิดพอร์ตผิด: NFS สำหรับ EFS ใช้ TCP 2049 ไม่ใช่ HTTP 80 หรือ HTTPS 443
- คิดว่า EFS เป็น backup โดยอัตโนมัติ: EFS เป็น shared file storage ไม่ควรถือว่าแทนระบบ backup และ recovery ได้ทั้งหมด ต้องออกแบบ backup ตามความต้องการ
- คิดว่า EFS ใช้ได้กับทุก OS: EFS รองรับ NFS workloads และไม่รองรับการ mount โดยตรงจาก Windows EC2 แบบเดียวกับ Linux NFS client
EFS, EBS และ S3 ต่างกันอย่างไร
| บริการ | ประเภท storage | เหมาะกับ |
|---|---|---|
| Amazon EFS | File storage | แชร์ไฟล์และ directory ระหว่าง compute clients หลายเครื่อง |
| Amazon EBS | Block storage | ดิสก์/volume สำหรับ EC2 เช่น boot volume หรือข้อมูลแอป |
| Amazon S3 | Object storage | รูปภาพ เอกสาร วิดีโอ backup และข้อมูลแบบ object ผ่าน API |
จำก่อนสอบ
- EFS = shared file system; EC2 หลายเครื่อง mount ใช้ไฟล์ร่วมกันได้
- NFS = TCP 2049
- ต้องมี network path, mount target และ security group ที่ถูกต้อง
- Regional EFS กระจายข้อมูลข้ามหลาย AZ; One Zone อยู่ใน AZ เดียว
- EFS ไม่ใช่บริการเดียวกับ S3 หรือ EBS