ฉันกำลังใช้ NAS แบบสองหัวที่ได้รับการสนับสนุนจาก ZFS สำหรับที่เก็บข้อมูลของคลัสเตอร์ที่มีความพร้อมใช้งานสูงโดยยึดตามสถาปัตยกรรมที่แนะนำของ Nexenta ดังที่เห็นที่นี่:
ดิสก์ใน 1 JBOD จะเก็บไฟล์ฐานข้อมูลสำหรับฐานข้อมูล Postgres 4 TB เดียวและดิสก์ใน JBOD อื่นจะจัดเก็บไฟล์ไบนารีแฟล็กขนาดใหญ่ดิบขนาด 20 TB (ผลลัพธ์คลัสเตอร์สำหรับการจำลองการชนกันของวัตถุตัวเอกขนาดใหญ่) กล่าวอีกนัยหนึ่ง JBOD ที่สนับสนุนไฟล์ Postgres จะจัดการปริมาณงานแบบสุ่มส่วนใหญ่ในขณะที่ JBOD ที่สำรองข้อมูลผลลัพธ์การจำลองจะจัดการภาระงานแบบอนุกรมเป็นหลัก โหนดหัวทั้งสองมีหน่วยความจำ 256 GB และ 16 คอร์ คลัสเตอร์มีประมาณ 200 แกนแต่ละรักษาเซสชัน Postgres ดังนั้นฉันคาดว่าประมาณ 200 พร้อมกัน
ฉันสงสัยว่ามันฉลาดในการตั้งค่าของฉันเพื่อให้โหนดหัว ZFS ทำงานพร้อมกันในฐานะเซิร์ฟเวอร์ฐานข้อมูล Postgres ที่ทำมิเรอร์สำหรับคลัสเตอร์ของฉันหรือไม่ ข้อเสียเปรียบเดียวที่ฉันเห็นคือ:
- ความยืดหยุ่นน้อยลงสำหรับการปรับขนาดโครงสร้างพื้นฐานของฉัน
- ระดับความซ้ำซ้อนลดลงเล็กน้อย
- ทรัพยากรหน่วยความจำและ CPU ที่ จำกัด สำหรับ Postgres
อย่างไรก็ตามข้อดีที่ฉันเห็นคือ ZFS ค่อนข้างโง่เกี่ยวกับความล้มเหลวอัตโนมัติอยู่แล้วและฉันไม่ต้องใช้เวลามากในการรับเซิร์ฟเวอร์ฐานข้อมูล Postgres แต่ละตัวเพื่อหาว่าโหนดใหญ่ล้มเหลวเพราะมันจะล้มเหลวพร้อมกับส่วนหัว ปม
postmaster.pid
) จะทำให้ข้อมูลเสียหายอย่างรุนแรง