Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. (gelöst) Problem mit Redis Sentinel

    NEWS

    • ioBroker goes Matter ... Matter Adapter in Stable

    • 15. 05. Wartungsarbeiten am ioBroker Forum

    • Monatsrückblick - April 2025

    (gelöst) Problem mit Redis Sentinel

    This topic has been deleted. Only users with topic management privileges can see it.
    • arteck
      arteck Developer Most Active @amg_666 last edited by arteck

      @amg_666 sagte in Problem mit Redis Sentinel:

      Ich habe einen Proxmox Cluster und da zurzeit 4 NUCs.

      du brauchst aber eine ungerade Anzahl

      ansonsten poste mal die redis.conf und die sentinel.conf

      es müssen auch +1 sentinel sein als slave.. also hast du 4 slave sollten es 5 sentinels sein

      amg_666 1 Reply Last reply Reply Quote 0
      • amg_666
        amg_666 @arteck last edited by amg_666

        @arteck sagte in Problem mit Redis Sentinel:

        du brauchst aber eine ungerade Anzahl

        mir ist klar, dass bei proxmox HA eine ungrade (eigentlich eine Primzahl) an nodes brauche, damit ein Quorum einen Master bestimmen kann.
        Den 4. Node hatte ich zum Testen mit eingehängt, den hab ich jetzt mal deaktiviert.

        Ich habe für redis getrennte Prozesse für Objects und states.
        MASTER
        redis states

        bind 0.0.0.0
        protected-mode no
        port 6379
        tcp-backlog 511
        timeout 0
        tcp-keepalive 300
        daemonize no
        pidfile "/run/redis/redis-server.pid"
        loglevel notice
        logfile "/var/log/redis/redis-server.log"
        databases 16
        always-show-logo no
        set-proc-title yes
        proc-title-template "{title} {listen-addr} {server-mode}"
        stop-writes-on-bgsave-error yes
        rdbcompression yes
        rdbchecksum yes
        dbfilename "dump.rdb"
        rdb-del-sync-files no
        dir "/var/lib/redis"
        replica-serve-stale-data yes
        replica-read-only yes
        repl-diskless-sync yes
        repl-diskless-sync-delay 5
        repl-diskless-sync-max-replicas 0
        repl-diskless-load disabled
        repl-disable-tcp-nodelay no
        replica-priority 100
        

        redis objects

        bind 0.0.0.0
        protected-mode no
        port 6380
        tcp-backlog 511
        timeout 0
        tcp-keepalive 300
        daemonize yes
        pidfile /run/redis/redis-server2.pid
        loglevel notice
        logfile /var/log/redis/redis-server2.log
        databases 16
        always-show-logo no
        set-proc-title yes
        proc-title-template "{title} {listen-addr} {server-mode}"
        stop-writes-on-bgsave-error yes
        rdbcompression yes
        rdbchecksum yes
        dbfilename dump.rdb
        rdb-del-sync-files no
        dir /var/lib/redis2
        replica-serve-stale-data yes
        replica-read-only yes
        repl-diskless-sync yes
        repl-diskless-sync-delay 5
        repl-diskless-sync-max-replicas 0
        repl-diskless-load disabled
        repl-disable-tcp-nodelay no
        replica-priority 100bind 0.0.0.0
        protected-mode no
        port 6380
        tcp-backlog 511
        timeout 0
        tcp-keepalive 300
        daemonize yes
        pidfile /run/redis/redis-server2.pid
        loglevel notice
        logfile /var/log/redis/redis-server2.log
        databases 16
        always-show-logo no
        set-proc-title yes
        proc-title-template "{title} {listen-addr} {server-mode}"
        stop-writes-on-bgsave-error yes
        rdbcompression yes
        rdbchecksum yes
        dbfilename dump.rdb
        rdb-del-sync-files no
        dir /var/lib/redis2
        replica-serve-stale-data yes
        replica-read-only yes
        repl-diskless-sync yes
        repl-diskless-sync-delay 5
        repl-diskless-sync-max-replicas 0
        repl-diskless-load disabled
        repl-disable-tcp-nodelay no
        replica-priority 100bind 0.0.0.0
        protected-mode no
        port 6380
        tcp-backlog 511
        timeout 0
        tcp-keepalive 300
        daemonize yes
        pidfile /run/redis/redis-server2.pid
        loglevel notice
        logfile /var/log/redis/redis-server2.log
        databases 16
        always-show-logo no
        set-proc-title yes
        proc-title-template "{title} {listen-addr} {server-mode}"
        stop-writes-on-bgsave-error yes
        rdbcompression yes
        rdbchecksum yes
        dbfilename dump.rdb
        rdb-del-sync-files no
        dir /var/lib/redis2
        replica-serve-stale-data yes
        replica-read-only yes
        repl-diskless-sync yes
        repl-diskless-sync-delay 5
        repl-diskless-sync-max-replicas 0
        repl-diskless-load disabled
        repl-disable-tcp-nodelay no
        replica-priority 100bind 0.0.0.0
        protected-mode no
        port 6380
        tcp-backlog 511
        timeout 0
        tcp-keepalive 300
        daemonize yes
        pidfile /run/redis/redis-server2.pid
        loglevel notice
        logfile /var/log/redis/redis-server2.log
        databases 16
        always-show-logo no
        set-proc-title yes
        proc-title-template "{title} {listen-addr} {server-mode}"
        stop-writes-on-bgsave-error yes
        rdbcompression yes
        rdbchecksum yes
        dbfilename dump.rdb
        rdb-del-sync-files no
        dir /var/lib/redis2
        replica-serve-stale-data yes
        replica-read-only yes
        repl-diskless-sync yes
        repl-diskless-sync-delay 5
        repl-diskless-sync-max-replicas 0
        repl-diskless-load disabled
        repl-disable-tcp-nodelay no
        replica-priority 100
        

        sentinel

        bind 0.0.0.0
        port 26379
        daemonize no
        pidfile "/var/run/sentinel/redis-sentinel.pid"
        logfile "/var/log/redis/redis-sentinel.log"
        dir "/var/lib/redis"
        protected-mode no
        
        sentinel myid ad045114c4d58ddb8fa909a991ccb6f0a760ea2e
        
        sentinel deny-scripts-reconfig yes
        sentinel monitor states-master 192.168.1.60 6380 2
        sentinel failover-timeout states-master 20000
        sentinel config-epoch states-master 8394
        sentinel leader-epoch states-master 8394
        sentinel monitor objects-master 192.168.1.60 6379 2
        sentinel failover-timeout objects-master 20000
        sentinel config-epoch objects-master 0
        sentinel leader-epoch objects-master 8451
        

        SLAVE1
        redis states

        bind 0.0.0.0
        protected-mode no
        port 6379
        tcp-backlog 511
        timeout 0
        tcp-keepalive 300
        daemonize no
        pidfile "/run/redis/redis-server.pid"
        loglevel notice
        logfile "/var/log/redis/redis-server.log"
        databases 16
        always-show-logo no
        set-proc-title yes
        proc-title-template "{title} {listen-addr} {server-mode}"
        stop-writes-on-bgsave-error yes
        rdbcompression yes
        rdbchecksum yes
        dbfilename "dump.rdb"
        rdb-del-sync-files no
        dir "/var/lib/redis"
        replicaof 192.168.1.60 6379
        replica-serve-stale-data yes
        replica-read-only yes
        repl-diskless-sync yes
        repl-diskless-sync-delay 5
        repl-diskless-sync-max-replicas 0
        repl-diskless-load disabled
        repl-disable-tcp-nodelay no
        replica-priority 100
        

        redis objects

        bind 0.0.0.0
        protected-mode no
        port 6380
        tcp-backlog 511
        timeout 0
        tcp-keepalive 300
        daemonize no
        pidfile "/run/redis/redis-server2.pid"
        loglevel notice
        logfile "/var/log/redis/redis-server2.log"
        databases 16
        always-show-logo no
        set-proc-title yes
        proc-title-template "{title} {listen-addr} {server-mode}"
        stop-writes-on-bgsave-error yes
        rdbcompression yes
        rdbchecksum yes
        dbfilename "dump.rdb"
        rdb-del-sync-files no
        dir /var/lib/redis2
        replicaof 192.168.1.60 6380
        replica-serve-stale-data yes
        replica-read-only yes
        repl-diskless-sync yes
        repl-diskless-sync-delay 5
        repl-diskless-sync-max-replicas 0
        repl-diskless-load disabled
        repl-disable-tcp-nodelay no
        replica-priority 100
        

        sentinel

        bind 0.0.0.0
        port 26379
        daemonize no
        pidfile "/var/run/sentinel/redis-sentinel.pid"
        logfile "/var/log/redis/redis-sentinel.log"
        dir "/var/lib/redis"
        protected-mode no
        
        sentinel myid 44fb53a16845f7cb919950f55f84a2b968ef2248
        
        sentinel deny-scripts-reconfig yes
        sentinel monitor states-master 192.168.1.60 6380 2
        sentinel failover-timeout states-master 20000
        sentinel config-epoch states-master 8394
        sentinel leader-epoch states-master 8394
        sentinel monitor objects-master 192.168.1.60 6379 2
        sentinel failover-timeout objects-master 20000
        sentinel config-epoch objects-master 0
        sentinel leader-epoch objects-master 8451
        
        1 Reply Last reply Reply Quote 0
        • arteck
          arteck Developer Most Active last edited by arteck

          die redis läuft nicht rund

          also nach und nach

          am Master sieht die redis konfig gut aus (ich pick mir die states raus, die objects müssen auch so) aber da fehlen Einträge, hast du die standrad config übernommen ??

          am Slave auch ..also

          systemsctl stop redis-server
          systemsctl stop redis-sentinel
          

          dann auf beiden Maschienen...
          dann die dump datei (sollte hier sein /var/lib/redis) auf dem slave löschen

          dann Master

          systemsctl start redis-server
          

          danach auf dem slave

          systemsctl start redis-server
          

          jetzt sollte die dump Datei vom master genauso gross sein wie die auf dem Slave

          wenn nicht Log posten vom Master und Salve /var/log/redis/redis-server.log
          erst wenn das sauber läuft können wir weiter machen

          amg_666 1 Reply Last reply Reply Quote 0
          • amg_666
            amg_666 @arteck last edited by

            @arteck

            ich habe auf allen Maschienen Redis/Redis-Sentinel gestoppt und dann die dumps gelöscht.
            nach neuem Start von redis und redis-sentinel habe ich unterschiedlich große Dumps auf den Maschinen
            Master

            ls -i /var/lib/redis/
            80995 dump.rdb  65907 temp-297.rdb
            

            Slave1

            ls -i /var/lib/redis/
            81228 dump.rdb
            

            Slave2

            ls -i /var/lib/redis/
            50644 dump.rdb
            

            redis.conf master

            bind 0.0.0.0
            protected-mode no
            port 6379
            tcp-backlog 511
            timeout 0
            tcp-keepalive 300
            daemonize no
            pidfile "/run/redis/redis-server.pid"
            loglevel notice
            2Blogfile "/var/log/redis/redis-server.log"
            databases 16
            always-show-logo no
            set-proc-title yes
            proc-title-template "{title} {listen-addr} {server-mode}"
            stop-writes-on-bgsave-error yes
            rdbcompression yes
            rdbchecksum yes
            dbfilename "dump.rdb"
            rdb-del-sync-files no
            dir "/var/lib/redis"
            replica-serve-stale-data yes
            replica-read-only yes
            repl-diskless-sync yes
            repl-diskless-sync-delay 5
            repl-diskless-sync-max-replicas 0
            repl-diskless-load disabled
            repl-disable-tcp-nodelay no
            replica-priority 100
            acllog-max-len 128
            lazyfree-lazy-eviction no
            lazyfree-lazy-expire no
            lazyfree-lazy-server-del no
            replica-lazy-flush no
            lazyfree-lazy-user-del no
            lazyfree-lazy-user-flush no
            oom-score-adj no
            oom-score-adj-values 0 200 800
            disable-thp yes
            appendonly no
            appendfilename "appendonly.aof"
            appenddirname "appendonlydir"
            appendfsync everysec
            no-appendfsync-on-rewrite no
            auto-aof-rewrite-percentage 100
            auto-aof-rewrite-min-size 64mb
            aof-load-truncated yes
            aof-use-rdb-preamble yes
            aof-timestamp-enabled no
            
            slowlog-log-slower-than 10000
            slowlog-max-len 128
            latency-monitor-threshold 0
            notify-keyspace-events ""
            hash-max-listpack-entries 512
            hash-max-listpack-value 64
            list-max-listpack-size -2
            list-compress-depth 0
            set-max-intset-entries 512
            zset-max-listpack-entries 128
            zset-max-listpack-value 64
            hll-sparse-max-bytes 3000
            stream-node-max-bytes 4kb
            stream-node-max-entries 100
            activerehashing yes
            client-output-buffer-limit normal 0 0 0
            client-output-buffer-limit replica 256mb 64mb 60
            client-output-buffer-limit pubsub 32mb 8mb 60
            hz 10
            dynamic-hz yes
            aof-rewrite-incremental-fsync yes
            rdb-save-incremental-fsync yes
            jemalloc-bg-thread yes
            

            redis conf slave

            bind 0.0.0.0
            protected-mode no
            port 6379
            tcp-backlog 511
            timeout 0
            tcp-keepalive 300
            daemonize no
            pidfile "/run/redis/redis-server.pid"
            loglevel notice
            logfile "/var/log/redis/redis-server.log"
            databases 16
            always-show-logo no
            set-proc-title yes
            proc-title-template "{title} {listen-addr} {server-mode}"
            stop-writes-on-bgsave-error yes
            rdbcompression yes
            rdbchecksum yes
            dbfilename "dump.rdb"
            rdb-del-sync-files no
            dir "/var/lib/redis"
            replicaof 192.168.1.60 6379
            replica-serve-stale-data yes
            replica-read-only yes
            repl-diskless-sync yes
            repl-diskless-sync-delay 5
            repl-diskless-sync-max-replicas 0
            repl-diskless-load disabled
            repl-disable-tcp-nodelay no
            replica-priority 100
            acllog-max-len 128
            lazyfree-lazy-eviction no
            lazyfree-lazy-expire no
            lazyfree-lazy-server-del no
            replica-lazy-flush no
            lazyfree-lazy-user-del no
            lazyfree-lazy-user-flush no
            oom-score-adj no
            oom-score-adj-values 0 200 800
            disable-thp yes
            appendonly no
            appendfilename "appendonly.aof"
            appenddirname "appendonlydir"
            appendfsync everysec
            no-appendfsync-on-rewrite no
            auto-aof-rewrite-percentage 100
            auto-aof-rewrite-min-size 64mb
            aof-load-truncated yes
            aof-use-rdb-preamble yes
            aof-timestamp-enabled no
            
            slowlog-log-slower-than 10000
            slowlog-max-len 128
            latency-monitor-threshold 0
            notify-keyspace-events ""
            hash-max-listpack-entries 512
            hash-max-listpack-value 64
            list-max-listpack-size -2
            list-compress-depth 0
            set-max-intset-entries 512
            zset-max-listpack-entries 128
            zset-max-listpack-value 64
            hll-sparse-max-bytes 3000
            stream-node-max-bytes 4kb
            stream-node-max-entries 100
            activerehashing yes
            client-output-buffer-limit normal 0 0 0
            client-output-buffer-limit replica 256mb 64mb 60
            client-output-buffer-limit pubsub 32mb 8mb 60
            hz 10
            dynamic-hz yes
            aof-rewrite-incremental-fsync yes
            rdb-save-incremental-fsync yes
            jemalloc-bg-thread yes
            
            # Generated by CONFIG REWRITE
            save 3600 1
            save 300 100
            save 60 10000
            supervised systemd
            latency-tracking-info-percentiles 50 99 99.9
            user default on nopass sanitize-payload ~* &* +@all
            
            1 Reply Last reply Reply Quote 0
            • arteck
              arteck Developer Most Active last edited by arteck

              @amg_666 sagte in Problem mit Redis Sentinel:

              nach neuem Start von redis und redis-sentinel habe ich unterschiedlich große Dumps auf den Maschinen

              den sentinel erstmal aus lassen.. das bringt nix wenn redis nicht syncron ist

              ist das die ip von master 192.168.1.60

              ausserdem ... nimm bitte die standard konfig ..pimpen kannst du später immer noch..

              da änderst du NUR

              bind 0.0.0.0
              

              af beiden maschienen

              und auf dem slave ganz unten hinzufügen

              replicaof 192.168.1.60 6379
              
              amg_666 2 Replies Last reply Reply Quote 0
              • amg_666
                amg_666 @arteck last edited by

                @arteck ja, master hat .60, die slaves dann .61 und .62

                Erstmal vielen Dank für deine Unterstützung soweit, aber ich baue das grad auf weil ich iob auf redis umstellen will. Wenn da jetzt im Redis irgendwas "grundsätzlich" verkorkst ist, soll ich da nicht lieber die Container (ist eine proxmox installation) plattmachen und nochmal sauber bei Null aufsetzen ?

                1 Reply Last reply Reply Quote 0
                • amg_666
                  amg_666 @arteck last edited by amg_666

                  @arteck sagte in Problem mit Redis Sentinel:

                  ausserdem ... nimm bitte die standard konfig ..

                  Ich hab da aber nix (wissentlich) verstellt/"optimiert".
                  was ist die Standard konfig ? Die müsste doch bei der Installation von rdis automatisch greifen, oder?

                  1 Reply Last reply Reply Quote 0
                  • arteck
                    arteck Developer Most Active last edited by arteck

                    wenn du kannst dann installier die redis neu bitte..

                    dann wie schon geschrieben

                    auf dem master die

                    bind 0.0.0.0
                    

                    ändern

                    und auf dem slave

                    bind 0.0.0.0
                    

                    und

                    replicaof 192.168.1.60 6379
                    

                    als letzte zeile hinzufügen

                    amg_666 1 Reply Last reply Reply Quote 0
                    • amg_666
                      amg_666 @arteck last edited by

                      @arteck ok, danke. Ich setze neu auf und melde mich dann nochmal, das wird aber erst am Wochenende passieren.

                      arteck 1 Reply Last reply Reply Quote 0
                      • arteck
                        arteck Developer Most Active @amg_666 last edited by

                        @amg_666 kein stress..

                        amg_666 1 Reply Last reply Reply Quote 0
                        • amg_666
                          amg_666 @arteck last edited by

                          @arteck Kannst du mir nochmal helfen? Ich hab jetzt doch schon heute auf allen 3 nodes die redis container plattgemacht und dann neu aufgesetzt, streng nach Anleitung.
                          Teil1 redis einrichten -> alles ok redis-cli info replication hat auf dem Master gezeigt, dass er Master ist und 2 Slaves da sind.

                          Ich habe dann einen Failover-Test gemacht und den Master (192.168.1.60) angehalten. Darauf wurde nach kurzer Zeit der Slave2 (192.168.1.62) zum Master, dann habe ich den Master wieder hochgefahren.

                          1. redis Instanz für objects angelegt auf allen nodes, hat funktioniert
                           ps -ef | grep redis
                          redis        121       1  0 17:01 ?        00:00:04 /usr/bin/redis-server 0.0.0.0:6379
                          redis        122       1  0 17:01 ?        00:00:04 /usr/bin/redis-server 0.0.0.0:6380
                          

                          Dann habe ich sentinel angelegt, das hat auch funktioniert und mir 1 Master, 2 Slaves und 3 Sentinels angezeigt.

                          Dann habe ich die Sentinel.conf erweitert, damit sie beide redis Prozesse überwacht:

                          bind 0.0.0.0
                          port 26379
                          daemonize yes
                          pidfile "/var/run/sentinel/redis-sentinel.pid"
                          logfile "/var/log/redis/redis-sentinel.log"
                          dir "/var/lib/redis"
                          protected-mode no
                          
                          sentinel myid 9eebf305c5cd77bae72f87aa9eccf0ce74dff891
                          sentinel deny-scripts-reconfig yes
                          
                          sentinel monitor objects-master 192.168.1.60 6379 2
                          sentinel failover-timeout objects-master 20000
                          sentinel config-epoch objects-master 0
                          sentinel leader-epoch objects-master 0 
                          
                          sentinel monitor states-master 192.168.1.60 6380 2
                          sentinel failover-timeout states-master 20000
                          sentinel config-epoch states-master 0
                          sentinel leader-epoch states-master 0
                          

                          Die sentinel.con ist auf allen nodes gleich, natürlich bis auf "myid"

                          Problem:

                          redis-cli -p 26379 info sentinel
                          # Sentinel
                          sentinel_masters:2
                          sentinel_tilt:0
                          sentinel_tilt_since_seconds:-1
                          sentinel_running_scripts:0
                          sentinel_scripts_queue_length:0
                          sentinel_simulate_failure_flags:0
                          master0:name=objects-master,status=odown,address=192.168.1.60:6379,slaves=0,sentinels=3
                          master1:name=states-master,status=ok,address=192.168.1.60:6380,slaves=2,sentinels=3
                          

                          Er zeigt 2 Master an (korrekt), aber für die Objects (Port 6379) 0 Slaves (????)
                          Dann ist mir noch aufgefallen, dass 192.168.1.60 nicht mehr Master ist (wahrscheinlich wegen meines Failover Tests), das hat er nach dem Starten des Prozesses nicht wieder zurückgeändert:

                          root@redis1:~# redis-cli info replication
                          # Replication
                          role:slave
                          master_host:192.168.1.62
                          master_port:6379
                          master_link_status:up
                          master_last_io_seconds_ago:0
                          master_sync_in_progress:0
                          slave_read_repl_offset:217785
                          slave_repl_offset:217785
                          slave_priority:100
                          slave_read_only:1
                          replica_announced:1
                          connected_slaves:0
                          master_failover_state:no-failover
                          master_replid:282bd0a72177c2eaff3e1e3b2e58cb341290f627
                          master_replid2:0000000000000000000000000000000000000000
                          master_repl_offset:217785
                          second_repl_offset:-1
                          repl_backlog_active:1
                          repl_backlog_size:1048576
                          repl_backlog_first_byte_offset:75236
                          repl_backlog_histlen:142550
                          

                          Der 192.168.2 wird als Master angezeigt.

                          amg_666 1 Reply Last reply Reply Quote 0
                          • amg_666
                            amg_666 @amg_666 last edited by

                            Hat sich erledigt. Irgendwie hat er das Failover nicht richtig zurück genommen, da war für Port 6379 kein Master eingetragen. Ich habe auf dem Master (192.168.1.60) redis und redis-sentinel angehalten, die redis.config geöffnet und alles was nach

                            # Generated by CONFIG REWRITE
                            

                            kommt gelöscht. Dann redis und redis-sentinel neu gestartet, jetzt läuft alles wie gewünscht

                            1 Reply Last reply Reply Quote 1
                            • First post
                              Last post

                            Support us

                            ioBroker
                            Community Adapters
                            Donate
                            FAQ Cloud / IOT
                            HowTo: Node.js-Update
                            HowTo: Backup/Restore
                            Downloads
                            BLOG

                            912
                            Online

                            31.6k
                            Users

                            79.5k
                            Topics

                            1.3m
                            Posts

                            redis sentinel
                            2
                            13
                            316
                            Loading More Posts
                            • Oldest to Newest
                            • Newest to Oldest
                            • Most Votes
                            Reply
                            • Reply as topic
                            Log in to reply
                            Community
                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                            The ioBroker Community 2014-2023
                            logo