2024-07-11
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Αυτό το άρθρο θα βασιστεί στη δημιουργία μιας [ψευδώς] αυτόνομης λειτουργίας redis instance στο περιβάλλον k8s. Δεδομένου ότι η απόδοση IO του κοινόχρηστου χώρου αποθήκευσης είναι σχετικά χαμηλή, ο κοινόχρηστος χώρος αποθήκευσης χρησιμοποιείται για τη δημιουργία αντιγράφων ασφαλείας δεδομένων και τα δεδομένα redis αποθηκεύονται με τη μορφή διαδρομής κεντρικού υπολογιστή. Αυτό βοηθά στη βελτίωση της απόδοσης του IO του redis τη μορφή master-slave του redis για την υλοποίηση ενός αυτόνομου και εξαιρετικά διαθέσιμου redis.
Έκδοση K8s k8s-1.29.4, το περιβάλλον είναι χτισμένο σε μια αίθουσα υπολογιστών τηλεπικοινωνιών, με συνολικά έξι κόμβους Κάθε κόμβος έχει έναν δίσκο SSD εκτός συστήματος τοποθετημένο στη διαδρομή /data/. Υπάρχει κοινόχρηστος χώρος αποθήκευσης NAS, ο οποίος χρησιμοποιεί Alibaba Cloud NAS και χρησιμοποιείται μέσω μιας αποκλειστικής γραμμής με αποκλειστικό εύρος ζώνης γραμμής 500 Mb.
1. Ρυθμίστε το redis σε λειτουργία master-slave Η ανάγνωση και η εγγραφή δεδομένων του master redis πέφτουν στον τοπικό δίσκο SSD και τα δεδομένα του slave redis στον εξωτερικό κοινόχρηστο χώρο αποθήκευσης.
2. Στη συνέχεια, δημιουργήστε μια διαμόρφωση statefulset, τοποθετήστε δύο κοντέινερ, ένα κοντέινερ ως κύριο redis, προσαρτήστε το στο hostpath, δημιουργήστε έναν κατάλογο με το όνομα του κεντρικού υπολογιστή και αποθηκεύστε το αρχείο rdb. Ένα άλλο κοντέινερ χρησιμεύει ως υποτελές redis και η διαδρομή nas προσαρτάται για να δημιουργήσει έναν κατάλογο με το όνομα του κεντρικού υπολογιστή και να αποθηκεύσει το αρχείο rdb.
3. Προσαρμόστε την παράμετρο διατήρησης δεδομένων αποθήκευση από το redis και προσαρμόστε το χρόνο λήψης δεδομένων σε μια μικρότερη παράμετρο για να διασφαλίσετε ότι τα ενημερωμένα δεδομένα αποθηκεύονται στο αρχείο rdb το συντομότερο δυνατό.
4. Κάθε φορά που προγραμματίζεται ή επανεκκινείται το pod, αντιγράψτε το αρχείο rdb που είναι αποθηκευμένο στο nas στο hostpath και ξεκινήστε το redis.
Σημείωση: Αυτό γίνεται για να επιτρέψει στο κύριο redis να επιτύχει επεξεργασία επαγγελματικών δεδομένων υψηλής απόδοσης και το slave redis είναι υπεύθυνο για τη διατήρηση των δεδομένων , το slave redis mounts Ο χρόνος λήψης δεδομένων θα είναι μεγαλύτερος.
Η ρύθμιση παραμέτρων περιέχει τρία αρχεία: το κύριο αρχείο ρύθμισης παραμέτρων redis, το αρχείο ρύθμισης slave redis και μια απλή δέσμη ενεργειών που εκτελεί διαφορετικές λειτουργίες βάσει του ρόλου εκτέλεσης Η συγκεκριμένη ρύθμιση παραμέτρων είναι η εξής:
Το redis-master:conf είναι το κύριο αρχείο διαμόρφωσης redis Η μνήμη έχει ρυθμιστεί στα 256M, η θύρα διαμόρφωσης είναι 6379, ο κωδικός ρύθμισης παραμέτρων είναι redis#123 και η διαδρομή αποθήκευσης είναι /data/redis.
redis.conf: Από το αρχείο διαμόρφωσης redis, διαμορφώστε τη μνήμη στα 256M, διαμορφώστε τη θύρα σε 6380, διαμορφώστε τον κωδικό πρόσβασης: redis#123, η διαδρομή αποθήκευσης είναι /data/redis-2 και διαμορφώστε τα δεδομένα που θα συγχρονιστούν από το θύρα 6379 και προσαρμόστε το χρόνο αποθήκευσης σε Εάν υπάρξουν 10 αλλαγές δεδομένων μέσα σε 60 δευτερόλεπτα, θα πραγματοποιηθεί αποθήκευση.
run.sh: Η κύρια λειτουργία είναι να προσδιορίσετε το ρόλο και να δημιουργήσετε έναν κατάλογο με βάση το όνομα του κεντρικού υπολογιστή και, στη συνέχεια, να συνδεθείτε απαλά στον κατάλογο αποθήκευσης. Αυτό το βήμα είναι κυρίως η αποθήκευση των δεδομένων redis κάθε υπηρεσίας στον δικό της κατάλογο Κατά τη δημιουργία ενός νέου redis, δεν θα προκαλέσει διενέξεις καταλόγου στον κόμβο.
apiVersion: v1
kind: ConfigMap
metadata:
name: defaultapp-redis-standalone-config
namespace: default
labels:
appname: default-app
app: defaultapp-redis-standalone-config
data:
redis-master.conf: |
port 6379
maxmemory 256mb
requirepass redis#123
dir /data/redis
redis.conf: |
port 6380
maxmemory 256mb
requirepass redis#123
save 3600 1 300 5 60 10
dir /data/redis-2
replicaof 127.0.0.1 6379
masterauth redis#123
run.sh: |
#!/bin/sh
role=$1
hname=$(hostname)
if [ $role == "master" ];then
echo "run redis master"
ls /etc/redis/ -l
[ -d /home/redis/$hname ] || mkdir -p /home/redis/$hname
[ -d /data ] || mkdir /data
ln -s /home/redis/$hname /data/redis
if [ -f /home/redis-2/$hname/dump.rdb ];then
cp -vf /home/redis-2/$hname/dump.rdb /data/redis/
else
echo "[info] no bak dump.rdb"
fi
redis-server /etc/redis/redis-master.conf
else
echo "run redis slave"
ls /etc/redis/ -l
[ -d /home/redis-2/$hname ] || mkdir -p /home/redis-2/$hname
[ -d /data ] || mkdir /data
ln -s /home/redis-2/$hname /data/redis-2
redis-server /etc/redis/redis.conf
fi