Πριν από λίγο καιρό, τα παιδιά από το LINBIT παρουσίασαν τη νέα τους λύση SDS - Linstor. Αυτός είναι ένας εντελώς δωρεάν χώρος αποθήκευσης που βασίζεται σε δοκιμασμένες τεχνολογίες: DRBD, LVM, ZFS. Το Linstor συνδυάζει την απλότητα και την καλοσχεδιασμένη αρχιτεκτονική, που σας επιτρέπει να επιτύχετε σταθερότητα και αρκετά εντυπωσιακά αποτελέσματα.
Σήμερα θα ήθελα να μιλήσω λίγο περισσότερο για αυτό και να δείξω πόσο εύκολα μπορεί να ενσωματωθεί με το OpenNebula χρησιμοποιώντας το linstor_un - ένα νέο πρόγραμμα οδήγησης που ανέπτυξα ειδικά για αυτόν τον σκοπό.
Το Linstor σε συνδυασμό με το OpenNebula σάς επιτρέπει να δημιουργήσετε ένα γρήγορο και αξιόπιστο cloud που μπορεί εύκολα να αναπτυχθεί στη δική σας υποδομή.
Αρχιτεκτονική Linstor
Το Linstor δεν είναι ούτε σύστημα αρχείων ούτε μπλοκ αποθήκευσης από μόνο του, ο Linstor είναι ένας ενορχηστρωτής που παρέχει ένα στρώμα αφαίρεσης για την αυτοματοποίηση της δημιουργίας τόμων σε LVM ή ZFS και την αναπαραγωγή τους χρησιμοποιώντας το DRBD9.
Σπάζοντας τα στερεότυπα
Αλλά περιμένετε, DRBD; - Γιατί να το αυτοματοποιήσετε και πώς μπορεί να λειτουργήσει καθόλου;
Ας θυμηθούμε το παρελθόν όταν το DRBD8 ήταν πολύ δημοφιλές. Η τυπική του χρήση σήμαινε τη δημιουργία μιας μεγάλης συσκευής μπλοκ και την κοπή της σε πολλά μικρά κομμάτια, χρησιμοποιώντας το ίδιο LVM. Ένα είδος mdadm RAID-1 αλλά με αναπαραγωγή δικτύου.
Αυτή η προσέγγιση δεν είναι χωρίς μειονεκτήματα, και ως εκ τούτου, με την έλευση του DRBD9, οι αρχές της κατασκευής αποθήκευσης έχουν αλλάξει, τώρα δημιουργείται μια ξεχωριστή συσκευή DRBD για κάθε εικονική μηχανή.
Η προσέγγιση της ανεξάρτητης συσκευής μπλοκ επιτρέπει την καλύτερη χρήση του χώρου στο σύμπλεγμα και προσθέτει επίσης μια σειρά από πρόσθετα χαρακτηριστικά. Για παράδειγμα, για κάθε τέτοια συσκευή, μπορείτε να προσδιορίσετε τον αριθμό των αντιγράφων, τη θέση τους και τις μεμονωμένες ρυθμίσεις. Είναι εύκολο να δημιουργήσετε/διαγράψετε, να τραβήξετε στιγμιότυπα, να αλλάξετε το μέγεθος, να ενεργοποιήσετε την κρυπτογράφηση και πολλά άλλα. Αξίζει να σημειωθεί ότι το DRBD9 διατηρεί επίσης απαρτία, το οποίο αποφεύγει καταστάσεις διχασμού του εγκεφάλου.
Πόροι και backends
Κατά τη δημιουργία μιας νέας συσκευής μπλοκ, το Linstor τοποθετεί τον απαιτούμενο αριθμό αντιγράφων σε διαφορετικούς κόμβους στο σύμπλεγμα. Θα ονομάζουμε κάθε τέτοιο αντίγραφο πόρο DRBD.
Οι πόροι είναι δύο τύπων:
- Πηγή δεδομένων - αντιπροσωπεύουν μια συσκευή DRBD που βρίσκεται σε έναν κόμβο σε μια ομάδα LVM ή ZFS.
Αυτή τη στιγμή υπάρχει υποστήριξη για αρκετά backend και ο αριθμός τους αυξάνεται συνεχώς. Υπάρχει υποστήριξη για LVM, ThinLVM και ZFS. Τα δύο τελευταία σάς επιτρέπουν να δημιουργείτε και να χρησιμοποιείτε στιγμιότυπα. - Πόρος χωρίς δίσκο - είναι μια συσκευή DRBD που φιλοξενείται σε έναν κόμβο χωρίς backend, αλλά επιτρέποντάς της να αντιμετωπίζεται σαν μια κανονική συσκευή μπλοκ, όλες οι λειτουργίες ανάγνωσης/εγγραφής θα ανακατευθύνονται σε πόρους δεδομένων. Το πλησιέστερο ανάλογο σε πόρους χωρίς δίσκο είναι το iSCSI LUN.
Κάθε πόρος DRBD μπορεί να έχει έως και 8 αντίγραφα και μόνο ένα από αυτά μπορεί να είναι ενεργό από προεπιλογή − πρωταρχικός, όλα τα υπόλοιπα θα είναι Δευτερεύων και η χρήση τους θα είναι αδύνατη εφόσον υπάρχει τουλάχιστον ένα Primary, δηλαδή απλά θα αναπαράγουν δεδομένα μεταξύ τους.
Με την τοποθέτηση μιας συσκευής DRBD στο σύστημα, γίνεται αυτόματα πρωταρχικός, επομένως ακόμη και ένας πόρος χωρίς δίσκους, στην ορολογία DRBD, μπορεί να είναι Κύριος.
Γιατί λοιπόν χρειαζόμαστε το Linstor;
Αναθέτοντας όλες τις εργασίες έντασης πόρων στον πυρήνα, το Linstor είναι ουσιαστικά μια κανονική εφαρμογή Java που σας επιτρέπει να αυτοματοποιείτε εύκολα τη δημιουργία πόρων DRBD.
Ταυτόχρονα, κάθε πόρος που δημιουργείται από αυτόν θα είναι ένα ανεξάρτητο σύμπλεγμα DRBD που λειτουργεί ανεξάρτητα, ανεξάρτητα από την κατάσταση του επιπέδου ελέγχου και άλλων πόρων DRBD.
Το Linstor αποτελείται από δύο μόνο στοιχεία:
- linstor-ελεγκτής - Ο κύριος ελεγκτής, ο οποίος παρέχει ένα API για τη δημιουργία και τη διαχείριση πόρων. Επικοινωνεί επίσης με δορυφόρους, ελέγχοντας τον ελεύθερο χώρο σε αυτούς και στέλνει θέσεις εργασίας για τη δημιουργία και τη διαγραφή νέων πόρων. Εκτελείται σε μία μόνο παρουσία και χρησιμοποιεί μια βάση δεδομένων που μπορεί να είναι είτε εσωτερική (H2) είτε εξωτερική (PostgreSQL, MySQL, MariaDB)
- linstor-δορυφόρος - Εγκαθίσταται σε όλους τους κόμβους αποθήκευσης και παρέχει στον ελεγκτή πληροφορίες σχετικά με τον ελεύθερο χώρο και εκτελεί επίσης εργασίες που λαμβάνονται από τον ελεγκτή για τη δημιουργία και τη διαγραφή νέων τόμων και συσκευών DRBD πάνω τους.
Το Linstor λειτουργεί με τις ακόλουθες βασικές έννοιες:
- Κόμβος — ένας φυσικός διακομιστής στον οποίο θα δημιουργηθούν και θα χρησιμοποιηθούν πόροι DRBD.
- πισίνα αποθήκευσης - Ο χώρος συγκέντρωσης LVM ή ZFS δημιουργήθηκε στον κόμβο στον οποίο θα τοποθετηθούν οι πόροι DRBD. Είναι επίσης δυνατή μια πισίνα χωρίς δίσκο - αυτή είναι μια πισίνα στην οποία θα τοποθετηθούν μόνο πόροι χωρίς δίσκο.
- ορισμός πόρων - Ορισμός πόρου, στην πραγματικότητα είναι ένα πρωτότυπο που περιγράφει το όνομα και όλες τις ιδιότητές του.
- ορισμός όγκου — Ορισμός όγκου. Κάθε πόρος μπορεί να αποτελείται από πολλούς τόμους, κάθε τόμος πρέπει να έχει ένα μέγεθος.
- Πόρος - Δημιουργήθηκε μια παρουσία μιας συσκευής μπλοκ, κάθε πόρος πρέπει να τοποθετηθεί σε έναν συγκεκριμένο κόμβο και σε κάποιο χώρο αποθήκευσης.
Εγκατάσταση του Linstor
Συνιστώ να χρησιμοποιήσετε το 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
Δημιουργήστε ένα σύμπλεγμα
Πισίνες και κόμβοι αποθήκευσης
Ως backend θα πάρουμε ThinLVM, επειδή είναι το πιο απλό και υποστηρίζει στιγμιότυπα.
Σετ lvm2, αν δεν το έχετε κάνει ήδη, και ας δημιουργήσουμε μια πισίνα 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
Εάν όλα γίνονται σωστά, τότε θα πρέπει να δούμε κάτι σαν:
+------------------------------------------------- -------------------------------------------------- ----+ | StoragePool | κόμβος | οδηγός | όνομα πισίνας | ελεύθερη χωρητικότητα | συνολική χωρητικότητα | Υποστηρίζει Στιγμιότυπα | |------------------------------------------------ -------------------------------------------------- ----| | δεδομένα | κόμβος1 | LVM_THIN | drbdpool/thinpool | 64 GiB | 64 GiB | αλήθεια | | δεδομένα | κόμβος2 | LVM_THIN | drbdpool/thinpool | 64 GiB | 64 GiB | αλήθεια | | δεδομένα | κόμβος 3 | LVM_THIN | drbdpool/thinpool | 64 GiB | 64 GiB | αλήθεια | +------------------------------------------------- -------------------------------------------------- ----+
Πόροι DRBD
Τώρα ας προσπαθήσουμε να δημιουργήσουμε τον νέο μας πόρο DRBD:
linstor resource-definition create myres
linstor volume-definition create myres 1G
linstor resource create myres --auto-place 2
Ας ελέγξουμε τους πόρους που δημιουργήθηκαν:
linstor resource list
+------------------------------------------------- -------------------------------------------------- ---+ | κόμβος | πόρος | StoragePool | Αριθμός τόμου | MinorNr | Όνομα συσκευής | Κατανεμήθηκε | σε χρήση | κράτος | |------------------------------------------------ -------------------------------------------------- ---| | κόμβος1 | μύρες | δεδομένα | 0 | 1084 | /dev/drbd1084 | 52 KiB | Αχρησιμοποίητο | UpToDate | | κόμβος2 | μύρες | δεδομένα | 0 | 1084 | /dev/drbd1084 | 52 KiB | Αχρησιμοποίητο | UpToDate | +------------------------------------------------- -------------------------------------------------- ---+
Εξαιρετική! - βλέπουμε ότι ο πόρος δημιουργήθηκε στους δύο πρώτους κόμβους, μπορούμε επίσης να προσπαθήσουμε να δημιουργήσουμε έναν πόρο χωρίς δίσκο στον τρίτο:
linstor resource create --diskless node3 myres
Στους κόμβους θα βρείτε πάντα αυτή τη συσκευή ως /dev/drbd1084
ή /dev/drbd/by-res/myres/0
Έτσι λειτουργεί το Linstor, μπορείτε να λάβετε περισσότερες πληροφορίες από
Τώρα θα μιλήσω για το πώς να το ενσωματώσω με το OpenNebula
Ρύθμιση του OpenNebula
Δεν θα μπω πολύ βαθιά στη διαδικασία εγκατάστασης του OpenNebula, γιατί Όλα τα βήματα περιγράφονται αναλυτικά στο
linstor_un
Για να λύσω αυτό το πρόβλημα, έγραψα το δικό μου πρόγραμμα οδήγησης -
Ολόκληρη η εγκατάσταση εκτελείται στους κόμβους OpenNebula στο frontend και δεν απαιτεί πρόσθετες ενέργειες στους κόμβους υπολογισμού.
Πρώτα απ 'όλα, πρέπει να βεβαιωθούμε ότι έχουμε jq и linstor-client:
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
Συνιστάται να προσδιορίσετε όλους τους κόμβους που θα χρησιμοποιηθούν για την εκτέλεση εργασιών κλωνοποίησης εικόνας.
Για μια πλήρη λίστα με τις υποστηριζόμενες επιλογές, βλ
Αυτό ολοκληρώνει τη ρύθμιση, τώρα μπορείτε να κατεβάσετε κάποια συσκευή από την επίσημη
Σύνδεσμος έργου:
Πηγή: www.habr.com