ใช้ ZFS head node เป็นเซิร์ฟเวอร์ฐานข้อมูลหรือไม่


9

ฉันกำลังใช้ NAS แบบสองหัวที่ได้รับการสนับสนุนจาก ZFS สำหรับที่เก็บข้อมูลของคลัสเตอร์ที่มีความพร้อมใช้งานสูงโดยยึดตามสถาปัตยกรรมที่แนะนำของ Nexenta ดังที่เห็นที่นี่:

ป้อนคำอธิบายรูปภาพที่นี่

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

ฉันสงสัยว่ามันฉลาดในการตั้งค่าของฉันเพื่อให้โหนดหัว ZFS ทำงานพร้อมกันในฐานะเซิร์ฟเวอร์ฐานข้อมูล Postgres ที่ทำมิเรอร์สำหรับคลัสเตอร์ของฉันหรือไม่ ข้อเสียเปรียบเดียวที่ฉันเห็นคือ:

  1. ความยืดหยุ่นน้อยลงสำหรับการปรับขนาดโครงสร้างพื้นฐานของฉัน
  2. ระดับความซ้ำซ้อนลดลงเล็กน้อย
  3. ทรัพยากรหน่วยความจำและ CPU ที่ จำกัด สำหรับ Postgres

อย่างไรก็ตามข้อดีที่ฉันเห็นคือ ZFS ค่อนข้างโง่เกี่ยวกับความล้มเหลวอัตโนมัติอยู่แล้วและฉันไม่ต้องใช้เวลามากในการรับเซิร์ฟเวอร์ฐานข้อมูล Postgres แต่ละตัวเพื่อหาว่าโหนดใหญ่ล้มเหลวเพราะมันจะล้มเหลวพร้อมกับส่วนหัว ปม


PostgreSQL ไม่สามารถทำงานในโหมดแชร์พื้นที่เก็บข้อมูลใด ๆ ความพยายามที่จะทำเช่นนั้นจะล้มเหลว ความพยายามในการหลีกเลี่ยงการป้องกันเพื่อหยุดคุณ (เช่นย้าย / ซ่อนpostmaster.pid) จะทำให้ข้อมูลเสียหายอย่างรุนแรง
Craig Ringer

2
@ CraigRinger หืมนี้ขัดแย้งกับwiki.postgresql.org/wiki/Shared_Storageหรือไม่?
elleciel

1
คุณสามารถรันได้หากคุณรับประกันได้อย่างแน่นอนว่ามีผู้โพสต์มาสเตอร์เพียงคนเดียวเท่านั้นที่สามารถเข้าถึงไดเรกทอรีข้อมูลได้ในเวลาเดียวกัน สโตนนิชที่ดี / การฟันดาบเป็นข้อกำหนดที่สมบูรณ์เพื่อหลีกเลี่ยงความเสียหายของข้อมูลครั้งใหญ่ โดยส่วนตัวแล้วฉันไม่มีทางทำ สิ่งนี้ยังช่วยลดผลประโยชน์ที่คุณกำลังพูดถึง - การค้นหาว่าเป็นเซิร์ฟเวอร์หลัก / เซิร์ฟเวอร์สดโดยอัตโนมัติ ฯลฯ เพราะคุณต้องจัดการกับความล้มเหลว
Craig Ringer

2
ฉันได้แก้ไขหน้าวิกิเพื่อให้ชัดเจนขึ้น ขอบคุณที่ชี้นำ
Craig Ringer

1
มันไม่สมเหตุสมผล วิธีการแก้ปัญหาของ HA Nexenta จะใช้ประโยชน์จากRSF-1 การจัดกลุ่ม ดูเหมือนคุณกำลังทำสิ่งนี้กับ ZFS บน Linux โดยไม่มีชิ้นส่วน RSF-1 โปรดทราบว่า ZFS บน Linux ไม่มีตัวเลือกการจัดกลุ่มจริง ๆ ดังนั้นการอ้างอิง Nexenta จึงไม่มีผล คุณต้องได้รับอะไรจากการมีหัวต่อสองอัน
ewwhite

คำตอบ:


0

คุณไม่สามารถมีอินสแตนซ์ Postgres สอง ("กลุ่ม" ในคำศัพท์ Postgres) ที่ทำหน้าที่ในไฟล์ทางกายภาพเดียวกัน

หากคุณต้องการประสิทธิภาพการแบ่งส่วนอาจช่วยคุณได้ (มีสองอินสแตนซ์ที่มีข้อมูลที่แตกต่างกัน)

หากคุณต้องการความพร้อมใช้งานสูงความล้มเหลวด้วย STONITH อาจเป็นวิธีแก้ปัญหา คุณต้องตรวจสอบให้แน่ใจว่าฮาร์ดแวร์ได้รับการซ่อมแซมแล้วจะไม่พยายามเปิดฐานข้อมูลในขณะที่โหนดที่สองกำลังให้บริการ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.