Amazon Aurora Serverless v2 รองรับความจุขั้นต่ำที่ 0 ACU แล้ว

Amazon Aurora Serverless v2 รองรับความจุขั้นต่ำที่ 0 ACU แล้ว

บทความนี้แปลมาจากบทความภาษาญี่ปุ่นชื่อว่า Amazon Aurora Serverless v2が最小キャパシティ0に対応し、自動停止・再開が可能になりました โดยเจ้าของบทความนี้คือ คุณ quiver

Amazon Aurora Serverless v2 จัดการทรัพยากรด้วยหน่วยที่เรียกว่า Aurora Capacity Unit (ACU) และเป็นฐานข้อมูลแบบ serverless ที่สามารถปรับขนาดตามปริมาณงานได้ครั้งละ 0.5 ACU
ซึ่งก่อนหน้านี้ ACU ขั้นต่ำคือ 0.5 แต่ตอนนี้รองรับความจุที่ 0 แล้ว ทำให้อินสแตนซ์ที่ไม่มีกิจกรรมสามารถหยุดและเริ่มต้นใหม่โดยอัตโนมัติได้

ตัวอย่างเช่น ในกรณีที่ใช้ Aurora Serverless v2 เดียวกันทั้งในสภาพแวดล้อมการผลิตและการพัฒนา หากตั้งค่า ACU ขั้นต่ำเป็น 0 สำหรับสภาพแวดล้อมการพัฒนาที่ไม่ได้ใช้งานในช่วงกลางคืนหรือวันหยุดสุดสัปดาห์ อินสแตนซ์จะหยุดทำงานโดยอัตโนมัติเมื่อไม่มีการใช้งาน ซึ่งช่วยลดต้นทุนได้

Aurora-1

https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/WhatsNew.html

Database engine ที่รองรับ

รองรับ Aurora engine ต่อไปนี้

PostgreSQL: 16.3, 15.7, 14.12, 13.15
MySQL: 3.08.0 ขึ้นไป

ลองทำดู

เลือกหน้าจอสร้างคลัสเตอร์ Aurora และเลือกเวอร์ชัน Database engine ที่รองรับ ACU 0

เมื่อเลือก "Serverless v2" ในส่วน DB Instance Class และตั้งค่าความจุขั้นต่ำเป็น 0 คุณจะสามารถกำหนดระยะเวลา ("Pause after inactivity") ที่ระบบจะลดขนาดเป็น ACU 0 หลังจากไม่มีกิจกรรม โดยสามารถตั้งค่าได้ตั้งแต่ 5 นาทีถึง 24 ชั่วโมง

Aurora-2

หลังจากนั้น ให้สร้างคลัสเตอร์ตามปกติ
เมื่อปล่อยทิ้งไว้เป็นระยะเวลาหนึ่ง ระบบจะแสดงเหตุการณ์ที่บ่งชี้ว่า Database instance ได้หยุดชั่วคราวแล้ว

Aurora-3

เมื่อตรวจสอบ ServerlessDatabaseCapacity ใน CloudWatch Metrics คุณจะเห็นว่า ACU ลดลงเหลือ 0.5 ก่อน จากนั้นจะลดลงเป็น 0 หลังจากครบระยะเวลา "Pause after inactivity" ที่กำหนดไว้ 5 นาที

Aurora-4

ข้อควรระวังเมื่อเริ่มต้นใหม่

เมื่ออินสแตนซ์หยุดชั่วคราวไปแล้ว การเชื่อมต่อใหม่จะใช้เวลาประมาณ 15 วินาที
นอกจากนี้ หากระยะเวลาที่หยุดนานเกิน 24 ชั่วโมง ระบบจะเข้าสู่โหมด "deeper sleep" ซึ่งอาจใช้เวลาในการเชื่อมต่อมากกว่า 30 วินาที

If an Aurora Serverless v2 instance remains paused more than 24 hours, Aurora can put the instance into a deeper sleep that takes longer to resume. In that case, the resume time can be 30 seconds or longer, roughly equivalent to doing a reboot of the instance. If your database has periods of inactivity that last longer than a day, we recommend setting connection timeouts to 30 seconds or more.

https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-serverless-v2-auto-pause.html#auto-pause-whynot

เพื่อให้สามารถเชื่อมต่อกับอินสแตนซ์แบบ serverless ที่อยู่ในสถานะหยุดได้อย่างถูกต้อง ควรตั้งค่าระยะเวลาหมดเวลา (timeout) ของแอปพลิเคชันให้มากกว่า 30 วินาที หรือเพิ่มจำนวนครั้งในการลองเชื่อมต่อใหม่

เกี่ยวกับการตรวจสอบสถานะไม่ใช้งาน (Idle)

การตัดสินว่าอยู่ในสถานะไม่ใช้งานจะใช้ค่าเกณฑ์ที่กำหนดใน Pause after inactivity ซึ่งสามารถตั้งค่าได้ตั้งแต่ 30 วินาทีถึง 24 ชั่วโมง

ควรระวังว่าหาก client ยังคงเชื่อมต่ออยู่ ระบบจะไม่ถูกตัดสินว่าไม่มีการใช้งาน (inactive)
นอกจากนี้ หากมีการส่งสัญญาณ heartbeat จาก load balancer (เช่น ALB) เพื่อตรวจสอบสถานะอย่างต่อเนื่อง ระบบก็จะไม่เข้าสู่สถานะ inactive เช่นกัน

ความสัมพันธ์ระหว่าง Failover Priority Tier และ ACU

Amazon Aurora Serverless v2 ที่ตั้งค่า Priority Tier เป็น 0 หรือ 1 จะถูกพิจารณาให้เป็นเป้าหมายในการ failover ของ writer

เพื่อให้มั่นใจว่าจะไม่เกิดปัญหาประสิทธิภาพไม่เพียงพอเมื่อเกิด failover และมีการเลื่อนตำแหน่งเป็น Writer ระบบจะปรับ ACU โดยอัตโนมัติ โดยอินสแตนซ์ Serverless v2 ที่มี Priority เป็น 0 หรือ 1 จะรักษาระดับ ACU ให้เทียบเท่ากับหรือมากกว่า Writer เสมอ

กรณีที่ต้องการใช้ ACU 0 ในคลัสเตอร์ Aurora ที่มีหลายอินสแตนซ์ มี 2 กรณีการใช้งานหลัก

  • ต้องการให้ writer สามารถลดลงเป็น ACU 0 ด้วย:
    • ตั้งค่า Priority Tier ของอินสแตนซ์เป็น 0 หรือ 1
    • ทั้ง writer และ reader จะลดลงเป็น ACU 0 พร้อมกัน
  • ต้องการให้เฉพาะ reader บางตัวเท่านั้นที่ลดลงเป็น ACU 0:
    • ตั้งค่า Priority Tier เป็น 0 หรือ 1 สำหรับอินสแตนซ์ 2 ตัวแรก
    • สำหรับอินสแตนซ์ที่ 3 ที่ต้องการให้ลดลงเป็น ACU 0 ให้ตั้งค่า Priority Tier เป็นค่าระหว่าง 2 ถึง 15 และตั้งค่า ACU ขั้นต่ำเป็น 0
    • เฉพาะอินสแตนซ์ที่ 3 เท่านั้นที่จะลดขนาดลงเป็น ACU 0

ข้อจำกัดของ Aurora Global Database

Aurora Global Database มีข้อจำกัดบางประการ:

คลัสเตอร์หลัก (Primary cluster) ไม่สามารถหยุดโดยอัตโนมัติได้ เนื่องจากจำเป็นต้องทำงานตลอดเวลาเพื่อจัดการคลัสเตอร์อื่นๆ ในฐานข้อมูลแบบ Global Database

คลัสเตอร์รอง (Secondary cluster) ก็ไม่สามารถหยุดโดยอัตโนมัติได้เช่นกัน

กรณีที่เลือกเวอร์ชันที่ไม่รองรับ ACU = 0

หากคุณเลือก Serverless v2 แต่เลือกเวอร์ชันที่ไม่รองรับ ACU 0 ระบบจะแสดงข้อความแจ้งเตือนและคุณจะไม่สามารถตั้งค่า ACU เป็น 0 ได้

Aurora-5

ค่าใช้จ่ายเมื่อ ACU = 0

เมื่อ ACU เป็น 0 จะไม่มีค่าใช้จ่ายสำหรับการใช้งานอินสแตนซ์ตามที่คาดไว้ อย่างไรก็ตาม ค่าใช้จ่ายสำหรับพื้นที่เก็บข้อมูลของคลัสเตอร์ Aurora และค่าใช้จ่ายสำหรับอินสแตนซ์อื่นๆ ที่ไม่ใช่แบบ serverless จะยังคงเกิดขึ้น

How instance billing works for auto-paused Aurora Serverless v2 clusters

While an Aurora Serverless v2 instance is auto-paused, its instance charge is zero. The ServerlessV2Usage metric is zero during that period. AWS still charges for Aurora storage and other aspects of the cluster that aren't tied to that specific DB instance.

https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-serverless-v2-auto-pause.html

สรุป

Amazon Aurora Serverless v2 รองรับ ACU ขั้นต่ำที่ 0 แล้ว หมายความว่าสามารถหยุดชั่วคราวและเริ่มต้นใหม่โดยอัตโนมัติได้

การอัปเดตครั้งนี้ช่วยให้สามารถใช้งาน Aurora Serverless v2 ในสภาพแวดล้อมที่มีช่วงเวลาที่ไม่มีการใช้งาน เช่น สภาพแวดล้อมการพัฒนา โดยประหยัดค่าใช้จ่ายและไม่ต้องดูแลมากนัก

ฟีเจอร์นี้เป็นสิ่งที่ผู้ใช้ Aurora Serverless v1 รอคอยมากที่สุดให้มีใน v2 และการเพิ่มฟีเจอร์นี้จะช่วยขยายกรณีการใช้งาน Aurora Serverless v2 ให้กว้างขวางมากขึ้น

บทความต้นฉบับ

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.