Skip to content

Redis - Zweite Instanz

Redis
1 1 330
  • 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
    2 Beiträge
    42 Aufrufe
    cannaparts@nrw.socialC
    @FrankM Wahnsinnig strange was den #curl Leuten da in letzter Zeit widerfährt... Und fast immer sind es "klassische":"As root you can mess up something" - "bugs"... Und in Deinem Beispiel dann auch noch "use Windows over Linux" weil keine Issues - MEINE FRESSE...🤮 Der "bug" funktioniert in der WIN und MacOS version 1:1 genau so... alles eine Frage der Rechte...Ich lese mir seit 3-4 Wochen alle Einreichungen durch - echt unfassbar wie stronzdurmeldumme Leute KI missbrauchen...
  • 0 Stimmen
    1 Beiträge
    19 Aufrufe
    Niemand hat geantwortet
  • Nextcloud - Update auf 31.0.0

    Nextcloud nextcloud linux
    2
    1
    0 Stimmen
    2 Beiträge
    661 Aufrufe
    FrankMF
    Und nicht vergessen service php8.2-fpm restart Damit sieht man dann auch alle Files und Kalendereinträge LOL
  • MongoDB - Erste Erfahrungen

    Linux mongodb linux ki-generiert
    2
    2
    0 Stimmen
    2 Beiträge
    280 Aufrufe
    FrankMF
    So frisch von der MongoDB Front und wieder viel gelernt, weil beim Üben macht man Fehler Oben war ja mongodump & mongorestore von der KI empfohlen. Hier das wie ich es gemacht habe. mongodump frank@redis-stack:~$ mongodump -u frank -p '<password>' --host 192.168.3.9 --authenticationDatabase admin -d portfolio -o mongodump/ 2024-04-06T09:29:25.174+0200 writing portfolio.stockList to mongodump/portfolio/stockList.bson 2024-04-06T09:29:25.175+0200 writing portfolio.users to mongodump/portfolio/users.bson 2024-04-06T09:29:25.175+0200 done dumping portfolio.stockList (8 documents) 2024-04-06T09:29:25.176+0200 writing portfolio.total_sum to mongodump/portfolio/total_sum.bson 2024-04-06T09:29:25.177+0200 done dumping portfolio.total_sum (1 document) 2024-04-06T09:29:25.177+0200 writing portfolio.old_total_sum to mongodump/portfolio/old_total_sum.bson 2024-04-06T09:29:25.177+0200 writing portfolio.stocks to mongodump/portfolio/stocks.bson 2024-04-06T09:29:25.177+0200 done dumping portfolio.users (4 documents) 2024-04-06T09:29:25.178+0200 writing portfolio.settings to mongodump/portfolio/settings.bson 2024-04-06T09:29:25.178+0200 done dumping portfolio.settings (1 document) 2024-04-06T09:29:25.179+0200 done dumping portfolio.old_total_sum (1 document) 2024-04-06T09:29:25.179+0200 done dumping portfolio.stocks (34 documents) mongorestore mongorestore -u frank -p '<password>' --host 192.168.3.9 --authenticationDatabase admin -d portfolio mongodump/meineDatenbank/ Hier wird die Datensicherung mongodump/meineDatenbank/ in die neue Datenbank portfolio transferiert. Grund für das Ganze? Mich hatte der Datenbank Name meineDatenbank gestört. Benutzerrechte Jetzt der Teil wo man schnell was falsch machen kann Ich hatte also die neue Datenbank, konnte sie aber nicht lesen. Fehlten halt die Rechte. Ich hatte dann so was hier gemacht. db.updateUser("frank", { roles: [ { role: "readWrite", db: "meineDatenbank" }, { role: "readWrite", db: "portfolio" }]}) Ging auch prima, kam ein ok zurück. Nun das Problem, ich hatte beim Einrichten, den User frank als admin benutzt. Durch den oben abgesetzten Befehl (frank ist ja admin), wurden die neuen Rechte gesetzt und die Rechte als Admin entzogen!! Das war jetzt nicht wirklich das was ich gebrauchen konnte. LOL Ich hatte jetzt keine Kontrolle mehr über die DB. Das war aber nicht so wirklich kompliziert, das wieder zu ändern. Die Authentication temporär abstellen. Also /etc/mongod.conf editieren und #security: security.authorization: enabled eben mal auskommentieren. Den Daemon neustarten und anmelden an der DB. mongosh --host 192.168.3.9 Danach neuen User anlegen db.createUser({ user: "<name>", pwd: "<password>", roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] }) mongod.conf wieder ändern und neustarten. Danach hat man wieder eine DB mit Authentifizierung und einen neuen Admin. Ich bin diesmal, man lernt ja, anders vorgegangen. Es gibt nun einen Admin für die DB und einen User zum Benutzen der Datenbanken! So wie man es auch auf einem produktiven System auch machen würde. Wenn ich jetzt mal was an den Benutzerrechten des Users ändere, kann mir das mit dem Admin nicht mehr passieren. Hoffe ich
  • Python & Redis-Datenbank

    Verschoben Linux python redis
    3
    0 Stimmen
    3 Beiträge
    224 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.
  • Redis Replication über Wireguard

    Redis redis wireguard
    5
    0 Stimmen
    5 Beiträge
    593 Aufrufe
    K
    spart bischen zeit
  • Kernel-Log 4.20

    Linux linux
    1
    0 Stimmen
    1 Beiträge
    354 Aufrufe
    Niemand hat geantwortet
  • Bananian 16.04 auf einer HDD installieren incl. WLan

    BananaPi bananapi linux
    1
    4
    0 Stimmen
    1 Beiträge
    852 Aufrufe
    Niemand hat geantwortet