GlusterFS แยกสมองโดยไม่มีทางหมายความว่าอย่างไร


11

ฉันเพิ่งตรวจสอบสถานะของปริมาณ glusterfs ของฉันและฉันมีหนึ่งกับรายการแยกสมองที่ไม่มีเส้นทาง:

# gluster volume heal private_uploads info
Brick server01:/var/lib/glusterfs/brick01/uploads/
<gfid:4c0edafb-0c28-427c-a162-e530280b3396> - Is in split-brain
<gfid:42d62418-1be9-4f96-96c4-268230316869> - Is in split-brain
Number of entries: 2

Brick server02:/var/lib/glusterfs/brick01/uploads/
<gfid:42d62418-1be9-4f96-96c4-268230316869> - Is in split-brain
<gfid:4c0edafb-0c28-427c-a162-e530280b3396> - Is in split-brain
Number of entries: 2

มันหมายความว่าอะไร? ฉันจะแก้ไขได้อย่างไร

ฉันใช้ GlusterFS 3.5.9:

# gluster --version
glusterfs 3.5.9 built on Mar 28 2016 07:10:17
Repository revision: git://git.gluster.com/glusterfs.git

คุณใช้ 2 เซิร์ฟเวอร์เท่านั้นในคลัสเตอร์ของคุณหรือไม่
เด็กกำพร้า

คำตอบ:


8

แยกสมองคืออะไร

ดังที่ได้กล่าวไว้ในเอกสารอย่างเป็นทางการเกี่ยวกับการจัดการสมอง - แยกที่จัดทำโดย RedHat สมองแยกเป็นสถานะเมื่อข้อมูลหรือความไม่พร้อมใช้งานที่เกิดจากการบำรุงรักษาชุดข้อมูลแยกกันสองชุดที่มีขอบเขตซ้อนทับกัน หรือสภาพความล้มเหลวขึ้นอยู่กับเซิร์ฟเวอร์ที่ไม่ได้สื่อสารและประสานข้อมูลของพวกเขากับแต่ละอื่น ๆ และเป็นคำที่ใช้ในการทำซ้ำการกำหนดค่า

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

ประเภทสมองแตก:

เรามีสมองแตกต่างกันสามแบบและเท่าที่ฉันเห็นคุณคือสมองแยก หากต้องการอธิบายสมองแยกสามประเภท:

  • Data split-brainเนื้อหาของไฟล์ภายใต้ split-brain นั้นมีความแตกต่างกันในแบบจำลองคู่ที่แตกต่างกันและไม่สามารถทำการรักษาแบบอัตโนมัติได้

  • Metadata split-brain :, Metadata ของไฟล์ (ตัวอย่าง, แอตทริบิวต์ที่ขยายโดยผู้ใช้กำหนด) นั้นแตกต่างกันและไม่สามารถทำการรักษาแบบอัตโนมัติได้

  • Entry split-brain:มันเกิดขึ้นเมื่อไฟล์มี gfids ที่แตกต่างกันในแต่ละคู่จำลอง


GFID คืออะไร

ตัวระบุไฟล์ภายใน GlusterFS (GFID)เป็น uuid ที่ไม่ซ้ำกันสำหรับแต่ละไฟล์ทั่วทั้งคลัสเตอร์ นี่คล้ายกับหมายเลขไอโหนดในระบบไฟล์ปกติ GFID ของไฟล์จะถูกเก็บไว้ใน xattr trusted.gfidของชื่อ หากต้องการค้นหาเส้นทางจาก GFID ฉันขอแนะนำให้คุณอ่านบทความอย่างเป็นทางการจาก GlusterFS


วิธีแก้ปัญหาสมองซีกรายการ?

มีหลายวิธีในการป้องกันไม่ให้สมองแยกเกิดขึ้น แต่เพื่อแก้ไขไฟล์ gfid-link ที่เกี่ยวข้องจะต้องถูกลบออก ไฟล์ gfid-link มีอยู่ในไดเรกทอรี. glusterfs ในไดเรกทอรีระดับบนสุดของอิฐ อย่างไรก็ตามโปรดระวังก่อนที่จะลบ gfid-links คุณต้องแน่ใจว่าไม่มีการเชื่อมโยงอย่างหนักไปยังไฟล์ที่อยู่บนอิฐนั้น หากมีฮาร์ดลิงก์อยู่คุณต้องลบลิงก์เหล่านั้นด้วย จากนั้นคุณสามารถใช้กระบวนการบำบัดตนเองได้โดยการรันคำสั่งต่อไปนี้

ในระหว่างนี้หากต้องการดูรายการไฟล์ในโวลุ่มที่อยู่ในสภาวะสมองแยกคุณสามารถใช้:

# gluster volume heal VOLNAME info split-brain

คุณควรระวังว่าสำหรับโวลุ่มที่ทำซ้ำเมื่ออิฐเข้าสู่สถานะออฟไลน์และกลับมาออนไลน์จำเป็นต้องรักษาตัวเองเพื่อซิงค์เรพพลิกาทั้งหมด

วิธีตรวจสอบสถานะการหายของปริมาณและไฟล์ที่คุณสามารถใช้ได้:

# gluster volume heal VOLNAME info

เนื่องจากคุณใช้เวอร์ชัน 3.5 คุณไม่มีการรักษาแบบอัตโนมัติ ดังนั้นหลังจากทำตามขั้นตอนที่กล่าวถึงก่อนหน้านี้คุณต้องกระตุ้นการรักษาตัวเอง โดยทำดังนี้

  • เฉพาะไฟล์ที่ต้องการการรักษา:

    # gluster volume heal VOLNAME

  • ในทุกไฟล์:

    # gluster volume heal VOLNAME full

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


2

ฉันคิดว่าเอกสารมีความชัดเจนเพียงพอที่จะทำให้คุณมีตัวอย่างที่คล้ายกัน

และสำหรับคำสั่งการรักษาของ Gluesterfs เช่น

ปริมาณการรักษา gluster ** VOLNAME ** แบ่งสมองล่าสุด -mtime ** ไฟล์ **

FILE สามารถเป็นชื่อไฟล์แบบเต็มตามที่เห็นจากรูทของโวลุ่ม(หรือ) การแสดงไฟล์ gfid-string

ดังนั้นคุณไม่จำเป็นต้องกังวลเกี่ยวกับสิ่งนั้น

และแปลง GFID เป็น pathบอกว่า:

ตัวระบุไฟล์ภายใน GlusterFS (GFID) เป็น uuid ที่ไม่ซ้ำกันสำหรับแต่ละไฟล์ทั่วทั้งคลัสเตอร์

สคริปต์นี้อาจบอกคุณได้ว่าชื่อไฟล์ใดเป็นของ gfid แต่เกิดการแตกของสมองเกิดขึ้นมันอาจไม่มีชื่อไฟล์

คุณใช้งาน 3.5 และไม่มีการรักษาแบบกึ่งอัตโนมัติ cmd ดังนั้นคุณอาจต้องแก้ไขข้อขัดแย้งด้วยตนเองซึ่งโดยทั่วไปหมายถึงการตัดสินใจว่าจะต้องลบไฟล์ gfid ใด


Gluster เวอร์ชันของฉันดูเหมือนจะไม่มีคำสั่งนั้นมิฉะนั้นก็จะตรงไปตรงมา นอกจากนี้ฉันไม่มีชื่อไฟล์ฉันมี uuids
pupeno

2

ฉันจะแก้ไขได้อย่างไร

ความละเอียด split-brain สามารถพบได้ทั้งที่นี่ ในกรณีที่ไม่ช่วยมากคู่มือวิธีใช้ที่นี่ควรทำงาน สำหรับกรณีนี้ฉันเห็นว่าบทความมีประโยชน์เช่นกัน

วิธีการหลีกเลี่ยงสมองแยก

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

ตัวอย่างบางส่วน

VMware VSAN อนุญาตให้รันคลัสเตอร์ 2 โหนดพร้อมกับพยานไดรฟ์ที่ทำงานบนโฮสต์ที่ 3 หรือในระบบคลาวด์ แหล่ง

StarWind Virtual SAN รันในการตั้งค่า 2 โหนดโดยใช้บริการ Microsoft Failover Cluster ที่มีกลไกการลงคะแนน quorum เพื่อหลีกเลี่ยงปัญหาสมองแตก แหล่ง

สำหรับทั้งสองเครือข่าย Heartbeat ใช้เพื่อให้บริการ / ตรวจสอบการสื่อสารระหว่างโหนดและองค์ประชุม เพื่อหลีกเลี่ยงสมองซีกผมเห็นว่าจำเป็นต้องใช้ช่องสัญญาณ Heartbeat ซ้ำซ้อน


1

สมองแตกเกิดขึ้นเมื่อสองโหนดของคลัสเตอร์ถูกตัดการเชื่อมต่อ แต่ละโหนดคิดว่าอีกโหนดหนึ่งไม่ทำงาน

แยกสมอง

ในการแก้ไขคุณต้องเข้าใจว่าทำไมทั้งสองโหนดของคุณจึงไม่ได้พูดคุยกันอีกต่อไป

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