Skip to content

Redis - Zweite Instanz

Redis
  • Mein Plan stand ja fest, die Redis Datenbank auf einen anderen Server zu legen um beim Updaten von NodeBB nicht mehr so ein großes Risiko einzugehen, die DB mal aus versehen mit einem alten Stand, so wie letztens, zu überschreiben

    Ich nutze zwei NodeBB-Foren, das andere Forum dient mir eigentlich nur zum Testen, da hatte ich die DB schon ausgelagert. Heute war dieses Forum hier an der Reihe.

    Es hat etwas gedauert, bis ich eine funktionierende Konfiguration für den SystemD-Dienst gefunden hatte. Da gab es so einiges im Netz, was nicht funktionierte 😞 Interessanterweise braucht man sich die Arbeit gar nicht machen, das Redis Team hat das schon erledigt. Wenn man das Paket runterlädt und entpackt, findet man im Verzeichnis utils/ Vorlagen 🙂

    Die Vorlage heißt systemd-redis_multiple_servers@.service Ich habe den Namen angepasst.

    /etc/systemd/system/forum.service

    # example systemd template service unit file for multiple redis-servers
    #
    # You can use this file as a blueprint for your actual template service unit
    # file, if you intend to run multiple independent redis-server instances in
    # parallel using systemd's "template unit files" feature. If you do, you will
    # want to choose a better basename for your service unit by renaming this file
    # when copying it.
    #
    # Please take a look at the provided "systemd-redis_server.service" example
    # service unit file, too, if you choose to use this approach at managing
    # multiple redis-server instances via systemd.
    
    [Unit]
    Description=Redis data structure server - instance %i
    Documentation=https://redis.io/documentation
    # This template unit assumes your redis-server configuration file(s)
    # to live at /etc/redis/redis_server_<INSTANCE_NAME>.conf
    AssertPathExists=/etc/redis/redis_server_6380.conf
    #Before=your_application.service another_example_application.service
    #AssertPathExists=/var/lib/redis_forum
    PIDFile=/run/redis/redis-forum.pid
    ReadWritePaths=-/var/lib/redis_forum
    
    [Service]
    ExecStart=/usr/bin/redis-server /etc/redis/redis_server_6380.conf --supervised systemd --daemonize no
    Restart=always
    LimitNOFILE=10032
    NoNewPrivileges=yes
    #OOMScoreAdjust=-900
    #PrivateTmp=yes
    Type=notify
    TimeoutStartSec=infinity
    TimeoutStopSec=infinity
    UMask=0077
    User=redis
    Group=redis
      
    [Install]
    WantedBy=multi-user.target
    

    Damit ließ sich eine zweite Redis Datenbank starten. In der entsprechenden Konfigurationsdatei von Redis stand dann folgendes.

    /redis_server_6380.conf

    bind 10.10.1.100
    port 6380
    

    Die erste Redisdatenbank läuft auf

    bind 10.10.1.100
    port 6379
    

    Denkt bitte immer daran, die Redis Datenbank möglichst nicht ins Internet zu stellen! Passwort nicht vergessen! Möglichst private Adressen nutzen oder entsprechende Tunnel!

    Damit war der Teil erledigt. Noch die Firewall einstellen und gut. Das könnt ihr hier nachlesen.

    Im NodeBB-Forum dann die entsprechende Konfiguration anpassen.

    {
        "url": "https://DOMAIN",
        "port": "4567",
        "secret": "SECRET",
        "database": "redis",
        "redis": {
            "host": "10.10.1.100",
            "port": "6380",
            "password": "Passwort",
            "database": "0"
        }
    }
    

    Das NodeBB-Forum neustarten und fertig! Yeah! 🙂

    Meine beiden Foren laufen jetzt mit externen Redis-Datenbanken und zwar unabhängig. Jedes Forum hat seine eigen Datenbank! Nun kann ich auch mal ohne Datenverlust mal einen Snapshot zurück installieren, oder auch ein etwas älteres Backup, wenn es mal wieder klemmt.

  • FrankMF FrankM hat am auf dieses Thema verwiesen
  • 0 Stimmen
    1 Beiträge
    10 Aufrufe
    Niemand hat geantwortet
  • Python & Redis-Datenbank

    Verschoben Linux python redis
    3
    0 Stimmen
    3 Beiträge
    181 Aufrufe
    FrankMF
    Heute dann die nächste Herausforderung. Mein JSON soll so aussehen, damit ich das entsprechend erweitern kann. Stocks {0: {'stockname': 'Deutsche Telekom Aktie', 'wkn1': '4534543534', 'wkn2': 'sfsdfsdfsfdfd', 'quantity': 100}, 1: {'stockname': 'Henkel', 'wkn1': '4534543534', 'wkn2': 'sfsdfsdfsfdfd', 'quantity': 50}} Die Daten sollen wie oben schon ausprobiert, in einer Redis Datenbank liegen. So weit auch kein großes Problem. ABER, der Zugriff auf diese Daten war dann meine nächste Hürde Ok, ich habe also mehrere Einträge im JSON File bzw. in der Datenbank. Wie komme ich da nun wieder dran. Ein paar später dann die Lösung. Wie komme ich an den einzelnen Eintrag, also über den Index?? r1.json().get('stocks', 1) Gibt als Ergebnis {'stockname': 'Henkel', 'wkn1': '4534543534', 'wkn2': 'sfsdfsdfsfdfd', 'quantity': 50} Ok, das passt schon mal. Somit kann man dann gewohnt auf die einzelnen Elemente zugreifen. print("TESTING", testing['stockname']) Ausgabe TESTING Henkel Ok, Teil 1 erledigt. Jetzt habe ich ja irgendwann mehrere Elemente in der Liste und brauch dann den letzten Index , um damit was machen zu können. Also, z.B. durch die Daten zu loopen. objkeys = r1.json().objkeys('stocks') print("Objkeys", objkeys) Ausgabe Objkeys ['0', '1'] Ok, kommt eine Liste des Index zurück. Damit kann man arbeiten Ich hatte dann zum Testen mittels einer while Schleife die Daten geladen, aber jetzt beim Tippen klingelt es und wir machen das schön mit enumerate @staticmethod def load(): data = {} for count, value in enumerate(objkeys): testing = r1.json().get('stocks', count) data[count] = { "stockname": testing['stockname'], "wkn1": testing['wkn1'], "wkn2": testing['wkn2'], "quantity": testing['quantity']} return data Somit habe ich die Daten aus der Redis Datenbank in einem Objekt und kann damit arbeiten.
  • Docker - Portainer

    Linux docker portainer linux
    3
    6
    0 Stimmen
    3 Beiträge
    799 Aufrufe
    FrankMF
    Dann grabe ich das mal wieder aus Bedingt durch den Wegfall meines Proxmox, musste ich mir Gedanken darüber machen, wie ein paar Dienste auch weiterhin laufen sollen. Um mal die zwei wichtigsten zu nennen. checkmk DokuWiki Diese sollen später, wenn der zweite NanoPi R5S aus China da ist, dort laufen. Da der aber mit der Schneckenpost kommt, kann man ja in der Zwischenzeit mal wieder mit Docker spielen. Ich erinnerte mich daran, das checkmk eine sehr gute Anleitung hat, so das ich das mal wieder ausprobierte. Klappte einwandfrei. Dann erinnerte mich an Portainer und dachte mir, das probiere ich mal wieder aus [image: 1659859625137-1d2dc9b3-ad71-45c5-b552-72c88a1bf773-grafik.png] Ich hatte übrigens die Endpoints gesucht und nicht gefunden, die heißen jetzt Environments. Auf dem Bild ist noch keiner eingerichtet. [image: 1659859549311-4bdbf196-1b36-4e65-94d0-0e56daa473bf-grafik.png] Irgendwie ist das wirklich richtig gute Software. Ich mag den Portainer und auch als selbst ausgebildeter ITler kommt man damit sehr schnell ganz gut zurecht. Ja, man kann die ganzen Docker Befehle auch über die Konsole eingeben, was ich normalerweise auch mit ganz vielen Dingen mache, aber das macht hier einfach Spaß. Man hat auch schnell einen guten Überblick was wo läuft usw. Wer so was sucht, einfach mal ausprobieren. Klare Empfehlung von mir.
  • Mainline 5.11.x

    Images linux rockpro64
    1
    0 Stimmen
    1 Beiträge
    275 Aufrufe
    Niemand hat geantwortet
  • Nextcloud - Desktop Integration

    Nextcloud nextcloud debian linux
    1
    3
    0 Stimmen
    1 Beiträge
    308 Aufrufe
    Niemand hat geantwortet
  • checkmk - Dockerinstallation

    Verschoben checkmk checkmk linux
    9
    2
    0 Stimmen
    9 Beiträge
    1k Aufrufe
    FrankMF
    Und noch was Wichtiges. [image: 1628408271316-6777da6e-3b4f-41b9-bf6e-26496ae67cd8-grafik.png] Damit sichert man den Datenaustausch ab. Kapitel 7.4. Inbuilt encryption Den Ordner findet man hier -> /etc/check_mk/encryption.cfg
  • Wireguard

    Verschoben Wireguard linux rockpro64 wireguard
    4
    0 Stimmen
    4 Beiträge
    945 Aufrufe
    FrankMF
    Etwas schnellerer Weg den Tunnel aufzubauen, Voraussetzung wireguard modul installiert Keys erzeugt Danach dann einfach ip link add wg0 type wireguard wg setconf wg0 /etc/wireguard/wg0.conf Datei /etc/wireguard/wg0.conf [Interface] PrivateKey = <Private Key> ListenPort = 60563 [Peer] PublicKey = <Public Key Ziel> Endpoint = <IPv4 Adresse Zielrechner>:58380 AllowedIPs = 10.10.0.1/32 Die Rechte der Dateien von wireguard müssen eingeschränkt werden. sudo chmod 0600 /etc/wireguard/wg0.conf Das ganze per rc.local beim Booten laden. Datei /root/wireguard_start.sh ############################################################################################### # Autor: Frank Mankel # Startup-Script # Wireguard # Kontakt: frank.mankel@gmail.com # ############################################################################################### ip link add wg0 type wireguard ip address add dev wg0 10.10.0.1/8 wg setconf wg0 /etc/wireguard/wg0.conf ip link set up dev wg0 Danach Datei ausführbar machen chmod +x /root/wireguard_start.sh In rc.local /root/wireguard_start.sh eintragen - Fertig!
  • NodeBB - spawn npm ENOENT

    NodeBB nodebb linux
    1
    0 Stimmen
    1 Beiträge
    440 Aufrufe
    Niemand hat geantwortet