Κοινή χρήση τεχνολογίας

[k8s install redis] k8s εγκατάσταση αυτόνομη έκδοση του redis για επίτευξη υψηλής απόδοσης και υψηλής διαθεσιμότητας

2024-07-11

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Εισαγωγή

Αυτό το άρθρο θα βασιστεί στη δημιουργία μιας [ψευδώς] αυτόνομης λειτουργίας redis instance στο περιβάλλον k8s. Δεδομένου ότι η απόδοση IO του κοινόχρηστου χώρου αποθήκευσης είναι σχετικά χαμηλή, ο κοινόχρηστος χώρος αποθήκευσης χρησιμοποιείται για τη δημιουργία αντιγράφων ασφαλείας δεδομένων και τα δεδομένα redis αποθηκεύονται με τη μορφή διαδρομής κεντρικού υπολογιστή. Αυτό βοηθά στη βελτίωση της απόδοσης του IO του redis τη μορφή master-slave του redis για την υλοποίηση ενός αυτόνομου και εξαιρετικά διαθέσιμου redis.

1. Συνθήκες και περιγραφή περιβάλλοντος:

Έκδοση K8s k8s-1.29.4, το περιβάλλον είναι χτισμένο σε μια αίθουσα υπολογιστών τηλεπικοινωνιών, με συνολικά έξι κόμβους Κάθε κόμβος έχει έναν δίσκο SSD εκτός συστήματος τοποθετημένο στη διαδρομή /data/. Υπάρχει κοινόχρηστος χώρος αποθήκευσης NAS, ο οποίος χρησιμοποιεί Alibaba Cloud NAS και χρησιμοποιείται μέσω μιας αποκλειστικής γραμμής με αποκλειστικό εύρος ζώνης γραμμής 500 Mb.

2. Περιγραφή απαιτήσεων:

  • Δημιουργήστε ένα παράδειγμα redis: αυτόνομο ή master-slave.
  • Υψηλή διαθεσιμότητα: Ακόμα κι αν ένας κόμβος k8s πεθάνει, η χρήση δεν θα επηρεαστεί για μεγάλο χρονικό διάστημα.
  • Υψηλή απόδοση: Απαιτείται υψηλός χώρος αποθήκευσης ή χρησιμοποιείται κατανεμημένος χώρος αποθήκευσης ceph και η ανάγνωση και η εγγραφή iO θα έχουν μεγάλη έκπτωση.
  • Ασφάλεια δεδομένων: Μετά την αλλαγή, τα δεδομένα πρέπει να είναι όσο το δυνατόν πληρέστερα
  • Απλή εγκατάσταση, εύκολη διαχείριση και συντήρηση

3. Αρχές και οδηγίες εφαρμογής

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 Ο χρόνος λήψης δεδομένων θα είναι μεγαλύτερος.

4. Αναλυτικά βήματα

4.1 Δημιουργία αρχείου διαμόρφωσης configmap

Η ρύθμιση παραμέτρων περιέχει τρία αρχεία: το κύριο αρχείο ρύθμισης παραμέτρων 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