Technologieaustausch

Redis 7.x-Serie [24] Konfigurationselemente im Sentinel-Modus

2024-07-12

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

Wenn es einen Weg gibt, aber keine Technik, kann die Technik trotzdem gesucht werden; wenn es eine Technik gibt, aber keinen Weg, bleibt es bei der Technik.

Redis Version 7.2.5 dieser Serie

Quellcode-Adresse: https://gitee.com/pearl-organization/study-redis-demo

1. Einleitung

In der dekomprimierten Quellcodedatei können Sie die Sentinel-Konfigurationsdatei sehen sentinel.conf

# Example sentinel.conf

# By default protected mode is disabled in sentinel mode. Sentinel is reachable
# from interfaces different than localhost. Make sure the sentinel instance is
# protected from the outside world via firewalling or other means.
protected-mode no

# port <sentinel-port>
# The port that this sentinel instance will run on
port 26379

# By default Redis Sentinel does not run as a daemon. Use 'yes' if you need it.
# Note that Redis will write a pid file in /var/run/redis-sentinel.pid when
# daemonized.
daemonize no

# When running daemonized, Redis Sentinel writes a pid file in
# /var/run/redis-sentinel.pid by default. You can specify a custom pid file
# location here.
pidfile /var/run/redis-sentinel.pid

# Specify the server verbosity level.
# This can be one of:
# debug (a lot of information, useful for development/testing)
# verbose (many rarely useful info, but not a mess like the debug level)
# notice (moderately verbose, what you want in production probably)
# warning (only very important / critical messages are logged)
# nothing (nothing is logged)
loglevel notice

# Specify the log file name. Also the empty string can be used to force
# Sentinel to log on the standard output. Note that if you use standard
# output for logging but daemonize, logs will be sent to /dev/null
logfile ""

# To enable logging to the system logger, just set 'syslog-enabled' to yes,
# and optionally update the other syslog parameters to suit your needs.
# syslog-enabled no

# Specify the syslog identity.
# syslog-ident sentinel

# Specify the syslog facility. Must be USER or between LOCAL0-LOCAL7.
# syslog-facility local0

# sentinel announce-ip <ip>
# sentinel announce-port <port>
#
# The above two configuration directives are useful in environments where,
# because of NAT, Sentinel is reachable from outside via a non-local address.
#
# When announce-ip is provided, the Sentinel will claim the specified IP address
# in HELLO messages used to gossip its presence, instead of auto-detecting the
# local address as it usually does.
#
# Similarly when announce-port is provided and is valid and non-zero, Sentinel
# will announce the specified TCP port.
#
# The two options don't need to be used together, if only announce-ip is
# provided, the Sentinel will announce the specified IP and the server port
# as specified by the "port" option. If only announce-port is provided, the
# Sentinel will announce the auto-detected local IP and the specified port.
#
# Example:
#
# sentinel announce-ip 1.2.3.4

# dir <working-directory>
# Every long running process should have a well-defined working directory.
# For Redis Sentinel to chdir to /tmp at startup is the simplest thing
# for the process to don't interfere with administrative tasks such as
# unmounting filesystems.
dir /tmp

# sentinel monitor <master-name> <ip> <redis-port> <quorum>
#
# Tells Sentinel to monitor this master, and to consider it in O_DOWN
# (Objectively Down) state only if at least <quorum> sentinels agree.
#
# Note that whatever is the ODOWN quorum, a Sentinel will require to
# be elected by the majority of the known Sentinels in order to
# start a failover, so no failover can be performed in minority.
#
# Replicas are auto-discovered, so you don't need to specify replicas in
# any way. Sentinel itself will rewrite this configuration file adding
# the replicas using additional configuration options.
# Also note that the configuration file is rewritten when a
# replica is promoted to master.
#
# Note: master name should not include special characters or spaces.
# The valid charset is A-z 0-9 and the three characters ".-_".
sentinel monitor mymaster 127.0.0.1 6379 2

# sentinel auth-pass <master-name> <password>
#
# Set the password to use to authenticate with the master and replicas.
# Useful if there is a password set in the Redis instances to monitor.
#
# Note that the master password is also used for replicas, so it is not
# possible to set a different password in masters and replicas instances
# if you want to be able to monitor these instances with Sentinel.
#
# However you can have Redis instances without the authentication enabled
# mixed with Redis instances requiring the authentication (as long as the
# password set is the same for all the instances requiring the password) as
# the AUTH command will have no effect in Redis instances with authentication
# switched off.
#
# Example:
#
# sentinel auth-pass mymaster MySUPER--secret-0123passw0rd

# sentinel auth-user <master-name> <username>
#
# This is useful in order to authenticate to instances having ACL capabilities,
# that is, running Redis 6.0 or greater. When just auth-pass is provided the
# Sentinel instance will authenticate to Redis using the old "AUTH <pass>"
# method. When also an username is provided, it will use "AUTH <user> <pass>".
# In the Redis servers side, the ACL to provide just minimal access to
# Sentinel instances, should be configured along the following lines:
#
#     user sentinel-user >somepassword +client +subscribe +publish 
#                        +ping +info +multi +slaveof +config +client +exec on

# sentinel down-after-milliseconds <master-name> <milliseconds>
#
# Number of milliseconds the master (or any attached replica or sentinel) should
# be unreachable (as in, not acceptable reply to PING, continuously, for the
# specified period) in order to consider it in S_DOWN state (Subjectively
# Down).
#
# Default is 30 seconds.
sentinel down-after-milliseconds mymaster 30000

# IMPORTANT NOTE: starting with Redis 6.2 ACL capability is supported for
# Sentinel mode, please refer to the Redis website https://redis.io/topics/acl
# for more details.

# Sentinel's ACL users are defined in the following format:
#
#   user <username> ... acl rules ...
#
# For example:
#
#   user worker +@admin +@connection ~* on >ffa9203c493aa99
#
# For more information about ACL configuration please refer to the Redis
# website at https://redis.io/topics/acl and redis server configuration 
# template redis.conf.

# ACL LOG
#
# The ACL Log tracks failed commands and authentication events associated
# with ACLs. The ACL Log is useful to troubleshoot failed commands blocked 
# by ACLs. The ACL Log is stored in memory. You can reclaim memory with 
# ACL LOG RESET. Define the maximum entry length of the ACL Log below.
acllog-max-len 128

# Using an external ACL file
#
# Instead of configuring users here in this file, it is possible to use
# a stand-alone file just listing users. The two methods cannot be mixed:
# if you configure users here and at the same time you activate the external
# ACL file, the server will refuse to start.
#
# The format of the external ACL user file is exactly the same as the
# format that is used inside redis.conf to describe users.
#
# aclfile /etc/redis/sentinel-users.acl

# requirepass <password>
#
# You can configure Sentinel itself to require a password, however when doing
# so Sentinel will try to authenticate with the same password to all the
# other Sentinels. So you need to configure all your Sentinels in a given
# group with the same "requirepass" password. Check the following documentation
# for more info: https://redis.io/topics/sentinel
#
# IMPORTANT NOTE: starting with Redis 6.2 "requirepass" is a compatibility
# layer on top of the ACL system. The option effect will be just setting
# the password for the default user. Clients will still authenticate using
# AUTH <password> as usually, or more explicitly with AUTH default <password>
# if they follow the new protocol: both will work.
#
# New config files are advised to use separate authentication control for
# incoming connections (via ACL), and for outgoing connections (via
# sentinel-user and sentinel-pass) 
#
# The requirepass is not compatible with aclfile option and the ACL LOAD
# command, these will cause requirepass to be ignored.

# sentinel sentinel-user <username>
#
# You can configure Sentinel to authenticate with other Sentinels with specific
# user name. 

# sentinel sentinel-pass <password>
#
# The password for Sentinel to authenticate with other Sentinels. If sentinel-user
# is not configured, Sentinel will use 'default' user with sentinel-pass to authenticate.

# sentinel parallel-syncs <master-name> <numreplicas>
#
# How many replicas we can reconfigure to point to the new replica simultaneously
# during the failover. Use a low number if you use the replicas to serve query
# to avoid that all the replicas will be unreachable at about the same
# time while performing the synchronization with the master.
sentinel parallel-syncs mymaster 1

# sentinel failover-timeout <master-name> <milliseconds>
#
# Specifies the failover timeout in milliseconds. It is used in many ways:
#
# - The time needed to re-start a failover after a previous failover was
#   already tried against the same master by a given Sentinel, is two
#   times the failover timeout.
#
# - The time needed for a replica replicating to a wrong master according
#   to a Sentinel current configuration, to be forced to replicate
#   with the right master, is exactly the failover timeout (counting since
#   the moment a Sentinel detected the misconfiguration).
#
# - The time needed to cancel a failover that is already in progress but
#   did not produced any configuration change (SLAVEOF NO ONE yet not
#   acknowledged by the promoted replica).
#
# - The maximum time a failover in progress waits for all the replicas to be
#   reconfigured as replicas of the new master. However even after this time
#   the replicas will be reconfigured by the Sentinels anyway, but not with
#   the exact parallel-syncs progression as specified.
#
# Default is 3 minutes.
sentinel failover-timeout mymaster 180000

# SCRIPTS EXECUTION
#
# sentinel notification-script and sentinel reconfig-script are used in order
# to configure scripts that are called to notify the system administrator
# or to reconfigure clients after a failover. The scripts are executed
# with the following rules for error handling:
#
# If script exits with "1" the execution is retried later (up to a maximum
# number of times currently set to 10).
#
# If script exits with "2" (or an higher value) the script execution is
# not retried.
#
# If script terminates because it receives a signal the behavior is the same
# as exit code 1.
#
# A script has a maximum running time of 60 seconds. After this limit is
# reached the script is terminated with a SIGKILL and the execution retried.

# NOTIFICATION SCRIPT
#
# sentinel notification-script <master-name> <script-path>
# 
# Call the specified notification script for any sentinel event that is
# generated in the WARNING level (for instance -sdown, -odown, and so forth).
# This script should notify the system administrator via email, SMS, or any
# other messaging system, that there is something wrong with the monitored
# Redis systems.
#
# The script is called with just two arguments: the first is the event type
# and the second the event description.
#
# The script must exist and be executable in order for sentinel to start if
# this option is provided.
#
# Example:
#
# sentinel notification-script mymaster /var/redis/notify.sh

# CLIENTS RECONFIGURATION SCRIPT
#
# sentinel client-reconfig-script <master-name> <script-path>
#
# When the master changed because of a failover a script can be called in
# order to perform application-specific tasks to notify the clients that the
# configuration has changed and the master is at a different address.
# 
# The following arguments are passed to the script:
#
# <master-name> <role> <state> <from-ip> <from-port> <to-ip> <to-port>
#
# <state> is currently always "start"
# <role> is either "leader" or "observer"
# 
# The arguments from-ip, from-port, to-ip, to-port are used to communicate
# the old address of the master and the new address of the elected replica
# (now a master).
#
# This script should be resistant to multiple invocations.
#
# Example:
#
# sentinel client-reconfig-script mymaster /var/redis/reconfig.sh

# SECURITY
#
# By default SENTINEL SET will not be able to change the notification-script
# and client-reconfig-script at runtime. This avoids a trivial security issue
# where clients can set the script to anything and trigger a failover in order
# to get the program executed.

sentinel deny-scripts-reconfig yes

# REDIS COMMANDS RENAMING (DEPRECATED)
#
# WARNING: avoid using this option if possible, instead use ACLs.
#
# Sometimes the Redis server has certain commands, that are needed for Sentinel
# to work correctly, renamed to unguessable strings. This is often the case
# of CONFIG and SLAVEOF in the context of providers that provide Redis as
# a service, and don't want the customers to reconfigure the instances outside
# of the administration console.
#
# In such case it is possible to tell Sentinel to use different command names
# instead of the normal ones. For example if the master "mymaster", and the
# associated replicas, have "CONFIG" all renamed to "GUESSME", I could use:
#
# SENTINEL rename-command mymaster CONFIG GUESSME
#
# After such configuration is set, every time Sentinel would use CONFIG it will
# use GUESSME instead. Note that there is no actual need to respect the command
# case, so writing "config guessme" is the same in the example above.
#
# SENTINEL SET can also be used in order to perform this configuration at runtime.
#
# In order to set a command back to its original name (undo the renaming), it
# is possible to just rename a command to itself:
#
# SENTINEL rename-command mymaster CONFIG CONFIG

# HOSTNAMES SUPPORT
#
# Normally Sentinel uses only IP addresses and requires SENTINEL MONITOR
# to specify an IP address. Also, it requires the Redis replica-announce-ip
# keyword to specify only IP addresses.
#
# You may enable hostnames support by enabling resolve-hostnames. Note
# that you must make sure your DNS is configured properly and that DNS
# resolution does not introduce very long delays.
#
SENTINEL resolve-hostnames no

# When resolve-hostnames is enabled, Sentinel still uses IP addresses
# when exposing instances to users, configuration files, etc. If you want
# to retain the hostnames when announced, enable announce-hostnames below.
#
SENTINEL announce-hostnames no

# When master_reboot_down_after_period is set to 0, Sentinel does not fail over
# when receiving a -LOADING response from a master. This was the only supported
# behavior before version 7.0.
#
# Otherwise, Sentinel will use this value as the time (in ms) it is willing to
# accept a -LOADING response after a master has been rebooted, before failing
# over.

SENTINEL master-reboot-down-after-period mymaster 0

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111
  • 112
  • 113
  • 114
  • 115
  • 116
  • 117
  • 118
  • 119
  • 120
  • 121
  • 122
  • 123
  • 124
  • 125
  • 126
  • 127
  • 128
  • 129
  • 130
  • 131
  • 132
  • 133
  • 134
  • 135
  • 136
  • 137
  • 138
  • 139
  • 140
  • 141
  • 142
  • 143
  • 144
  • 145
  • 146
  • 147
  • 148
  • 149
  • 150
  • 151
  • 152
  • 153
  • 154
  • 155
  • 156
  • 157
  • 158
  • 159
  • 160
  • 161
  • 162
  • 163
  • 164
  • 165
  • 166
  • 167
  • 168
  • 169
  • 170
  • 171
  • 172
  • 173
  • 174
  • 175
  • 176
  • 177
  • 178
  • 179
  • 180
  • 181
  • 182
  • 183
  • 184
  • 185
  • 186
  • 187
  • 188
  • 189
  • 190
  • 191
  • 192
  • 193
  • 194
  • 195
  • 196
  • 197
  • 198
  • 199
  • 200
  • 201
  • 202
  • 203
  • 204
  • 205
  • 206
  • 207
  • 208
  • 209
  • 210
  • 211
  • 212
  • 213
  • 214
  • 215
  • 216
  • 217
  • 218
  • 219
  • 220
  • 221
  • 222
  • 223
  • 224
  • 225
  • 226
  • 227
  • 228
  • 229
  • 230
  • 231
  • 232
  • 233
  • 234
  • 235
  • 236
  • 237
  • 238
  • 239
  • 240
  • 241
  • 242
  • 243
  • 244
  • 245
  • 246
  • 247
  • 248
  • 249
  • 250
  • 251
  • 252
  • 253
  • 254
  • 255
  • 256
  • 257
  • 258
  • 259
  • 260
  • 261
  • 262
  • 263
  • 264
  • 265
  • 266
  • 267
  • 268
  • 269
  • 270
  • 271
  • 272
  • 273
  • 274
  • 275
  • 276
  • 277
  • 278
  • 279
  • 280
  • 281
  • 282
  • 283
  • 284
  • 285
  • 286
  • 287
  • 288
  • 289
  • 290
  • 291
  • 292
  • 293
  • 294
  • 295
  • 296
  • 297
  • 298
  • 299
  • 300
  • 301
  • 302
  • 303
  • 304
  • 305
  • 306
  • 307
  • 308
  • 309
  • 310
  • 311
  • 312
  • 313
  • 314
  • 315
  • 316
  • 317
  • 318
  • 319
  • 320
  • 321
  • 322
  • 323
  • 324
  • 325
  • 326
  • 327
  • 328
  • 329
  • 330
  • 331
  • 332
  • 333
  • 334
  • 335
  • 336
  • 337
  • 338
  • 339
  • 340
  • 341
  • 342
  • 343
  • 344
  • 345
  • 346
  • 347
  • 348
  • 349
  • 350
  • 351
  • 352
  • 353
  • 354
  • 355
  • 356
  • 357
  • 358
  • 359
  • 360
  • 361
  • 362

2. Konfigurationselemente

2.1 Geschützter Modus

Konfigurieren Sie, ob der geschützte Modus aktiviert werden soll.

protected-mode no
  • 1

Die Standardeinstellung ist no , kann neben dem lokalen Host auch auf andere Adressen zugegriffen werden. In einer Produktionsumgebung muss dieser durch eine Firewall oder andere Mittel geschützt werden.Sentinel Beispiel, und verbieten Sie den externen Netzwerkzugriff.

2.2-Anschluss

Konfigurieren Sie den laufenden Port des Sentinel-Knotens.

port 26379
  • 1

2.3 Daemonisieren

Konfigurieren Sie, ob die Ausführung im Hintergrund (Ausführung als Daemon-Prozess) zugelassen werden soll. Die Standardeinstellung ist no , die empfohlene Einstellung istyes ,WannRedis Sentinel Bei der Ausführung als Daemon ist die/var/run/redis-sentinel.pidSchreib einPIDdokumentieren.

daemonize no
  • 1

2.4 PID-Datei

Aufbau Redis Sentinel Wenn es als Daemon ausgeführt wird,PIDDer Speicherort und Name der Datei.

pidfile /var/run/redis-sentinel.pid
  • 1

2.5 Protokollebene

Konfigurieren Sie die Protokollebene.

loglevel notice
  • 1

Konfigurierbare Elemente:

  • debug: Tonnenweise Informationen, nützlich für Entwicklung/Tests
  • verbose: Viele selten nützliche Informationen, aber nicht sodebugDas Level ist so verwirrend
  • notice: Mittlere Ausführlichkeit, wahrscheinlich das, was Sie in einer Produktionsumgebung wünschen
  • warning:Nur sehr wichtige/kritische Nachrichten protokollieren
  • nothing:Nichts protokollieren

2.6 Logdatei

Konfigurieren Sie den Namen der Protokolldatei.Verwenden Sie zum Erzwingen eine leere ZeichenfolgeSentinel Melden Sie sich bei der Standardausgabe an.

logfile ""
  • 1

2.7 Syslog aktiviert

Konfigurieren Sie, ob die Systemprotokollierung aktiviert werden soll.

# syslog-enabled no
  • 1

2.8 Syslog-Identifikation

Konfigurieren Sie die Identität des Systemprotokolls.

# syslog-ident sentinel
  • 1

2.9 Syslog-Einrichtung

Geben Sie das Gerät für Systemprotokolle an.muss seinUSER oderLOCAL0-LOCAL7 einer dazwischen.

# syslog-facility local0
  • 1

2.10 Sentinel-Ankündigungs-IP, Sentinel-Ankündigungs-Port

Geben Sie den Strom anSentinel KnotenIP Adresse und Port, was in bestimmten Netzwerkkonfigurationen oder Bereitstellungsszenarien nützlich sein kann, beispielsweise wenn der Slave-Knoten lokalisiert wirdNAT Später oder wenn Container-/Virtualisierungstechnologie verwendet wird.

sentinel announce-ip <ip>
sentinel announce-port <port>
  • 1
  • 2

2.11 dir

Konfigurieren Sie das Arbeitsverzeichnis, zRedis SentinelWechseln Sie beispielsweise zu /tmp Verzeichnisse sind die einfachste Möglichkeit, die Beeinträchtigung administrativer Aufgaben, beispielsweise anderer Dateisysteme, zu vermeiden.

dir /tmp
  • 1

2.12 Wächtermonitor

ist ein wichtiges Konfigurationselement, das zum Definieren eines verwendet wird Sentinel überwachtRedis Master-Server, und nur wenn zumindest<quorum> individuellSentinel Erst mit Zustimmung gilt es als eingegangenO_DOWNStatus (Ziel offline).

# sentinel monitor <master-name> <ip> <redis-port> <quorum>
sentinel monitor mymaster 127.0.0.1 6379 2
  • 1
  • 2

Parameterbeschreibung:

  • <master-name>Redis Der vom Masterknoten angegebene Name. Dieser Name ist inSentinel Wird in der Konfiguration und Benachrichtigung verwendet.
  • <ip> : des MasterknotensIP Adresse.
  • <redis-port> : Der Überwachungsport des Masterknotens.
  • <quorum>: Definition Sentinel Die Mindestanzahl an Stimmen, die erforderlich ist, um einen Master-Server als nicht verfügbar zu betrachten (im Allgemeinen wird mehr als die Hälfte der Anzahl der Sentinels empfohlen).

Zum Beispiel wollen Sentinel Überwachen Sie eine Datei mit dem Namen mymaster vonRedis Masterknoten, der ServerIP die Adresse ist192.168.1.1, der Hafen ist 6379, und es müssen mindestens zwei sein Sentinel Erst wenn vereinbart ist, dass der Hauptserver nicht verfügbar ist, wird er als objektiv offline markiert. Konfigurieren Sie ihn wie folgt:

sentinel monitor mymaster 127.0.0.1 6379 2
  • 1

Vorsichtsmaßnahmen:

  • Slave-Server werden automatisch erkannt, sodass keine Angabe von Slave-Knoten erforderlich ist.Sentinel selbst überschreibt diese Konfigurationsdatei, um Slave-Knoten einzubeziehen, indem zusätzliche Konfigurationsoptionen hinzugefügt werden.
  • Wenn ein Slave-Knoten zum Master-Knoten befördert wird, wird auch die Konfigurationsdatei neu geschrieben.
  • Der Name des Masterknotens sollte keine Sonderzeichen oder Leerzeichen enthalten.Gültige Zeichensätze sindA-z 0-9 Und.-_
  • egal O_DOWN Das Quorum muss bekannt seinSentinel Das Failover kann erst beginnen, wenn eine Mehrheit gewählt ist. Daher kann es im Falle einer Minderheit nicht zu einem Failover kommen.

2.13 Sentinel-Authentifizierungspass, Sentinel-Authentifizierungsbenutzer

Wenn Sie überwachen möchten Redis Für die Instanz ist ein Passwort festgelegt.sentinel auth-pass Legen Sie Passwörter für die Authentifizierung mit Master- und Slave-Knoten fest. Bitte beachten Sie, dass das Passwort für den Master-Knoten auch für die Slave-Knoten verwendet wird, daher müssen die Passwörter für den Master- und Slave-Knoten konsistent sein.Wenn keine Authentifizierung aktiviert istRedis Beispiel: AusführungAUTHDer Befehl hat keine Wirkung.

sentinel auth-pass <master-name> <password>
  • 1

Sie können auch den Benutzernamen konfigurieren:

sentinel auth-user <master-name> <username>
  • 1

um zu Sentinel Instanzen bieten minimalen Zugriff und sollten wie folgt konfiguriert werdenACL

user sentinel-user >somepassword +client +subscribe +publish 
+ping +info +multi +slaveof +config +client +exec on
  • 1
  • 2

In >somepassword das für den Benutzer konfigurierte Passwort,clientsubscribeWarten Sie auf die Ausführung Sentinel Berechtigungen für die zur Überwachung erforderlichen Mindestbefehle,onDas Schlüsselwort gibt an, dass diese Berechtigungen für alle Datenbanken wirksam werden.

2.14 Sentinel nach Millisekunden ausgefallen

existieren Sentinel An Master-Slave-Knoten sendenPING Wenn nach dem Befehl innerhalb einer bestimmten Anzahl von Millisekunden keine Antwort erfolgt, wird er als markiertS_DOWN Status (subjektiv offline).

Wie viele Millisekunden konfiguriert werden sollen

# sentinel down-after-milliseconds <master-name> <milliseconds>
sentinel down-after-milliseconds mymaster 30000
  • 1
  • 2

Der Standardwert ist 30 Sekunden, wenn Sie innerhalb dieser Zeit nicht antworten können,SentinelEs wird weiter evaluiert, ob ein Failover-Prozess ausgelöst werden muss.

2.15 Benutzer

aus Redis 6.2 Start, Unterstützung des Sentinel-ModusACLZugriffskontrollliste)-Funktion können Sie den Master-Slave-Knoten konfigurieren ACL Benutzername und Berechtigungen.

# user <用户名> ... ACL规则 ...
# user <username> ... acl rules ...
user worker +@admin +@connection ~* on >ffa9203c493aa99
  • 1
  • 2
  • 3

Parameterbeschreibung im Beispiel:

  • >ffa9203c493aa99 ist das Passwort des Benutzers
  • +@admin、+@connectionMittel, die dem Benutzer zur Verfügung gestellt werden worker Zugriff auf bestimmte Befehlssätze
  • ~* Stellt den Zugriff auf alle Schlüssel dar
  • on Zeigt an, dass diese Berechtigungen für alle Datenbanken wirksam sind

2.16 acllog-max-len

Aufbau ACL Die maximale Eintragslänge des Protokolls.

acllog-max-len 128
  • 1

ACL Protokollverfolgung undACL (Zugriffskontrollliste) im Zusammenhang mit fehlgeschlagenen Befehlen und Authentifizierungsereignissen.Für die UntersuchungACL Blockierte fehlgeschlagene Befehle sind sehr nützlich.ACL Protokolle werden im Speicher gespeichert und können verwendet werdenACL LOG RESET Befehl zum Freigeben von Speicher.

Durch Anpassen der maximalen Eintragslänge des Protokolls können Sie die vom Protokoll belegte Speichermenge steuern und Speicher freigeben, indem Sie das Protokoll bei Bedarf zurücksetzen.Dies ist nützlich für die WartungRedis Serverleistung und -sicherheit sind wichtig, da sie Administratoren dabei helfen, potenzielle Probleme bei der Zugriffskontrolle rechtzeitig zu erkennen und zu lösen.

2.17 acl-Datei

außer in sentinel.conf Zusätzlich zur Konfiguration von Benutzern in Dateien können Sie einen Benutzer auch extern konfigurierenACL können diese beiden Methoden nicht gemischt werden, da sonst der Server den Start verweigert.

# aclfile /etc/redis/sentinel-users.acl
  • 1

extern ACL Das Format der Datei istredis.conf Das in der Datei verwendete Format ist genau das gleiche.

2.18 erforderlich

Aufbau Sentinel Das Passwort selbst muss nach der Konfiguration überprüft werdenSentineIch werde versuchen, dasselbe Passwort wie alle anderen zu verwenden Sentinel Authentifizieren.

requirepass <password>
  • 1

Und aclfile Konfiguration undACL LOAD Die Befehle sind inkompatibel, sie verursachenrequirepass ignoriert werden.

2.19 Sentinel Sentinel-Benutzer, Sentinel Sentinel-Pass

Aufbau Sentinel mit anderenSentinel Benutzername und Passwort zur Authentifizierung.

sentinel sentinel-user <username>
sentinel sentinel-pass <password>
  • 1
  • 2

wenn nicht konfiguriert sentinel-user , wird benutzendefault Benutzer undsentinel-pass Authentifizieren.

2.20 Sentinel-Parallelsynchronisierungen

kontrollieren, wann Redis Sentinel Wenn ein Master-Knotenausfall erkannt wird und ein Failover erforderlich ist, wie viele Slave-Knoten dürfen gleichzeitig versuchen, sich mit dem neuen Master-Knoten zu synchronisieren? Der Zweck besteht darin, die Geschwindigkeit der Synchronisierung des neuen Primärknotens mit der Nutzung von Netzwerkressourcen während des Failover-Prozesses in Einklang zu bringen.

# sentinel parallel-syncs <master-name> <numreplicas>
sentinel parallel-syncs mymaster 1
  • 1
  • 2

Während des Failover-Prozesses beginnt der ausgewählte neue Master-Knoten, Schreibvorgänge zu akzeptieren, und andere Slave-Knoten müssen sich mit dem neuen Master-Knoten synchronisieren, um ihre Datensätze zu aktualisieren. Wenn alle Slave-Knoten gleichzeitig mit der Synchronisierung beginnen, kann dies eine große Belastung für das Netzwerk und den neuen Master-Knoten bedeuten.

2.21 Sentinel Failover-Timeout

Gibt das Failover-Timeout in Millisekunden an, der Standardwert ist 3 Minuten (d. h.180000 Millisekunde).

sentinel failover-timeout <master-name> <milliseconds>
  • 1

Wenn innerhalb der angegebenen Zeit,Sentinel Wenn nicht alle für den Failover erforderlichen Schritte abgeschlossen werden können (z. B. die Wahl eines neuen Master-Knotens, die Aktualisierung der Replikationskonfiguration des Slave-Knotens usw.), gilt der Failover-Vorgang als fehlgeschlagen.

2.22 Sentinel-Benachrichtigungsskript

Ermöglicht dem Benutzer, ein Skript anzugeben, wenn Sentinel Der Knoten erkennt ein wichtiges Ereignis (z. B.Redis Wenn bei einer Instanz ein subjektiver Fehler oder ein objektiver Fehler usw. auftritt, wird dieses Skript automatisch aufgerufen, um den Systemadministrator zu benachrichtigen oder eine automatische Fehlerbehandlung durchzuführen.

sentinel notification-script <master-name> <script-path>
  • 1

für jeden in WARNING Ebene erzeugtSentinel Ereignis (zum Beispiel-sdown-odown usw.), rufen Sie das angegebene Benachrichtigungsskript auf.Dieses Skript sollte den Systemadministrator per E-Mail, SMS oder einem anderen überwachten Nachrichtensystem benachrichtigenRedis Es liegt ein Problem mit dem System vor.

Beispiel:

sentinel notification-script mymaster /var/redis/notify.sh
  • 1

Das obige Beispiel zeigt dies für eine Datei mit dem Namen mymaster des Hauptservers, wannWARNING Level-Ereignis,Sentinel werde anrufen/var/redis/notify.sh Skript und übergibt ihm den Ereignistyp und die Ereignisbeschreibung als Parameter.

Die maximale Laufzeit für Benachrichtigungsskripte und andere Skripte beträgt 60 Sekunden, nachdem dieses Limit erreicht ist, wird das Skript ausgeführtSIGKILL Das Signal wird beendet und versucht erneut, es auszuführen. Die Ausführung des Skripts folgt den folgenden Fehlerbehandlungsregeln:

  • Wenn das Skript mit „endet“1” Zum Beenden wird die Ausführung später wiederholt (die maximale Anzahl von Wiederholungen ist derzeit auf eingestellt).10Zweitklassig).
  • Wenn das Skript mit „endet“2” (oder höher), wird die Skriptausführung nicht wiederholt.
  • Wenn das Skript aufgrund des Empfangs eines Signals beendet wird, ändern sich sein Verhalten und sein Exit-Code1Gleiche Zeit.

2.23 Sentinel-Client-Neukonfigurationsskript

Ermöglicht dem Benutzer die Angabe eines Skripts in Sentinel Dieses Skript wird automatisch aufgerufen, nachdem ein Failover eines Masterknotens abgeschlossen ist. Dieses Skript kann die erforderlichen Vorgänge ausführen, um Clients darüber zu informieren, dass sich die Konfiguration geändert hat.

sentinel client-reconfig-script <master-name> <script-path>
  • 1

Zu den Hauptfunktionen dieses Skripts gehören normalerweise:

  • Aktualisieren Sie die Clientkonfiguration, damit er eine Verbindung zum neuen Masterknoten herstellen kann.
  • Führen Sie einige Aufräumarbeiten durch, z. B. das Löschen zugehöriger Konfigurationen oder Ressourcen des alten Masterknotens.
  • Sendet eine Benachrichtigung oder Warnung, um den Systemadministrator darüber zu informieren, dass das Failover abgeschlossen ist.

Wann SentineIch rufe an sentinel client-reconfig-script Bei der Angabe eines Skripts werden eine Reihe von Parametern an das Skript übergeben. Diese Parameter enthalten Informationen zum Failover-Ergebnis, normalerweise einschließlich:

  • : Der Name des Masterknotens.
  • : Die Rolle des neuen Masterknotens.
  • : Der Status oder das Ergebnis des Failovers.
  • : des alten Masterknotens IP Adresse.
  • : Die Portnummer des alten Masterknotens.
  • : des neuen Masterknotens IP Adresse.
  • : Die Portnummer des neuen Masterknotens.

Beispiel:

sentinel client-reconfig-script mymaster /var/redis/reconfig.sh
  • 1

Das obige Beispiel zeigt, wann der Name lautet mymaster Wenn der primäre Server aufgrund eines Failovers geändert wird,Sentinel werde anrufen/var/redis/reconfig.sh Skript und übergibt ihm den Namen, die Rolle, den Status des Master-Servers und den des ursprünglichen Master-ServersIP und Port, neuer MasterserverIP und Portparameter.

2.24 Sentinel-Deny-Scripts-Neukonfiguration

Wird verwendet, um zu steuern, ob der Durchgang zugelassen wird SENTINEL SET Befehlsänderungnotification-script Undclient-reconfig-script Aufbau.

sentinel deny-scripts-reconfig yes
  • 1

Festlegen als yes (Standard), was darauf hinweist, dass das Übergeben verboten istSENTINEL SET Befehle zum Ändern von Skriptkonfigurationen tragen dazu bei, die Systemsicherheit zu erhöhen und unbefugte Änderungen zu verhindern.

2.25 Sentinel Deny-Scripts-Neukonfiguration

Benennen Sie den Befehl um (veraltet).

SENTINEL rename-command mymaster CONFIG GUESSME
  • 1

2.26 SENTINEL - Hostnamen auflösen

normalerweise Sentinel Verwenden Sie nur IP-Adressen und erfordernSENTINEL MONITOR spezifizieren Sie aIP Adresse.Darüber hinaus erfordert esRedis vonreplica-announce-ip Nur angebenIP Adresse.

Kann aktiviert werden durch resolve-hostnames um Hostnamen zu unterstützen (hostname), Sentinel wird versuchen, den Hostnamen aufzulösen, anstatt ihn direkt zu verwendenIP Adresse zu identifizierenRedis Beispiel.

SENTINEL resolve-hostnames no
  • 1

Beachten Sie, dass Sie sicherstellen müssen, dass Ihre DNS richtig konfiguriert undDNS Das Parsen führt nicht zu sehr langen Verzögerungen.Bei der Verwendung von Container-Bereitstellungen wie zDocker oderKubernetes), Und Redis BeispielIP Adresse kann sich ändern, aktivierenSENTINEL resolve-hostnames Könnte eine gute Lösung sein.

2.27 SENTINEL-Ankündigungshostnamen

Wird verwendet, um zu steuern, ob Sentinel den Hostnamen (hostnames) anstatt IP Adresse.

SENTINEL announce-hostnames no
  • 1

Wenn aktiviert resolve-hostnames Stunde,Sentinel Wird weiterhin verwendet, wenn Instanzen für Benutzer, Profile usw. verfügbar gemacht werden.IP Adresse.Wenn diese Option auf eingestellt istno Wenn Sentinel eine Master-Slave-Knotenänderungsbenachrichtigung oder andere verwandte Informationen veröffentlicht, wird es verwendetIP Adresse statt Hostname.

2.28 SENTINEL Master-Neustart nach Ablauf der Frist

Konfigurieren Sie die Anzahl der Millisekunden, die der Sentinel warten soll, bevor er davon ausgeht, dass der Masterknoten aufgrund eines Neustarts vorübergehend nicht erreichbar ist. Dies ist nützlich, um die Notwendigkeit eines Neustarts aufgrund von Systemwartungen oder Upgrades zu bewältigen. Redis Dies ist besonders in Serverszenarien nützlich.

SENTINEL master-reboot-down-after-period mymaster 0
  • 1

In bestimmten Situationen, wie z. B. Systemneustarts oder kurzen Netzwerkproblemen,Redis Der Server ist möglicherweise vorübergehend nicht erreichbar, anstatt tatsächlich eine Fehlfunktion zu haben.Diese Konfiguration gibt anSentinel Die Zeitspanne, die man warten sollte, bevor der Master-Server als objektiv offline markiert wird.