สถาปัตยกรรมความพร้อมใช้งานสูง (High Availability Architecture) คืออะไร?
สถาปัตยกรรมความพร้อมใช้งานสูง คือเมื่อมีคอมโพเนนต์ โมดูล หรือบริการหลายอย่างทำงานร่วมกันเพื่อรักษาประสิทธิภาพที่เหมาะสม ไม่ว่าจะมีโหลดสูงแค่ไหน (peak-time loads)

ในความหมายที่แท้จริง ระบบนี้ช่วยให้ธุรกิจทำงานต่อเนื่องโดยไม่มีความล้มเหลวตลอดช่วงเวลาที่กำหนด ธุรกิจหลายแห่งไม่สามารถรับการหยุดทำงาน (downtime) ได้แม้แต่นาทีเดียว ถึงความจริงที่ว่าข้อมูลคือเลือดไหลของธุรกิจหลายแห่ง แม้ช่วงเวลาหยุดทำงานสั้นๆ ก็อาจมีค่าใช้จ่ายสูงมาก
ในสถานการณ์จริงบางอย่าง ชีวิตอาจขึ้นอยู่กับฐานข้อมูลที่สร้างขึ้นสำหรับความพร้อมใช้งานสูง เมื่อผู้ป่วยมาถึงห้องฉุกเฉิน ผู้เชี่ยวชาญทางการแพทย์ต้องการการเข้าถึงบันทึกสุขภาพของผู้ป่วยทันที เพื่อตัดสินใจการรักษาที่ดีที่สุด การล่าช้าในการเข้าถึงข้อมูลนี้อาจสร้างผลกระทบที่ร้ายแรง
หมายเหตุ: ความพร้อมใช้งานสูงมักวัดเป็นเปอร์เซ็นต์ของเวลาที่บริการพร้อมให้ผู้ใช้ ตาม Microsoft Network Developer Glossary เซิร์ฟเวอร์จะถือว่า "พร้อมใช้งานสูง" เมื่อบรรลุ uptime เครือข่าย 99.999%
High Availability Clusters คืออะไร?
High availability clusters คือกลุ่มของโฮสต์ที่รวมตัวเป็นระบบเดียวเพื่อป้องกัน downtime หากเซิร์ฟเวอร์หนึ่งใน high availability cluster ล้มเหลว แอปพลิเคชันสำคัญ (mission-critical app) จะถูกโอนไปยังเซิร์ฟเวอร์อื่นทันทีที่ตรวจพบข้อผิดพลาด
ไม่มีระบบใดที่ไม่ตกเป็นเหยื่อของความล้มเหลว และ high availability clusters 确保ประสิทธิภาพที่เหมาะสมยังคงรักษาไว้ไม่ว่าจะมีความล้มเหลวที่เป็นไปไม่ได้ นี่คือเหตุผลที่มักใช้สำหรับแอปพลิเคชัน เว็บไซต์ และระบบประมวลผลธุรกรรมที่สำคัญที่สุด
High Availability Clustering ทำงานอย่างไร?
High availability cluster จะใช้ระบบหลายระบบที่บูรณาการแล้ว ดังนั้น หากความล้มเหลวทำให้ระบบหนึ่งล้มเหลว อีกระบบหนึ่งสามารถนำมาใช้ได้อย่างมีประสิทธิภาพเพื่อรักษาความต่อเนื่องของบริการหรือแอปพลิเคชันที่ใช้อยู่
High availability load balancing cluster เล่นบทบาทสำคัญในการป้องกันความล้มเหลวของระบบ การมี load balancer อยู่จะกระจายトラフィค (traffic) ไปยัง web nodes ต่างๆ ที่ให้บริการเว็บไซต์หรือแอปพลิเคชันผู้ใช้คนเดียวกัน นี่ลดแรงกดดันบนเซิร์ฟเวอร์ใดเซิร์ฟเวอร์หนึ่ง ทำให้แต่ละคลัสเตอร์ทำงานได้อย่างเหมาะสมมากขึ้น ในขณะที่อนุญาตให้ส่ง traffic ไปยังเซิร์ฟเวอร์ที่แข็งแรง (healthy servers) เท่านั้น
แนวคิดของ High Availability Cluster
Active-Passive Cluster
Active/passive cluster ประกอบด้วยโหนด (nodes) อย่างน้อยสองตัว ตามที่ชื่อบ่งชี้ ไม่ใช่ทุกโหนดจะ active ถ้าโหนดหนึ่ง active อีกตัวจะเป็น read-only standby โหนด passive ทำหน้าที่เป็นสำรอง (backup) และจะถูกนำมาใช้เมื่อโหนด active ทำงานไม่ได้
Active-Active Cluster
ประเภทนี้ของคลัสเตอร์มักใช้โหนดอย่างน้อยสองตัวที่ให้บริการเดียวกันในเวลาเดียวกัน ใน active-active cluster ทั้งสองโหนดทำหน้าที่เป็น primary nodes หมายถึงทั้งคู่สามารถรับ reads หรือ writes ได้ หากโหนดหนึ่งล้มเหลว ผู้ใช้จะถูกเชื่อมต่อไปยังอีกตัวโดยอัตโนมัติเพื่อให้บริการต่อเนื่อง เมื่อโหนดแรกถูกแทนที่แล้ว ผู้ใช้จะถูกแบ่งระหว่างสองโหนดเดิมอีกครั้ง
ประโยชน์หลักของ active/active cluster คือช่วยให้บรรลุการสมดุลโหนด-เครือข่าย (node-network balance) หากตรวจพบกรณีล้มเหลวของเซิร์ฟเวอร์ load balancer จะส่งคำขอของผู้ใช้ไปยังเซิร์ฟเวอร์ที่พร้อมให้บริการ และวิเคราะห์กิจกรรมโหนด-เครือข่าย Load balancer จะส่ง traffic ไปยังโหนดที่สามารถให้บริการ traffic นั้นได้ ทำให้ได้ระดับความทนทานต่อข้อผิดพลาด (fault tolerance) ที่สูงขึ้น
กลยุทธ์นี้เป็นกระบวนการแบบวนรอบ (cyclical process) คล้ายกับแบบ round-robin โดยผู้ใช้ถูกกระจายไปยังโหนดที่พร้อมใช้งานแบบสุ่ม หรืออาจปฏิบัติตามแผนการถ่วงน้ำหนัก (weighing scheme) ที่โหนดหนึ่งได้รับการจัดลำดับก่อนอีกโหนดหนึ่งตามเปอร์เซ็นต์
Shared-Nothing vs. Shared-Disk Clusters
กฎทั่วไปใน distributed computing คือ หลีกเลี่ยง single points of failure (จุดล้มเหลวเดี่ยว) ทุกประการ ซึ่งต้องการให้ทรัพยากรถูกจำลอง (replicated) หรือแทนที่ได้อย่างต่อเนื่อง โดยไม่มีปัจจัยเดียวที่ถูกขัดจังหวะเมื่อบริการทั้งหมดล้มเหลว
จินตนาการว่า คุณมีโหนดที่ทำงานอยู่ 50 ตัว ที่ได้พลังจากฐานข้อมูลเพียงตัวเดียว หากโหนดหนึ่งล้มเหลว จะไม่มีผลกระทบต่อสถานะถาวรของโหนดอื่นๆ ไม่ว่าจะมีโหนดทำงานกี่ตัว
แต่ถ้าฐานข้อมูลล้มเหลว คลัสเตอร์ทั้งหมดจะล้มเหลว ทำให้ฐานข้อมูลกลายเป็น single point of failure? นี่เรียกว่า shared disk cluster
ในทางกลับกัน หากแต่ละโหนดดูแลฐานข้อมูลของตัวเอง ความล้มเหลวของโหนดจะไม่กระทบคลัสเตอร์ทั้งหมด นี่เรียกว่า shared nothing cluster
หมายเหตุ: หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับเทคโนโลยี high availability clustering โปรดดูเว็บบินาร์นี้ ด้วยประสบการณ์มากกว่า 20 ปีในอุตสาหกรรมซอฟต์แวร์ George Carbonnel จะแตกแซงทุกสิ่งที่คุณต้องรู้เกี่ยวกับวิธีที่ clustering technology กับ Redis Enterprise ให้ประสิทธิภาพสูงและ high availability
ข้อกำหนดของสถาปัตยกรรมที่พร้อมใช้งานสูง (Highly Available Architecture)
มีข้อกำหนดหลายอย่างที่คุณต้องการเพื่อเพิ่มความทนทานและความพร้อมใช้งานสูง รวมถึง:
Load Balancing
Load balancing สำคัญมากต่อสถาปัตยกรรมที่พร้อมใช้งานสูง หน้าที่หลักคือกระจาย traffic ไปยัง backend servers เพื่อส่งข้อมูลอย่างมีประสิทธิภาพมากขึ้น และป้องกันการโอเวอร์โหลดเซิร์ฟเวอร์ ข้อกำหนดเบื้องต้นของระบบ load balancing คือระบุว่าควรดำเนินการ failover process อะไรเมื่อมี node failure
Data Scalability (การขยายข้อมูล)
ความสามารถในการขยายฐานข้อมูลหรือหน่วยจัดเก็บดิสก์ ต้องได้รับการพิจารณาโดยสถาปัตยกรรมที่พร้อมใช้งานสูงทั้งหมด มีสองวิธีแก้ไขที่เลือกได้เพื่อบรรลุ scalability:
- ใช้ฐานข้อมูลหลักของสถาปัตยกรรมและใช้ replication หรือ partitioning เพื่อทำให้พร้อมใช้งานสูง; หรือ
- ให้แน่ใจว่า instance ของแอปพลิเคชันแต่ละตัวสามารถดูแลที่จัดเก็บข้อมูลของตัวเองได้
Geographical Diversity (ความหลากหลายทางภูมิศาสตร์)
เราอยู่ในโลกดิจิทัลที่เร็วเรี้ยว ซึ่งการกระจาย high availability clusters ทั่วโลกเป็นเรื่องบังคับ การทำเช่นนี้จะทำให้แน่ใจว่าถ้าธรรมชาติพิบัติโจมตีตำแหน่งเดียว ผลกระทบจะไม่ขวางก่อนความสามารถในการให้บริการ
Backup and Recovery (Disaster Recovery) - การสำรองข้อมูลและการกู้คืน (การกู้คืนจากภัยพิบัติ)
แม้จะมีความสม่ำเสมอ สถาปัตยกรรมที่พร้อมใช้งานสูงจะยังคงเปราะบางต่อการผิดปกติบางอย่างที่สามารถรบกวนบริการได้ ดังนั้น หากบริการล้มเหลว ธุรกิจต้องมีกลยุทธ์กู้คืนเพื่อให้ระบบทั้งหมดทำงานอีกครั้งโดยเร็วที่สุด
สิ่งนี้มักเรียกว่า disaster recovery - ชุดนโยบายและขั้นตอนที่ออกแบบมาเพื่อคืนบริการให้ทำงานเต็มที่ในเหตุการณ์ที่รบกวน
วิธีวัดความพร้อมใช้งานสูง (High Availability)
ความพร้อมใช้งานสูงมักวัดเป็นเปอร์เซ็นต์ของเวลาที่บริการพร้อมให้ผู้ใช้ ทำได้โดยการหาร total uptime ด้วย system period แล้วคูณ 100 เพื่อได้เปอร์เซ็นต์ ตาม Microsoft Network Developer Glossary เซิร์ฟเวอร์จะถือว่า "พร้อมใช้งานสูง" เมื่อบรรลุ network uptime 99.999%
บ่อยครั้งที่เปอร์เซ็นต์ความพร้อมใช้งานถูกอ้างอิงเป็นจำนวนเลข 9 ในตัวเลข ดังนั้น four nines คือ 99.99%
หมายเหตุ: 99.99% availability ถือเป็นมาตรฐานอุตสาหกรรม
Best Practices สำหรับ High Availability
มีหลายขั้นตอนที่คุณสามารถทำเพื่อเพิ่มความพร้อมใช้งานสูง ตั้งแต่จำนวนคอมโพเนนต์ที่ต้องตรวจสอบ จนถึงการแทนที่เซิร์ฟเวอร์ที่ล้มเหลว นี่คือแนวทางปฏิบัติที่คุณสามารถใช้เพื่อบรรลุ high availability:
บรรลุ Geographic Redundancy (ความซ้ำซ้อนทางภูมิศาสตร์)
Geo-redundancy เป็นเส้นป้องกันสำคัญต่อการระบาดของธรรมชาติพิบัติที่นำไปสู่ความล้มเหลวของบริการ แนวทางนี้เกี่ยวข้องกับการปรับใช้เซิร์ฟเวอร์จำนวนมากทั่วตำแหน่งภูมิศาสตร์ที่ต่างกัน ทำให้ความเสี่ยงกระจาย และอนุญาตให้สถาปัตยกรรม fallback ไปยังเซิร์ฟเวอร์อื่น หากธรรมชาติพิบัติโจมตีภูมิภาคหนึ่ง
หมายเหตุ: คุณสามารถทำได้ง่ายด้วยฐานข้อมูลที่มี Active-Active Geo-Distribution
ใช้ Failover Solutions
สถาปัตยกรรมที่พร้อมใช้งานสูงมักเกี่ยวข้องกับเซิร์ฟเวอร์หลายตัวที่ loosely coupled และให้ความสามารถ failover Failover ถูกมองว่าเป็นโหมดการทำงานสำรองที่ถูกใช้โดยอัตโนมัติเมื่อฟังก์ชันของระบบหลัก (primary system) ล้มเหลว
นำ Load Balancers มาใช้
ตามที่กล่าวไว้ก่อนหน้า load balancer จะกระจาย incoming traffic ไปยังเซิร์ฟเวอร์ต่างๆ เพื่อลดความเสี่ยงของ downtime โปรดตั้งค่า load balancer ให้ใช้อัลกอริทึมที่เหมาะกับความต้องการของคุณเพื่อเพิ่มประสิทธิภาพโซลูชันนี้ให้เต็มที่
ให้แน่ใจว่าการซิงโครไนซ์ข้อมูลตรงตาม Recovery Point Objective (RPO)
RPO เป็นตัวชี้วัดของปริมาณข้อมูลสูงสุดที่คุณสามารถสูญเสียได้โดยไม่ก่อให้เกิดความเสียหายต่อองค์กร นี่เน้นความทนทานต่อการสูญหายข้อมูลของธุรกิจโดยรวม และมักวัดในหน่วยเวลา เช่น 1 นาที หรือ 1 วัน
การตั้งค่า RPO ไม่เกิน 60 วินาที จะช่วยรักษาความพร้อมใช้งานสูงสุด การทำเช่นนี้จะทำให้แน่ใจว่าหากมี primary source failure คุณจะไม่สูญเสียข้อมูลมากกว่า 60 วินาที
บทบาทของ Redis ในสถาปัตยกรรมที่พร้อมใช้งานสูง
Redis Enterprise เป็นโซลูชันที่ทรงพลังสำหรับองค์กรขนาดใหญ่ที่มองหาความพร้อมใช้งานสูงสุด เป็นแพลตฟอร์มข้อมูลเรียลไทม์ที่รับประกัน five-nines availability ให้ความทนทานของฐานข้อมูลแบบอัตโนมัติระดับนำหน้า ในขณะที่ลดความเสี่ยงจาก hardware failure และ cloud outages
Redis Enterprise ตอบสนองความต้องการ high availability ของแอปพลิเคชันระดับ enterprise ที่สำคัญที่สุด ให้ฟังก์ชันalité นำหน้าอุตสาหกรรมเพื่อให้ 99.999% availability โดยใช้: Active-Active Geo Distribution, automatic failover, intelligent clustering, shared-nothing architecture, และ global distribution
อยากเรียนรู้เพิ่มเติมเกี่ยวกับวิธีบรรลุ high availability?