วิธีการตั้งค่า 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 และสาธิตวิธีใช้เพื่อจำลองพื้นที่จัดเก็บข้อมูลโดยย่อ รู้สึกอิสระที่จะแบ่งปันความคิดของคุณกับเราผ่านทางแบบฟอร์มข้อเสนอแนะด้านล่าง