ไม่นานมานี้ ทีมจาก LINBIT นำเสนอโซลูชัน SDS ใหม่ของพวกเขา - Linstor นี่เป็นพื้นที่เก็บข้อมูลฟรีโดยสมบูรณ์บนพื้นฐานของเทคโนโลยีที่ได้รับการพิสูจน์แล้ว: DRBD, LVM, ZFS Linstor ผสมผสานความเรียบง่ายและสถาปัตยกรรมที่ออกแบบมาอย่างดี ซึ่งช่วยให้คุณได้รับความเสถียรและผลลัพธ์ที่น่าประทับใจ
วันนี้ฉันอยากจะพูดถึงมันในรายละเอียดเพิ่มเติมอีกเล็กน้อย และแสดงให้เห็นว่ามันสามารถรวมเข้ากับ OpenNebula ได้อย่างง่ายดายโดยใช้ linstor_un ซึ่งเป็นไดรเวอร์ใหม่ที่ฉันพัฒนาขึ้นมาเพื่อจุดประสงค์นี้โดยเฉพาะ
Linstor ร่วมกับ OpenNebula ช่วยให้คุณสร้างระบบคลาวด์ที่รวดเร็วและเชื่อถือได้ซึ่งสามารถปรับใช้บนโครงสร้างพื้นฐานของคุณเองได้อย่างง่ายดาย
สถาปัตยกรรมลินสตอร์
Linstor ไม่ใช่ทั้งระบบไฟล์หรือพื้นที่จัดเก็บข้อมูลแบบบล็อก Linstor คือผู้เรียบเรียงที่จัดเตรียมเลเยอร์นามธรรมที่ช่วยให้คุณสร้างวอลุ่มใน LVM หรือ ZFS ได้โดยอัตโนมัติ และจำลองวอลุ่มเหล่านั้นโดยใช้ DRBD9
ทำลายแบบแผน
แต่เดี๋ยวก่อน DRBD? — ทำไมต้องทำให้มันเป็นอัตโนมัติ และมันทำงานได้อย่างไร?
มารำลึกความหลังกันเมื่อ DRBD8 ได้รับความนิยมอย่างมาก การใช้งานมาตรฐานเกี่ยวข้องกับการสร้างอุปกรณ์บล็อกขนาดใหญ่หนึ่งชิ้นและตัดเป็นชิ้นเล็ก ๆ จำนวนมากโดยใช้ LVM เดียวกัน mdadm RAID-1 ชนิดหนึ่ง แต่มีการจำลองแบบผ่านเครือข่าย
วิธีการนี้ไม่ได้มีข้อเสียดังนั้นด้วยการถือกำเนิดของ DRBD9 หลักการออกแบบพื้นที่เก็บข้อมูลจึงเปลี่ยนไป ตอนนี้อุปกรณ์ DRBD แยกต่างหากได้ถูกสร้างขึ้นสำหรับเครื่องเสมือนแต่ละเครื่อง
วิธีการใช้อุปกรณ์บล็อกอิสระช่วยให้ใช้พื้นที่ในคลัสเตอร์ได้ดีขึ้น และยังเพิ่มคุณสมบัติเพิ่มเติมอีกมากมาย ตัวอย่างเช่น สำหรับแต่ละอุปกรณ์ดังกล่าว คุณสามารถกำหนดจำนวนแบบจำลอง ตำแหน่ง และการตั้งค่าส่วนบุคคลได้ สร้าง/ลบ ถ่ายภาพสแนปช็อต ปรับขนาด เปิดใช้งานการเข้ารหัส และอื่นๆ อีกมากมายได้อย่างง่ายดาย เป็นที่น่าสังเกตว่า DRBD9 รองรับองค์ประชุมด้วยซึ่งช่วยให้คุณหลีกเลี่ยงสถานการณ์สมองแตกได้
ทรัพยากรและแบ็กเอนด์
เมื่อสร้างอุปกรณ์บล็อกใหม่ Linstor จะวางแบบจำลองตามจำนวนที่ต้องการบนโหนดต่างๆ ในคลัสเตอร์ เราจะเรียกแบบจำลองแต่ละรายการดังกล่าวว่าทรัพยากร DRBD
ทรัพยากรมีสองประเภท:
- ทรัพยากรข้อมูล — เป็นอุปกรณ์ DRBD ที่อยู่บนโหนดในพูล LVM หรือ ZFS
ในขณะนี้มีการรองรับแบ็กเอนด์หลายตัวและจำนวนก็เพิ่มขึ้นอย่างต่อเนื่อง มีการรองรับ LVM, ThinLVM และ ZFS สองรายการสุดท้ายอนุญาตให้คุณสร้างและใช้สแนปชอต - ทรัพยากรแบบไร้ดิสก์ — เป็นอุปกรณ์ DRBD ที่วางอยู่บนโหนดโดยไม่มีแบ็กเอนด์ แต่อนุญาตให้ถือเป็นอุปกรณ์บล็อกทั่วไป การดำเนินการอ่าน/เขียนทั้งหมดจะถูกเปลี่ยนเส้นทางไปยังแหล่งข้อมูล อะนาล็อกที่ใกล้เคียงที่สุดกับรีซอร์สแบบไร้ดิสก์คือ iSCSI LUN
ทรัพยากร DRBD แต่ละรายการสามารถมีแบบจำลองได้สูงสุด 8 รายการ และมีเพียง XNUMX รายการเท่านั้นที่สามารถใช้งานได้ตามค่าเริ่มต้น - ประถมคนอื่นๆ จะเป็นอย่างนั้น รอง และการใช้งานจะเป็นไปไม่ได้ตราบใดที่มีหลักอย่างน้อยหนึ่งรายการ นั่นคือพวกเขาจะจำลองข้อมูลระหว่างกันเท่านั้น
โดยการติดตั้งอุปกรณ์ DRBD เข้าสู่ระบบก็จะกลายเป็นโดยอัตโนมัติ ประถมดังนั้นแม้แต่ทรัพยากร Diskless ในคำศัพท์ DRBD ก็สามารถเป็นทรัพยากรหลักได้
แล้วทำไมคุณถึงต้องการ Linstor?
ด้วยการมอบความไว้วางใจให้กับเคอร์เนลงานที่ต้องใช้ทรัพยากรมาก Linstor จึงเป็นแอปพลิเคชัน Java ทั่วไปที่ช่วยให้คุณสร้างทรัพยากร DRBD โดยอัตโนมัติได้อย่างง่ายดาย
นอกจากนี้ ทรัพยากรแต่ละรายการที่เขาสร้างขึ้นจะเป็นคลัสเตอร์ DRBD อิสระที่ทำงานอย่างอิสระ โดยไม่คำนึงถึงสถานะของระนาบควบคุมและทรัพยากร DRBD อื่นๆ
Linstor ประกอบด้วยสององค์ประกอบเท่านั้น:
- Linstor-คอนโทรลเลอร์ - ตัวควบคุมหลักซึ่งมี API สำหรับการสร้างและจัดการทรัพยากร นอกจากนี้ยังสื่อสารกับดาวเทียม ตรวจสอบพื้นที่ว่าง และส่งงานเพื่อสร้างและลบทรัพยากรใหม่ มันทำงานในอินสแตนซ์เดียวและใช้ฐานข้อมูลซึ่งอาจเป็นแบบภายใน (H2) หรือภายนอก (PostgreSQL, MySQL, MariaDB)
- ดาวเทียม Linstor — ติดตั้งบนโหนดจัดเก็บข้อมูลทั้งหมดและให้ข้อมูลเกี่ยวกับพื้นที่ว่างแก่คอนโทรลเลอร์ และยังทำงานที่ได้รับจากคอนโทรลเลอร์เพื่อสร้างและลบวอลุ่มใหม่และอุปกรณ์ DRBD ที่อยู่ด้านบนสุดอีกด้วย
Linstor ดำเนินงานด้วยแนวคิดหลักดังต่อไปนี้:
- โหนด — เซิร์ฟเวอร์กายภาพที่จะสร้างและใช้ทรัพยากร DRBD
- สระจัดเก็บ — พูล LVM หรือ ZFS ที่สร้างขึ้นบนโหนดซึ่งทรัพยากร DRBD จะตั้งอยู่ พูลแบบไร้ดิสก์ก็เป็นไปได้เช่นกัน - นี่คือพูลที่มีเฉพาะทรัพยากรแบบไร้ดิสก์เท่านั้นที่จะตั้งอยู่
- คำจำกัดความของทรัพยากร — คำจำกัดความของทรัพยากรนั้นเป็นต้นแบบที่อธิบายชื่อและคุณสมบัติทั้งหมด
- คำจำกัดความของปริมาณ — คำจำกัดความของปริมาณ ทรัพยากรแต่ละรายการสามารถประกอบด้วยหลายวอลุ่ม โดยแต่ละวอลุ่มต้องมีขนาด
- ทรัพยากร — อินสแตนซ์ที่สร้างขึ้นของอุปกรณ์บล็อก แต่ละทรัพยากรจะต้องวางอยู่บนโหนดเฉพาะและในพูลพื้นที่เก็บข้อมูลบางส่วน
การติดตั้งลินสตอร์
ฉันแนะนำให้ใช้ Ubuntu เป็นระบบเพราะ... มีไว้เพื่อเธอ
add-apt-repository ppa:linbit/linbit-drbd9-stack
apt-get update
หรือ Debian โดยที่ Linstor สามารถติดตั้งได้จากพื้นที่เก็บข้อมูลอย่างเป็นทางการสำหรับ Proxmox:
wget -O- https://packages.linbit.com/package-signing-pubkey.asc | apt-key add -
PVERS=5 && echo "deb http://packages.linbit.com/proxmox/ proxmox-$PVERS drbd-9.0" >
/etc/apt/sources.list.d/linbit.list
apt-get update
ตัวควบคุม
ทุกอย่างง่ายที่นี่:
apt-get install linstor-controller linstor-client
systemctl enable linstor-controller
systemctl start linstor-controller
โหนดการจัดเก็บข้อมูล
ปัจจุบันเคอร์เนล Linux มาพร้อมกับโมดูลเคอร์เนลในแผนผัง DRBD8น่าเสียดายที่มันไม่เหมาะกับเราและเราจำเป็นต้องติดตั้ง DRBD9:
apt-get install drbd-dkms
ตามที่แสดงในทางปฏิบัติ ปัญหาส่วนใหญ่เกิดขึ้นอย่างแน่นอนเนื่องจากมีการโหลดโมดูล DRBD8 เข้าสู่ระบบ ไม่ใช่ DRBD9 โชคดีที่ตรวจสอบได้ง่ายด้วยการรัน:
modprobe drbd
cat /proc/drbd
ถ้าคุณเห็น รุ่น: 9 - มันหมายความว่าทุกอย่างเรียบร้อยดีถ้า รุ่น: 8 - หมายความว่ามีบางอย่างผิดพลาด และคุณต้องดำเนินการเพิ่มเติมเพื่อค้นหาสาเหตุ
ตอนนี้เรามาติดตั้งกัน linstor-ดาวเทียม и drbd-utils:
apt-get install linstor-satellite drbd-utils
systemctl enable linstor-satellite
systemctl start linstor-satellite
สร้างคลัสเตอร์
พูลหน่วยเก็บข้อมูลและโหนด
เราจะใช้เป็นแบ็กเอนด์ ThinLVM, เพราะ มันง่ายที่สุดและรองรับสแน็ปช็อต
ติดตั้ง เลเวล 2หากคุณยังไม่ได้ดำเนินการ มาสร้างพูล ThinLVM บนโหนดพื้นที่จัดเก็บข้อมูลทั้งหมดของเรากันดีกว่า:
sudo vgcreate drbdpool /dev/sdb
sudo lvcreate -L 800G -T drbdpool/thinpool
การดำเนินการเพิ่มเติมทั้งหมดสามารถทำได้โดยตรงบนคอนโทรลเลอร์:
มาเพิ่มโหนดของเรา:
linstor node create node1 127.0.0.11
linstor node create node2 127.0.0.12
linstor node create node3 127.0.0.13
มาสร้างพูลหน่วยเก็บข้อมูลกันเถอะ:
linstor storage-pool create lvmthin node1 data drbdpool/thinpool
linstor storage-pool create lvmthin node2 data drbdpool/thinpool
linstor storage-pool create lvmthin node3 data drbdpool/thinpool
ตอนนี้เรามาตรวจสอบพูลที่สร้างขึ้น:
linstor storage-pool list
หากทุกอย่างถูกต้องแล้ว เราควรเห็นสิ่งที่ต้องการ:
+---------------------------------------------------------------- -------------------------------------------------- -------------------------------------------------- ----+ | สตอเรจพูล | โหนด | ไดร์เวอร์ | ชื่อพูล | ฟรีความจุ | ความจุรวม | รองรับ Snapshots | |------------------------------------------------ - ------------------------------------------------- - ---| | ข้อมูล | โหนด1 | LVM_THIN | drbdpool/ทินพูล | 64 กิ๊บ | 64 กิ๊บ | จริง | | ข้อมูล | โหนด2 | LVM_THIN | drbdpool/ทินพูล | 64 กิ๊บ | 64 กิ๊บ | จริง | | ข้อมูล | โหนด3 | LVM_THIN | drbdpool/ทินพูล | 64 กิ๊บ | 64 กิ๊บ | จริง | +---------------------------------------------------------------- -------------------------------------------------- -------------------------------------------------- ----+
ทรัพยากร DRBD
ตอนนี้เรามาลองสร้างทรัพยากร DRBD ใหม่ของเรา:
linstor resource-definition create myres
linstor volume-definition create myres 1G
linstor resource create myres --auto-place 2
ตรวจสอบทรัพยากรที่สร้างขึ้น:
linstor resource list
+---------------------------------------------------------------- -------------------------------------------------- -------------------------------------------------- ---+ | โหนด | ทรัพยากร | สตอเรจพูล | ปริมาณหมายเลข | ไมเนอร์เนอร์ | ชื่ออุปกรณ์ | จัดสรรแล้ว | ใช้งาน | รัฐ | |------------------------------------------------ - ------------------------------------------------- - --| | โหนด1 | มีเรส | ข้อมูล | 0 | 1084 | /dev/drbd1084 | 52 กิโลไบต์ | ไม่ได้ใช้ | อัปเดต | | โหนด2 | มีเรส | ข้อมูล | 0 | 1084 | /dev/drbd1084 | 52 กิโลไบต์ | ไม่ได้ใช้ | อัปเดต | +---------------------------------------------------------------- -------------------------------------------------- -------------------------------------------------- ---+
ยอดเยี่ยม! — เราเห็นว่าทรัพยากรถูกสร้างขึ้นบนสองโหนดแรก เราสามารถลองสร้างทรัพยากรแบบไร้ดิสก์บนโหนดที่สามได้เช่นกัน:
linstor resource create --diskless node3 myres
บนโหนดคุณจะพบอุปกรณ์นี้เสมอ /dev/drbd1084
หรือ /dev/drbd/by-res/myres/0
นี่คือวิธีการทำงานของ Linstor คุณสามารถรับข้อมูลเพิ่มเติมได้
ตอนนี้ฉันจะบอกคุณถึงวิธีการรวมเข้ากับ OpenNebula
การตั้งค่า OpenNebula
ฉันจะไม่ลงลึกเข้าไปในกระบวนการตั้งค่า OpenNebula มากนัก เพราะ... มีอธิบายรายละเอียดทุกขั้นตอนไว้ใน
linstor_un
เพื่อแก้ไขปัญหานี้ ฉันจึงเขียนไดรเวอร์ของตัวเองขึ้นมา -
การติดตั้งทั้งหมดจะดำเนินการบนโหนดส่วนหน้าของ OpenNebula และไม่จำเป็นต้องดำเนินการใดๆ เพิ่มเติมบนโหนดประมวลผล
ก่อนอื่นเราต้องแน่ใจว่าเรามี jq и linstor-ลูกค้า:
apt-get install jq linstor-client
ทีม linstor node list
ควรแสดงรายการโหนด ต้องเพิ่มโหนดประมวลผล OpenNebula ทั้งหมดลงในคลัสเตอร์ Linstor
ดาวน์โหลดและติดตั้งปลั๊กอิน:
curl -L https://github.com/OpenNebula/addon-linstor_un/archive/master.tar.gz | tar -xzvf - -C /tmp
mv /tmp/addon-linstor_un-master/vmm/kvm/* /var/lib/one/remotes/vmm/kvm/
mkdir -p /var/lib/one/remotes/etc/datastore/linstor_un
mv /tmp/addon-linstor_un-master/datastore/linstor_un/linstor_un.conf /var/lib/one/remotes/etc/datastore/linstor_un/linstor_un.conf
mv /tmp/addon-linstor_un-master/datastore/linstor_un /var/lib/one/remotes/datastore/linstor_un
mv /tmp/addon-linstor_un-master/tm/linstor_un /var/lib/one/remotes/tm/linstor_un
rm -rf /tmp/addon-linstor_un-master
ตอนนี้เราต้องเพิ่มมันลงในการกำหนดค่า OpenNebula โดยทำตามขั้นตอนง่าย ๆ ที่อธิบายไว้
จากนั้นรีสตาร์ท OpenNebula:
systemctl restart opennebula
และเพิ่มพื้นที่เก็บข้อมูลระบบของเรา:
cat > system-ds.conf <<EOT
NAME="linstor-system"
TYPE="SYSTEM_DS"
STORAGE_POOL="data"
AUTO_PLACE="2"
CLONE_MODE="snapshot"
CHECKPOINT_AUTO_PLACE="1"
BRIDGE_LIST="node1 node2 node3"
TM_MAD="linstor_un"
EOT
onedatastore create system-ds.conf
และที่เก็บรูปภาพ:
cat > images-ds.conf <<EOT
NAME="linstor-images"
TYPE="IMAGE_DS"
STORAGE_POOL="data"
AUTO_PLACE="2"
BRIDGE_LIST="node1 node2 node3"
DISK_TYPE="BLOCK"
DS_MAD="linstor_un"
TM_MAD="linstor_un"
EOT
onedatastore create images-ds.conf
- พารามิเตอร์
AUTO_PLACE
แสดงจำนวนแบบจำลองข้อมูลที่จะสร้างขึ้นสำหรับรูปภาพใหม่แต่ละภาพใน OpenNebula - พารามิเตอร์
CLONE_MODE
ระบุอย่างชัดเจนว่าภาพจะถูกโคลนอย่างไรเมื่อสร้างเครื่องเสมือนใหม่snapshot
— จะสร้างสแนปชอตของรูปภาพและปรับใช้เครื่องเสมือนจากสแน็ปช็อตcopy
— จะทำสำเนารูปภาพให้สมบูรณ์สำหรับเครื่องเสมือนแต่ละเครื่อง - В
BRIDGE_LIST
ขอแนะนำให้ระบุโหนดทั้งหมดที่จะใช้เพื่อดำเนินการโคลนรูปภาพ
สำหรับรายการพารามิเตอร์ที่รองรับทั้งหมด โปรดดู
เสร็จสิ้นการตั้งค่า ตอนนี้คุณสามารถดาวน์โหลดอุปกรณ์บางอย่างจากทางการได้แล้ว
ลิงค์โครงการ:
ที่มา: will.com