Πώς να ρυθμίσετε το DRBD για αναπαραγωγή αποθήκευσης σε δύο διακομιστές CentOS 7


Το DRBD (σημαίνει Distributed Replicated Block Device) είναι μια κατανεμημένη, ευέλικτη και ευέλικτη λύση αναπαραγόμενης αποθήκευσης για Linux. Αντικατοπτρίζει το περιεχόμενο μπλοκ συσκευών όπως σκληροί δίσκοι, διαμερίσματα, λογικοί τόμοι κ.λπ. μεταξύ διακομιστών. Περιλαμβάνει ένα αντίγραφο δεδομένων σε δύο συσκευές αποθήκευσης, έτσι ώστε εάν η μία αποτύχει, τα δεδομένα της άλλης μπορούν να χρησιμοποιηθούν.

Μπορείτε να το σκεφτείτε κάπως σαν μια διαμόρφωση δικτύου RAID 1 με τους δίσκους να αντικατοπτρίζονται σε διακομιστές. Ωστόσο, λειτουργεί με πολύ διαφορετικό τρόπο από το RAID και ακόμη και το RAID δικτύου.

Αρχικά, το DRBD χρησιμοποιήθηκε κυρίως σε συμπλέγματα υπολογιστών υψηλής διαθεσιμότητας (HA), ωστόσο, ξεκινώντας από την έκδοση 9, μπορεί να χρησιμοποιηθεί για την ανάπτυξη λύσεων αποθήκευσης cloud.

Σε αυτό το άρθρο, θα δείξουμε πώς να εγκαταστήσετε το DRBD στο CentOS και θα δείξουμε εν συντομία πώς να το χρησιμοποιήσετε για την αναπαραγωγή αποθήκευσης (διαμέρισμα) σε δύο διακομιστές. Αυτό είναι το τέλειο άρθρο για να ξεκινήσετε τη χρήση του DRBD στο Linux.

Περιβάλλον Δοκιμών

Για τους σκοπούς αυτού του άρθρου, χρησιμοποιούμε δύο συμπλέγματα κόμβων για αυτήν τη ρύθμιση.

  • Node1: 192.168.56.101 – tecmint.tecmint.lan
  • Node2: 192.168.56.102 – server1.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 ή ένας άλλος τύπος συσκευής μπλοκ που βρίσκεται στο σύστημά σας.

Για τους σκοπούς αυτού του άρθρου, θα δημιουργήσουμε μια εικονική συσκευή μπλοκ μεγέθους 2 GB χρησιμοποιώντας την εντολή 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;
 }
}

Αποθηκεύστε το αρχείο και, στη συνέχεια, κλείστε το πρόγραμμα επεξεργασίας.

Ας δώσουμε εν συντομία περισσότερο φως στη γραμμή πρωτόκολλο Γ. Το DRBD υποστηρίζει τρεις διαφορετικούς τρόπους αναπαραγωγής (άρα τρεις βαθμούς συγχρονισμού αναπαραγωγής) που είναι:

  • πρωτόκολλο A: Πρωτόκολλο ασύγχρονης αναπαραγωγής. χρησιμοποιείται συχνότερα σε σενάρια αναπαραγωγής μεγάλων αποστάσεων.
  • πρωτόκολλο Β: Πρωτόκολλο ημισύγχρονης αναπαραγωγής γνωστό και ως Σύγχρονο πρωτόκολλο μνήμης.
  • πρωτόκολλο Γ: χρησιμοποιείται συνήθως για κόμβους σε δίκτυα μικρής απόστασης. είναι μακράν, το πιο συχνά χρησιμοποιούμενο πρωτόκολλο αναπαραγωγής στις ρυθμίσεις 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;
        }
}
}

που :

  • στο όνομα κεντρικού υπολογιστή: οι καταστάσεις της ενότητας για τις οποίες φιλοξενούνται οι συνημμένες δηλώσεις διαμόρφωσης.
  • test: είναι το όνομα του νέου πόρου.
  • συσκευή /dev/drbd0: καθορίζει τη νέα συσκευή εικονικού μπλοκ που διαχειρίζεται το DRBD.
  • disk /dev/sdb1: είναι το διαμέρισμα μπλοκ συσκευής που είναι η συσκευή υποστήριξης για τη συσκευή DRBD.
  • μετα-δίσκος: Καθορίζει πού αποθηκεύει το DRBD τα μεταδεδομένα του. Η χρήση Internal σημαίνει ότι το 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 των εργαλείων διαχείρισης χώρου χρήστη:

man drbdadm
man drbdsetup
man drbdmeta
Περίληψη

Το DRBD είναι εξαιρετικά ευέλικτο και ευέλικτο, γεγονός που το καθιστά μια λύση αναπαραγωγής αποθήκευσης κατάλληλη για την προσθήκη HA σε σχεδόν οποιαδήποτε εφαρμογή. Σε αυτό το άρθρο, δείξαμε πώς να εγκαταστήσετε το DRBD στο CentOS 7 και δείξαμε εν συντομία πώς να το χρησιμοποιήσετε για την αναπαραγωγή του χώρου αποθήκευσης. Μη διστάσετε να μοιραστείτε τις σκέψεις σας μαζί μας μέσω της παρακάτω φόρμας σχολίων.