Condivisione della tecnologia

Serie Redis 7.x [24] Elementi di configurazione della modalità Sentinel

2024-07-12

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

Se c’è una via ma non c’è una tecnica, la tecnica può ancora essere ricercata; se c’è una tecnica ma non c’è una via, ci si fermerà alla tecnica.

Versione Redis 7.2.5 di questa serie

Indirizzo del codice sorgente: https://gitee.com/pearl-organization/study-redis-demo

1. Introduzione

Nel file del codice sorgente decompresso è possibile visualizzare il file di configurazione di Sentinel 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. Elementi di configurazione

2.1 modalità protetta

Configura se abilitare la modalità protetta.

protected-mode no
  • 1

L'impostazione predefinita è no , è possibile accedere anche ad altri indirizzi oltre all'host locale. In un ambiente di produzione, è necessario che sia protetto da un firewall o altri mezzi.Sentinel esempio e vietare l'accesso alla rete esterna.

2.2 portaa

Configura la porta in esecuzione del nodo sentinella.

port 26379
  • 1

2.3 demonizzare

Configura se consentire l'esecuzione in background (in esecuzione come processo demone), l'impostazione predefinita è no , l'impostazione consigliata èyes ,QuandoRedis Sentinel Quando viene eseguito come demone, il file/var/run/redis-sentinel.pidScrivere unPIDdocumento.

daemonize no
  • 1

2.4 file pid

Configurazione Redis Sentinel Quando viene eseguito come demone,PIDLa posizione e il nome del file.

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

2.5 livello di registro

Configura il livello di registro.

loglevel notice
  • 1

Elementi configurabili:

  • debug: Tonnellate di informazioni, utili per lo sviluppo/test
  • verbose: Molte informazioni raramente utili, ma non cosìdebugIl livello è così confuso
  • notice: Livello di verbosità medio, probabilmente quello che desideri in un ambiente di produzione
  • warning:Registra solo i messaggi molto importanti/critici
  • nothing:Non registrare nulla

2.6 file di registro

Configurare il nome del file di registro.Utilizzare una stringa vuota per forzareSentinel Accedere all'output standard.

logfile ""
  • 1

2.7 abilitato per syslog

Configura se abilitare la registrazione del sistema.

# syslog-enabled no
  • 1

2.8 syslog-identificatoreificatore

Configurare l'identità del registro di sistema.

# syslog-ident sentinel
  • 1

2.9 funzione syslog

Specificare il dispositivo per i registri di sistema.deve essereUSER OLOCAL0-LOCAL7 uno in mezzo.

# syslog-facility local0
  • 1

2.10 sentinel announce-ip、sentinel announce-port

Specificare la correnteSentinel NodaleIP indirizzo e porta, che possono essere utili in determinate configurazioni di rete o scenari di distribuzione, ad esempio quando viene individuato il nodo slaveNAT Successivamente o quando viene utilizzata la tecnologia contenitore/virtualizzazione.

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

2.11 direzioneezione

Configura la directory di lavoro, perRedis SentinelAd esempio, passa a /tmp Le directory rappresentano il modo più semplice per evitare di interferire con attività amministrative come altri file system.

dir /tmp
  • 1

2.12 monitor sentinella

è un elemento di configurazione chiave utilizzato per definire a Sentinel monitoratoRedis server master e solo se almeno<quorum> individualeSentinel Solo con il consenso si considera presenteO_DOWNStato (Obiettivo offline).

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

Descrizione dei parametri:

  • <master-name>Redis Il nome specificato dal nodo master. Questo nome è inSentinel Verrà utilizzato nella configurazione e nella notifica.
  • <ip> : del nodo masterIP indirizzo.
  • <redis-port> : La porta di ascolto del nodo master.
  • <quorum>: Definizione Sentinel Il numero minimo di voti richiesti per considerare un server master non disponibile (generalmente consigliato è più della metà del numero di sentinelle).

Ad esempio, vuoi Sentinel Monitorare un file denominato mymaster DiRedis nodo master, quello del serverIP l'indirizzo è192.168.1.1, il porto è 6379, e ce ne devono essere almeno due Sentinel Solo quando si concorda che il server principale non è disponibile verrà contrassegnato come oggettivamente offline Configuralo in questo modo:

sentinel monitor mymaster 127.0.0.1 6379 2
  • 1

Precauzioni:

  • I server slave vengono rilevati automaticamente, quindi non è necessario specificare in alcun modo i nodi slave.Sentinel stesso sovrascriverà questo file di configurazione per includere i nodi slave aggiungendo ulteriori opzioni di configurazione.
  • Quando un nodo slave viene promosso a nodo master, anche il file di configurazione viene riscritto.
  • Il nome del nodo master non deve contenere caratteri speciali o spazi.I set di caratteri validi sonoA-z 0-9 E.-_
  • indipendentemente O_DOWN Occorre conoscere il quorumSentinel Il failover non può iniziare finché non viene eletta la maggioranza, quindi il failover non può verificarsi in caso di minoranza.

2.13 sentinel auth-pass、sentinel auth-user

Se vuoi monitorare Redis L'istanza ha una password impostata,sentinel auth-pass Imposta le password per l'autenticazione con i nodi master e slave. Tieni presente che la password per il nodo master viene utilizzata anche per i nodi slave, quindi le password per i nodi master e slave devono essere coerenti.Se non è abilitata l'autenticazioneRedis istanza, esecuzioneAUTHIl comando non ha alcun effetto.

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

Puoi anche configurare il nome utente:

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

in modo da Sentinel Le istanze forniscono un accesso minimo e devono essere configurate come segueACL

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

In >somepassword la password configurata per l'utente,clientsubscribeAttendi l'esecuzione Sentinel Autorizzazioni per i comandi minimi richiesti per il monitoraggio,onLa parola chiave indica che queste autorizzazioni avranno effetto su tutti i database.

2.14 sentinella giù dopo millisecondi

esistere Sentinel Invia al nodo master-slavePING Dopo il comando, se non viene ricevuta alcuna risposta entro un certo numero di millisecondi, verrà contrassegnato comeS_DOWN Stato (soggettivamente offline).

Quanti millisecondi configurare

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

Il valore predefinito è 30 secondi, se non si riesce a rispondere entro questo tempo,SentinelVerrà ulteriormente valutato se sia necessario attivare un processo di failover.

2.15 utente

da Redis 6.2 Start, supporto della modalità SentinelACLelenco di controllo degli accessi), è possibile configurare il nodo master-slave ACL Nome utente e autorizzazioni.

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

Descrizione dei parametri nell'esempio:

  • >ffa9203c493aa99 è la password dell'utente
  • +@admin、+@connectionmezzi dati all'utente worker Accesso a determinati set di comandi
  • ~* Rappresenta l'accesso a tutte le chiavi
  • on Indica che queste autorizzazioni sono effettive su tutti i database

2.16 acllog-max-len

Configurazione ACL La lunghezza massima della voce del log.

acllog-max-len 128
  • 1

ACL Monitoraggio del registro eACL (Elenco controllo accessi) relativi a comandi non riusciti ed eventi di autenticazione.Per l'indagineACL I comandi falliti bloccati sono molto utili.ACL I registri vengono archiviati in memoria e possono essere utilizzatiACL LOG RESET comando per recuperare la memoria.

Regolando la lunghezza massima delle voci del registro, è possibile controllare la quantità di memoria occupata dal registro e liberare memoria reimpostando il registro quando necessario.Questo è utile per il mantenimentoRedis Le prestazioni e la sicurezza del server sono importanti perché aiutano gli amministratori a rilevare e risolvere potenziali problemi di controllo degli accessi in modo tempestivo.

2.17 file acl

tranne che in sentinel.conf Oltre a configurare gli utenti nei file, è possibile configurare un utente esternamenteACL file, questi due metodi non possono essere mischiati altrimenti il ​​server rifiuterà di avviarsi.

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

esterno ACL Il formato del file èredis.conf Il formato utilizzato nel file è esattamente lo stesso.

2.18 richiedipassa

Configurazione Sentinel La password stessa deve essere verificata, dopo la configurazioneSentineCercherò di usare la stessa password di tutti gli altri Sentinel Autenticare.

requirepass <password>
  • 1

E aclfile configurazione eACL LOAD I comandi sono incompatibili, causanorequirepass essere ignorato.

2.19 sentinel sentinel-user、sentinel sentinel-pass

Configurazione Sentinel con altriSentinel Nome utente e password per l'autenticazione.

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

se non configurato sentinel-user , useràdefault utenti esentinel-pass Autenticare.

2.20 sincronizzazioni parallele sentinella

controllare quando Redis Sentinel Quando viene rilevato un guasto del nodo master ed è richiesto un failover, a quanti nodi slave è consentito tentare di sincronizzarsi con il nuovo nodo master contemporaneamente. Lo scopo è bilanciare la velocità di sincronizzazione del nuovo nodo primario con l'utilizzo delle risorse di rete durante il processo di failover.

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

Durante il processo di failover, il nuovo nodo master eletto inizierà ad accettare operazioni di scrittura e gli altri nodi slave dovranno sincronizzarsi con il nuovo nodo master per aggiornare i propri set di dati. Se tutti i nodi slave iniziano a sincronizzarsi contemporaneamente, ciò potrebbe comportare un carico notevole sulla rete e sul nuovo nodo master.

2.21 timeout del failover della sentinella

Specifica il timeout del failover in millisecondi, il valore predefinito è 3 minuti (es.180000 millisecondo).

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

Se entro il tempo specificato,Sentinel Se non è possibile completare tutti i passaggi necessari per il failover (come la scelta di un nuovo nodo master, l'aggiornamento della configurazione di replica del nodo slave, ecc.), l'operazione di failover verrà considerata non riuscita.

2.22 script di notifica sentinella

Consente all'utente di specificare uno script quando Sentinel Il nodo rileva qualche evento importante (es.Redis Quando un'istanza riscontra un errore soggettivo o oggettivo, ecc.), questo script verrà richiamato automaticamente per avvisare l'amministratore di sistema o eseguire la gestione automatizzata degli errori.

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

per chiunque sia dentro WARNING livello generatoSentinel evento (ad esempio,-sdown-odown ecc.), richiamare lo script di notifica specificato.Questo script dovrebbe avvisare l'amministratore di sistema tramite e-mail, SMS o qualsiasi altro sistema di messaggistica monitoratoRedis C'è un problema con il sistema.

Esempio:

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

L'esempio sopra mostra che per un file denominato mymaster del server principale, quandoWARNING evento di livello,Sentinel chiamerà/var/redis/notify.sh script, passandogli il tipo di evento e la descrizione dell'evento come parametri.

Il tempo di esecuzione massimo per gli script di notifica e altri script è 60 secondi, dopo aver raggiunto questo limite, lo script passeràSIGKILL Il segnale termina e tenta di nuovo l'esecuzione. L'esecuzione dello script segue le seguenti regole di gestione degli errori:

  • Se lo script termina con "1” per uscire, l'esecuzione verrà ritentata in seguito (il numero massimo di tentativi è attualmente impostato su10Di seconda categoria).
  • Se lo script termina con "2" (o superiore), l'esecuzione dello script non verrà ritentata.
  • Se lo script termina a causa della ricezione di un segnale, il suo comportamento e il codice di uscita lo saranno1Contemporaneamente.

2.23 script di riconfigurazione del client sentinel

Consente all'utente di specificare uno script, in Sentinel Questo script viene richiamato automaticamente al termine del failover di un nodo master. Questo script può eseguire le operazioni necessarie per notificare ai client che la configurazione è stata modificata.

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

Le funzioni principali di questo script solitamente includono:

  • Aggiorna la configurazione del client in modo che possa connettersi al nuovo nodo master.
  • Esegui alcune operazioni di pulizia, come l'eliminazione delle configurazioni o delle risorse correlate del vecchio nodo master.
  • Invia una notifica o un avviso per informare l'amministratore di sistema che il failover è completo.

Quando SentineChiamo sentinel client-reconfig-script Quando si specifica uno script, una serie di parametri vengono passati allo script. Questi parametri contengono informazioni sui risultati del failover, in genere tra cui:

  • : Il nome del nodo master.
  • : il ruolo del nuovo nodo master.
  • : lo stato o il risultato del failover.
  • : del vecchio nodo master IP indirizzo.
  • : Il numero di porta del vecchio nodo master.
  • : del nuovo nodo master IP indirizzo.
  • : Il numero di porta del nuovo nodo master.

Esempio:

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

L'esempio sopra mostra che quando il nome è mymaster Quando il server primario viene modificato a causa di un failover,Sentinel chiamerà/var/redis/reconfig.sh script, passandogli il nome, il ruolo, lo stato del server master e quello del server master originaleIP e porta, nuovo server principaleIP e parametri della porta.

2.24 sentinel nega-script-reconfig

Utilizzato per controllare se consentire il passaggio SENTINEL SET Modifica del comandonotification-script Eclient-reconfig-script configurazione.

sentinel deny-scripts-reconfig yes
  • 1

Impostato come yes (impostazione predefinita), indicando che il sorpasso è vietatoSENTINEL SET I comandi per modificare le configurazioni degli script aiutano ad aumentare la sicurezza del sistema e prevenire modifiche non autorizzate.

2.25 sentinel nega-script-reconfig

Rinominare il comando (deprecato).

SENTINEL rename-command mymaster CONFIG GUESSME
  • 1

2.26 SENTINEL resolve-hostnames

Generalmente Sentinel Utilizza solo indirizzi IP e richiediSENTINEL MONITOR specificare aIP indirizzo.Inoltre, richiedeRedis Direplica-announce-ip Specificare soloIP indirizzo.

Può essere abilitato da resolve-hostnames per supportare i nomi host (hostname), Sentinel proverà a risolvere il nome host invece di usarlo direttamenteIP indirizzo da identificareRedis Esempio.

SENTINEL resolve-hostnames no
  • 1

Tieni presente che devi assicurarti che il tuo DNS configurato correttamente eDNS L'analisi non introduce ritardi molto lunghi.Quando si utilizzano distribuzioni containerizzate comeDocker OKubernetes), E Redis esempioIP L'indirizzo può cambiare, abilitareSENTINEL resolve-hostnames Potrebbe essere una buona soluzione

2.27 Nomi host di annuncio SENTINEL

Utilizzato per controllare se Sentinel utilizza il nome host (hostnames) invece di IP indirizzo.

SENTINEL announce-hostnames no
  • 1

Quando abilitato resolve-hostnames ora,Sentinel Ancora utilizzato quando si espongono le istanze a utenti, profili, ecc.IP indirizzo.Quando questa opzione è impostata suno Quando Sentinel pubblica una notifica di modifica del nodo master-slave o altre informazioni correlate, utilizzeràIP indirizzo invece del nome host.

2.28 SENTINEL master-reboot-down-dopo-il-periodo

Configura il numero di millisecondi che la sentinella deve attendere prima di considerare il nodo master temporaneamente irraggiungibile a causa di un riavvio. Ciò è utile per gestire la necessità di riavvio a causa di manutenzione o aggiornamenti del sistema. Redis Ciò è particolarmente utile negli scenari server.

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

In determinate situazioni, come riavvii del sistema o brevi problemi di rete,Redis Il server potrebbe essere temporaneamente irraggiungibile anziché effettivamente malfunzionante.Questa configurazione specificaSentinel Il periodo di tempo da attendere prima di contrassegnare il server master come oggettivamente offline.