Skip to content

Redis Stack?

Redis
  • Für meine Flask & Python Projekt nutze ich schon lange Redis. Redis ist ein "in-memory data store" Normalerweise läuft dafür ein Docker Container auf meinem Haupt-PC, den ich mal vor langer Zeit aufgesetzt hatte. So weit lief auch alles gut.

    Bedingt durch den Versuch, die Flask Anwendung auf meinem 2. PC zu installieren, ergaben sich einige neue Erkenntnisse. Ich hatte dann erst auf dem 2. PC ebenfalls mit einem Docker Container rum gespielt, dabei hatte ich aber das Problem das meine Datenbank nicht akzeptiert wurde.

    Ich habe lange gebraucht um zu kapieren, das Redis ungleich Redis Stack ist. Und damals, wo ich den Docker Container aufgesetzt hatte, hatte ich Redis Stack installiert.

    Redis Stack Server lets you build applications with searchable JSON and time series data models, and extended probabilistic data structures.
    Quelle: https://redis.io/

    Ich habe gerade nochmal in der DB nachgesehen, ich nutze keine dieser zusätzlichen Funktionen. Also müsste ich die Daten alle mühsam extrahieren und in einer einfachen Redis DB wieder installieren.

    Ok, es war also klar das ich einen Redis Stack Server an zentraler Stelle in meinem Netzwerk bräuchte, damit ich von jedem PC aus darauf zugreifen könnte. Als Ort fällt mir da natürlich mein Proxmox ein.

    Bei ersten Versuchen der Installation von Redis Stack schnell drüber gestolpert, das es das aktuell nur für Debian 11 gibt. Ja, die Docker Generation 🙂 Da ich das aber nicht als Docker laufen lassen wollte, musste ich wohl oder übel ein Debian 11 aufsetzen.

    Es gibt auch noch zwei Versionen von Redis Stack

    • Redis Stack Server
    • Redis Stack

    Redis Stack enthält auch noch die Desktop Application RedisInsight, das ist eine Redis GUI. Damit kann man sich die DB ansehen und auch bearbeiten. Das läuft lokal auf meinem Haupt-PC, brauche ich also nicht auf einem Server. Der Server hat ja auch keine GUI. Also war klar, ich brauchte einen Redis Stack Server.

    Zur Installation von Redis Stack Server, findet man das hier auf redis.io

    Kurze Zeit später lief die Debian 11 VM mit Redis Stack Server.

    frank@redis-stack:~$ pstree
    systemd─┬─agetty
            ├─cron
            ├─dbus-daemon
            ├─dhclient───3*[{dhclient}]
            ├─qemu-ga───{qemu-ga}
            ├─redis-server───8*[{redis-server}]
            ├─rsyslogd───3*[{rsyslogd}]
            ├─sshd───sshd───sshd───bash───pstree
            ├─systemd───(sd-pam)
            ├─systemd-journal
            ├─systemd-logind
            ├─systemd-timesyn───{systemd-timesyn}
            └─systemd-udevd
    

    Interessant bei Redis ist immer, wo liegt die Konfigurations Datei und wo die Datenbank? Dazu sollte man sich als erstes immer mal den SystemD Dienst ansschauen.

    redis-stack-server.service

    [Unit]
    Description=Redis stack server
    Documentation=https://redis.io/
    After=network.target
    
    [Service]
    Type=simple
    User=redis
    ExecStart=/opt/redis-stack/bin/redis-server /etc/redis-stack.conf
    WorkingDirectory=/var/lib/redis-stack
    UMask=0077
    
    [Install]
    WantedBy=multi-user.target
    

    Das erste was ich gemacht habe, sen User geändert. Stand auf nobody(?) oder so. Ich habe erst mal einen User dafür angelegt.

    useradd -M -s /usr/sbin/nologin redis
    

    Die Konfiguration findet man unter

    /etc/redis-stack.conf
    

    So sieht meine aus

    port 6379
    daemonize no
    requirepass <PASSWORD>
    save 60 1
    #save 900 1
    save 300 10
    save 60 10000
    stop-writes-on-bgsave-error yes
    rdbcompression yes
    rdbchecksum yes
    dbfilename dump.rdb
    dir /var/lib/redis-stack
    loadmodule /opt/redis-stack/lib/rediscompat.so
    loadmodule /opt/redis-stack/lib/redisearch.so
    loadmodule /opt/redis-stack/lib/redistimeseries.so
    loadmodule /opt/redis-stack/lib/rejson.so
    loadmodule /opt/redis-stack/lib/redisbloom.so
    loadmodule /opt/redis-stack/lib/redisgears.so v8-plugin-path /opt/redis-stack/lib/libredisgears_v8_plugin.so
    

    Mit diesen beiden Zeilen

    dbfilename dump.rdb
    dir /var/lib/redis-stack
    

    legt man fest, wo die Datenbank liegt. Unter /var/lib/redis-stack/ findet man dann die Datenbank dump.rdb. Bitte darauf achten, das die Dateiberechtigungen alle passen.

     chown -R redis:redis /var/lib/redis-stack/
    

    Nach einem Neustart, sollte die Redis Datenbank nun mit meiner Datenbank laufen.

    systemctl restart redis-stack-server.service
    

    Wie testet man die Verbindung?

    Einmal kann man das lokal machen. Mit dem Tool redis-cli

    root@redis-stack:/var/lib/redis-stack# redis-cli
    127.0.0.1:6379> 
    

    Wenn man jetzt die Datenbank auswählen möchte, kommt das

    127.0.0.1:6379> SELECT 0
    (error) NOAUTH Authentication required.
    

    Ok, die Datenbank ist mittels Passwort geschützt. Mit AUTH kann man sich authentifizieren.

    127.0.0.1:6379> AUTH <PASSWORD>
    OK
    

    Danach kann man dann die Datenbank wählen und schauen ob was drin ist.

    127.0.0.1:6379> SELECT 0
    OK
    127.0.0.1:6379> KEYS *
    1) "settings"
    127.0.0.1:6379> 
    

    Das kann man auch von extern machen, da aktuell die Redis Datenbank auf alle Netzwerkverbindungen lauscht. Wenn man das nicht möchte, kann man das auch entsprechend einstellen. Hier nicht erläutert.

    Von extern, muss man dann den Host angeben.

    frank@debian:~$ redis-cli -h 192.168.3.9
    192.168.3.9:6379> 
    

    Rest, siehe oben. Danach weiß man ob alles so weit funktioniert. Und zum Schluss noch ein Screenshot vom RedisInsight Tool.

    Screenshot_20240319_143044.png

  • FrankMF FrankM hat am auf dieses Thema verwiesen

  • Proxmox 8.2 released

    Proxmox
    1
    0 Stimmen
    1 Beiträge
    164 Aufrufe
    Niemand hat geantwortet
  • Restic v0.16.0 released

    Restic
    1
    0 Stimmen
    1 Beiträge
    109 Aufrufe
    Niemand hat geantwortet
  • NiceGUI

    Linux
    2
    0 Stimmen
    2 Beiträge
    330 Aufrufe
    FrankMF

    Ich habe mir das jetzt einige Tage gegeben und habe mich dagegen entschieden. Werde weiterhin PyWebIO benutzen. Hauptgrund ist die wesentlich bessere Dokumentation -> https://pywebio.readthedocs.io/en/latest/index.html

    Da kann ich mir auch mit meinem Python Kenntnisstand die Informationen holen, die ich brauche um es einzusetzen.

  • NodeBB - Update auf v1.18.6

    NodeBB
    1
    0 Stimmen
    1 Beiträge
    137 Aufrufe
    Niemand hat geantwortet
  • ZFS - One Disk Pool -> Mirror Pool

    Linux
    1
    0 Stimmen
    1 Beiträge
    166 Aufrufe
    Niemand hat geantwortet
  • NanoPi R4S - Armbian

    NanoPi R4S
    2
    0 Stimmen
    2 Beiträge
    356 Aufrufe
    FrankMF

    Müsste seit gestern so weit sein 🙂

    b20f93d2-1719-40c5-afb8-6b4edafa6793-image.png

  • Restic - forget --keep-last 3 --prune

    Restic
    2
    0 Stimmen
    2 Beiträge
    608 Aufrufe
    FrankMF

    Ich habe mich damit noch ein wenig beschäftigt, die letzten drei zu behalten, ist nicht so optimal. Da es viele Optionen bei dem Befehl gibt, hier ein Ausschnitt

    Flags: -l, --keep-last n keep the last n snapshots -H, --keep-hourly n keep the last n hourly snapshots -d, --keep-daily n keep the last n daily snapshots -w, --keep-weekly n keep the last n weekly snapshots -m, --keep-monthly n keep the last n monthly snapshots -y, --keep-yearly n keep the last n yearly snapshots

    habe ich das ein wenig so angepasst, das ich denke es passt für mich.

    restic --password-file /root/passwd -r /media/NAS_neu/Restic/Home/ forget --keep-last 3 --keep-monthly 3 --prune

    Damit behalte ich auch die jeweils eines pro Monat. Und die letzten drei. Das sieht dann so aus.

    root@debian:~# ./backup2.sh repository 2f3f6147 opened successfully, password is correct Files: 38 new, 100 changed, 13268 unmodified Dirs: 0 new, 1 changed, 0 unmodified Added to the repo: 10.166 GiB processed 13406 files, 50.324 GiB in 3:24 snapshot 849f614c saved repository 2f3f6147 opened successfully, password is correct Applying Policy: keep the last 3 snapshots, 3 monthly snapshots snapshots for (host [debian], paths [/home/frank]): keep 5 snapshots: ID Time Host Tags Reasons Paths ------------------------------------------------------------------------------------ a7251cfd 2019-11-28 17:00:01 debian monthly snapshot /home/frank 283d4027 2019-12-31 17:00:01 debian monthly snapshot /home/frank ae2b96ec 2020-01-01 21:47:46 debian last snapshot /home/frank 079e00a6 2020-01-02 17:00:01 debian last snapshot /home/frank 849f614c 2020-01-03 21:08:45 debian last snapshot /home/frank monthly snapshot ------------------------------------------------------------------------------------ 5 snapshots remove 26 snapshots: ID Time Host Tags Paths ------------------------------------------------------------------ 896f16c2 2019-11-07 22:23:40 debian /home/frank b21bcf6d 2019-11-11 17:00:01 debian /home/frank f89248fb 2019-11-12 17:00:01 debian /home/frank 123ab546 2019-11-13 17:00:01 debian /home/frank b82d87d0 2019-11-18 17:00:01 debian /home/frank 040b0ab7 2019-11-19 17:00:01 debian /home/frank 7221d8ef 2019-11-20 17:00:01 debian /home/frank 84132a25 2019-11-21 17:00:01 debian /home/frank b558a52c 2019-11-25 17:00:01 debian /home/frank e5cc0c3e 2019-12-02 17:00:01 debian /home/frank 22423fa5 2019-12-03 17:00:01 debian /home/frank 39df1ab9 2019-12-04 17:00:01 debian /home/frank 98843457 2019-12-05 17:00:01 debian /home/frank b0cdd4b6 2019-12-09 17:00:01 debian /home/frank 828414f9 2019-12-10 17:00:01 debian /home/frank e34a27c3 2019-12-11 17:00:01 debian /home/frank 6e488c3b 2019-12-12 17:00:01 debian /home/frank 17898403 2019-12-16 17:00:01 debian /home/frank 1973305a 2019-12-17 17:00:01 debian /home/frank 9553bedd 2019-12-18 17:00:01 debian /home/frank fedf749d 2019-12-19 17:00:01 debian /home/frank 8e7cb876 2019-12-23 17:00:01 debian /home/frank 0bd0d102 2019-12-25 17:00:01 debian /home/frank 13d348b0 2019-12-26 17:00:01 debian /home/frank c7d960aa 2019-12-30 17:00:01 debian /home/frank f6ea9118 2020-01-01 17:00:01 debian /home/frank ------------------------------------------------------------------ 26 snapshots 26 snapshots have been removed, running prune counting files in repo building new index for repo [0:35] 100.00% 7806 / 7806 packs repository contains 7806 packs (46537 blobs) with 41.110 GiB processed 46537 blobs: 0 duplicate blobs, 0 B duplicate load all snapshots find data that is still in use for 5 snapshots [0:01] 100.00% 5 / 5 snapshots found 32654 of 46537 data blobs still in use, removing 13883 blobs will remove 0 invalid files will delete 715 packs and rewrite 752 packs, this frees 5.027 GiB [2:28] 100.00% 752 / 752 packs rewritten counting files in repo [0:01] 100.00% 6571 / 6571 packs finding old index files saved new indexes as [d137b425 f7caee99 a6e9711a] remove 35 old index files [1:13] 100.00% 1467 / 1467 packs deleted done using temporary cache in /tmp/restic-check-cache-916655151 repository 2f3f6147 opened successfully, password is correct created new cache in /tmp/restic-check-cache-916655151 create exclusive lock for repository load indexes check all packs check snapshots, trees and blobs read all data [7:47] 100.00% 6571 / 6571 items duration: 7:47 no errors were found root@debian:~#

    Am Ende seht ihr noch, wie Restic alle Files testet. Mein Script sieht jetzt so aus.

    #!/bin/bash # Script um mit Restic Daten automatisiert zu sichern! # Dient zum Sichern der Homepartition auf dem ROCKPro64 NAS! # Was soll gesichert werden? backup_pfad=/home/frank # Programm Start restic --password-file /root/passwd -r /media/NAS_neu/Restic/Home/ backup $backup_pfad --exclude-file=excludes.txt restic --password-file /root/passwd -r /media/NAS_neu/Restic/Home/ forget --keep-last 3 --keep-monthly 3 --prune # Testen restic --password-file /root/passwd -r /media/NAS_neu/Restic/Home/ check --read-data

    Das dann schön mit einem Cronjob laufen lassen und die Datensicherung ist erledigt 😉

  • mdadm

    Verschoben Linux
    5
    0 Stimmen
    5 Beiträge
    395 Aufrufe
    FrankMF

    Nachdem ich die SATA-Karte gewechselt habe, sind meine Probleme verschwunden. Mein NAS läuft seit Monaten einwandfrei.

    rock64@rp64v_2_1_NAS:~$ uptime 21:57:50 up 73 days, 4:44, 1 user, load average: 0,00, 0,00, 0,00

    https://forum.frank-mankel.org/topic/299/sata-karte-marvell-88se9230-chipsatz/16