ค้นหาเว็บไซต์

วิธีการตั้งค่า DRBD เพื่อจำลองการจัดเก็บบนเซิร์ฟเวอร์ CentOS 7 สองเครื่อง


DRBD (ย่อมาจาก Distributed Replicated Block Device) เป็นโซลูชันการจัดเก็บข้อมูลจำลองแบบกระจาย ยืดหยุ่น และอเนกประสงค์สำหรับ Linux โดยสะท้อนเนื้อหาของบล็อกอุปกรณ์ เช่น ฮาร์ดดิสก์ พาร์ติชั่น โลจิคัลวอลุ่ม ฯลฯ ระหว่างเซิร์ฟเวอร์ โดยเกี่ยวข้องกับการคัดลอกข้อมูลบนอุปกรณ์จัดเก็บข้อมูลสองตัว ซึ่งหากอุปกรณ์ตัวหนึ่งล้มเหลว ก็จะสามารถใช้ข้อมูลบนอุปกรณ์อีกเครื่องหนึ่งได้

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

เดิมที DRBD ส่วนใหญ่จะใช้ในคลัสเตอร์คอมพิวเตอร์ที่มีความพร้อมใช้งานสูง (HA) อย่างไรก็ตาม ตั้งแต่เวอร์ชัน 9 เป็นต้นไป ก็สามารถใช้เพื่อปรับใช้โซลูชันพื้นที่เก็บข้อมูลบนคลาวด์ได้

ในบทความนี้ เราจะแสดงวิธีการติดตั้ง DRBD ใน CentOS และสาธิตวิธีใช้เพื่อจำลองพื้นที่เก็บข้อมูล (พาร์ติชัน) บนเซิร์ฟเวอร์สองเครื่องโดยย่อ นี่เป็นบทความที่สมบูรณ์แบบสำหรับการเริ่มต้นใช้งาน DRBD ใน Linux

สภาพแวดล้อมการทดสอบ

เพื่อวัตถุประสงค์ของบทความนี้ เรากำลังใช้คลัสเตอร์โหนดสองโหนดสำหรับการตั้งค่านี้

  • โหนด1: 192.168.56.101 – tecmint.tecmint.lan
  • โหนด2: 192.168.56.102 – เซิร์ฟเวอร์1.tecmint.lan

ขั้นตอนที่ 1: การติดตั้งแพ็คเกจ DRBD

DRBD ถูกนำมาใช้เป็นโมดูลเคอร์เนล Linux มันประกอบขึ้นเป็นไดรเวอร์สำหรับอุปกรณ์บล็อกเสมือนอย่างแม่นยำ ดังนั้นจึงติดตั้งไว้ใกล้กับด้านล่างสุดของสแต็ก I/O ของระบบ

สามารถติดตั้ง DRBD ได้จากที่เก็บ ELRepo หรือ EPEL เริ่มต้นด้วยการนำเข้าคีย์การลงนามแพ็คเกจ ELRepo และเปิดใช้งานพื้นที่เก็บข้อมูลตามที่แสดงบนทั้งสองโหนด

rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm

จากนั้นเราสามารถติดตั้งโมดูลเคอร์เนล DRBD และยูทิลิตี้บนโหนดทั้งสองได้โดยการรัน:

yum install -y kmod-drbd84 drbd84-utils

หากคุณเปิดใช้งาน SELinux คุณจะต้องแก้ไขนโยบายเพื่อยกเว้นกระบวนการ DRBD จากการควบคุม SELinux

semanage permissive -a drbd_t

นอกจากนี้ หากระบบของคุณเปิดใช้งานไฟร์วอลล์ (ไฟร์วอลล์) คุณจะต้องเพิ่มพอร์ต DRBD 7789 ในไฟร์วอลล์เพื่อให้สามารถซิงโครไนซ์ข้อมูลระหว่างสองโหนดได้

รันคำสั่งเหล่านี้บนโหนดแรก:

firewall-cmd --permanent --add-rich-rule='rule family="ipv4"  source address="192.168.56.102" port port="7789" protocol="tcp" accept'
firewall-cmd --reload

จากนั้นรันคำสั่งเหล่านี้บนโหนดที่สอง:

firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.56.101" port port="7789" protocol="tcp" accept'
firewall-cmd --reload

ขั้นตอนที่ 2: การเตรียมที่เก็บข้อมูลระดับล่าง

ตอนนี้เราได้ติดตั้ง DRBD บนโหนดคลัสเตอร์ทั้งสองแล้ว เราต้องเตรียมพื้นที่จัดเก็บข้อมูลที่มีขนาดใกล้เคียงกันบนโหนดทั้งสอง ซึ่งอาจเป็นพาร์ติชันฮาร์ดไดรฟ์ (หรือฮาร์ดไดรฟ์จริงทั้งหมด), อุปกรณ์ซอฟต์แวร์ RAID, LVM Logical Volume หรืออุปกรณ์บล็อกประเภทอื่น ๆ ที่พบในระบบของคุณ

สำหรับวัตถุประสงค์ของบทความนี้ เราจะสร้างอุปกรณ์บล็อกจำลองขนาด 2GB โดยใช้ คำสั่ง dd

 
dd if=/dev/zero of=/dev/sdb1 bs=2024k count=1024

เราจะถือว่านี่เป็นพาร์ติชันที่ไม่ได้ใช้ (/dev/sdb1) บนอุปกรณ์บล็อกตัวที่สอง (/dev/sdb) ที่เชื่อมต่อกับทั้งสองโหนด

ขั้นตอนที่ 3: การกำหนดค่า DRBD

ไฟล์การกำหนดค่าหลักของ DRBD อยู่ที่ /etc/drbd.conf และไฟล์การกำหนดค่าเพิ่มเติมสามารถพบได้ในไดเรกทอรี /etc/drbd.d

ในการจำลองพื้นที่เก็บข้อมูล เราจำเป็นต้องเพิ่มการกำหนดค่าที่จำเป็นในไฟล์ /etc/drbd.d/global_common.conf ซึ่งมีส่วนส่วนกลางและส่วนทั่วไปของการกำหนดค่า DRBD และเราสามารถกำหนดทรัพยากรใน .res ไฟล์

มาสำรองไฟล์ต้นฉบับบนทั้งสองโหนด จากนั้นเปิดไฟล์ใหม่เพื่อแก้ไข (ใช้โปรแกรมแก้ไขข้อความตามที่คุณต้องการ)

mv /etc/drbd.d/global_common.conf /etc/drbd.d/global_common.conf.orig
vim /etc/drbd.d/global_common.conf 

เพิ่มบรรทัดต่อไปนี้ในทั้งสองไฟล์:

global {
 usage-count  yes;
}
common {
 net {
  protocol C;
 }
}

บันทึกไฟล์ จากนั้นปิดตัวแก้ไข

มาแรเงาแสงเพิ่มเติมบนเส้น โปรโตคอล C กันดีกว่า DRBD รองรับโหมดการจำลองแบบที่แตกต่างกันสามโหมด (ดังนั้นการซิงโครไนซ์การจำลองแบบสามระดับ) ซึ่งได้แก่:

  • โปรโตคอล A: โปรโตคอลการจำลองแบบอะซิงโครนัส; มักใช้ในสถานการณ์จำลองแบบระยะไกล
  • โปรโตคอล B: โปรโตคอลการจำลองแบบกึ่งซิงโครนัสหรือที่เรียกว่าโปรโตคอลหน่วยความจำแบบซิงโครนัส
  • โปรโตคอล C: โดยทั่วไปใช้สำหรับโหนดในเครือข่ายระยะสั้น นับเป็นโปรโตคอลการจำลองแบบที่ใช้กันมากที่สุดในการตั้งค่า DRBD

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

ขั้นตอนที่ 4: การเพิ่มทรัพยากร

ทรัพยากรเป็นคำโดยรวมที่อ้างถึงทุกแง่มุมของชุดข้อมูลที่จำลองแบบเฉพาะ เราจะกำหนดทรัพยากรของเราในไฟล์ชื่อ /etc/drbd.d/test.res

เพิ่มเนื้อหาต่อไปนี้ลงในไฟล์บนทั้งสองโหนด (อย่าลืมแทนที่ตัวแปรในเนื้อหาด้วยค่าจริงสำหรับสภาพแวดล้อมของคุณ)

จด ชื่อโฮสต์ ไว้ เราต้องระบุชื่อโฮสต์เครือข่ายซึ่งสามารถรับได้โดยการรันคำสั่ง uname -n

resource test {
        on tecmint.tecmint.lan {
 		device /dev/drbd0;
       		disk /dev/sdb1;
        		meta-disk internal;	
                	address 192.168.56.101:7789;
        }
        on server1.tecmint.lan  {
		device /dev/drbd0;
        		disk /dev/sdb1;
        		meta-disk internal;
                	address 192.168.56.102:7789;
        }
}
}

ที่ไหน :

  • บนชื่อโฮสต์: ส่วน on ระบุว่าโฮสต์ใดที่มีคำสั่งการกำหนดค่าที่แนบมาด้วย
  • ทดสอบ: คือชื่อของทรัพยากรใหม่
  • อุปกรณ์ /dev/drbd0: ระบุอุปกรณ์บล็อกเสมือนใหม่ที่จัดการโดย DRBD
  • disk /dev/sdb1: คือบล็อกพาร์ติชันอุปกรณ์ซึ่งเป็นอุปกรณ์สำรองสำหรับอุปกรณ์ DRBD
  • meta-disk: กำหนดตำแหน่งที่ DRBD จัดเก็บข้อมูลเมตา การใช้ภายในหมายความว่า DRBD จะจัดเก็บข้อมูลเมตาไว้บนอุปกรณ์ระดับล่างทางกายภาพเดียวกันกับข้อมูลการผลิตจริง
  • ที่อยู่: ระบุที่อยู่ IP และหมายเลขพอร์ตของโหนดที่เกี่ยวข้อง

โปรดทราบว่าหากตัวเลือกมีค่าเท่ากันในทั้งสองโฮสต์ คุณสามารถระบุได้โดยตรงในส่วนทรัพยากร

ตัวอย่างเช่น การกำหนดค่าข้างต้นสามารถปรับโครงสร้างใหม่เป็น:

resource test {
	device /dev/drbd0;
	disk /dev/sdb1;
        	meta-disk internal;	
        	on tecmint.tecmint.lan {
 		address 192.168.56.101:7789;
        	}
        	on server1.tecmint.lan  {
		address 192.168.56.102:7789;
        		}
}

ขั้นตอนที่ 5: การเริ่มต้นและการเปิดใช้งานทรัพยากร

หากต้องการโต้ตอบกับ DRBD เราจะใช้เครื่องมือการดูแลระบบต่อไปนี้ซึ่งสื่อสารกับโมดูลเคอร์เนลเพื่อกำหนดค่าและดูแลทรัพยากร DRBD:

  • drbdadm: เครื่องมือการดูแลระบบระดับสูงของ DRBD
  • drbdsetup: เครื่องมือการดูแลระบบระดับล่างสำหรับแนบอุปกรณ์ DRBD กับอุปกรณ์บล็อกสำรอง เพื่อตั้งค่าคู่อุปกรณ์ DRBD เพื่อจำลองอุปกรณ์บล็อกสำรอง และเพื่อตรวจสอบการกำหนดค่าของอุปกรณ์ DRBD ที่ทำงานอยู่
  • Drbdmeta:เป็นเครื่องมือการจัดการข้อมูลเมตา

หลังจากเพิ่มการกำหนดค่าทรัพยากรเริ่มต้นทั้งหมดแล้ว เราต้องดึงทรัพยากรขึ้นมาบนทั้งสองโหนด

drbdadm create-md test

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

drbdadm up test

ตอนนี้ หากคุณรันคำสั่ง lsblk คุณจะสังเกตเห็นว่าอุปกรณ์/ระดับเสียง DRBD drbd0 เชื่อมโยงกับอุปกรณ์สำรอง /dev/sdb1:

lsblk

หากต้องการปิดใช้งานทรัพยากร ให้รัน:

drbdadm down test

หากต้องการตรวจสอบสถานะทรัพยากร ให้รันคำสั่งต่อไปนี้ (โปรดทราบว่าสถานะดิสก์ ไม่สอดคล้องกัน/ไม่สอดคล้อง คาดว่าจะเกิดขึ้น ณ จุดนี้):

drbdadm status test
OR
drbdsetup status test --verbose --statistics 	#for  a more detailed status 

ขั้นตอนที่ 6: ตั้งค่าทรัพยากรหลัก/แหล่งที่มาของการซิงโครไนซ์อุปกรณ์เริ่มต้น

ในขั้นตอนนี้ DRBD พร้อมสำหรับการดำเนินการแล้ว ตอนนี้เราต้องบอกว่าโหนดใดควรใช้เป็นแหล่งที่มาของการซิงโครไนซ์อุปกรณ์เริ่มต้น

รันคำสั่งต่อไปนี้บนโหนดเดียวเท่านั้นเพื่อเริ่มการซิงโครไนซ์แบบเต็มครั้งแรก:

drbdadm primary --force test
drbdadm status test

เมื่อการซิงโครไนซ์เสร็จสมบูรณ์ สถานะของดิสก์ทั้งสองควรเป็น UpToDate

ขั้นตอนที่ 7: ทดสอบการตั้งค่า DRBD

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

เราสามารถสร้างระบบไฟล์บนอุปกรณ์ด้วยคำสั่งต่อไปนี้ บนโหนดที่เราเริ่มการซิงโครไนซ์แบบเต็มครั้งแรก (ซึ่งมีทรัพยากรที่มีบทบาทหลัก):

mkfs -t ext4 /dev/drbd0 

จากนั้นเมานต์ตามที่แสดง (คุณสามารถตั้งชื่อที่เหมาะสมให้กับจุดเมานท์ได้):

mkdir -p /mnt/DRDB_PRI/
mount /dev/drbd0 /mnt/DRDB_PRI/

ตอนนี้คัดลอกหรือสร้างไฟล์บางไฟล์ในจุดเมานท์ด้านบนและทำรายการแบบยาวโดยใช้คำสั่ง ls:

cd /mnt/DRDB_PRI/
ls -l 

ถัดไป ถอนเมานท์ อุปกรณ์ (ตรวจสอบให้แน่ใจว่าเมานต์ไม่ได้เปิดอยู่ เปลี่ยนไดเร็กทอรีหลังจากการถอนเมานท์เพื่อป้องกันข้อผิดพลาดใดๆ) และเปลี่ยนบทบาทของโหนดจาก หลัก เป็น < แข็งแกร่ง>รอง:

umount /mnt/DRDB_PRI/
cd
drbdadm secondary test

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

drbdadm primary test
mkdir -p /mnt/DRDB_SEC/
mount /dev/drbd0 /mnt/DRDB_SEC/
cd /mnt/DRDB_SEC/
ls  -l 

สำหรับข้อมูลเพิ่มเติม โปรดดูที่หน้าคู่มือของเครื่องมือการดูแลระบบพื้นที่ผู้ใช้:

man drbdadm
man drbdsetup
man drbdmeta
สรุป

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