Table of Contents
1. What is Redis sentinel?
2. What can sentinel do?
3. Start sentinel method
4. Sentinel workflow
5. Summary
Home Database Redis A brief analysis of the principle of sentry mode in Redis

A brief analysis of the principle of sentry mode in Redis

Jan 25, 2022 am 10:36 AM
redis

This article will give you an in-depth understanding of the principles of the Redis sentinel mode, talk about what sentinel can do, start the sentinel method and the Sentinel workflow. I hope it will be helpful to everyone!

A brief analysis of the principle of sentry mode in Redis

The above introduces the principle of Redis master-slave replication. It solves the problem of Redis data backup. The master node cannot be automatically elected after a failure. The new master node requires manual setting of the slave node as the master node, which is inefficient and cannot achieve automatic failover. Redis officially provides a high-availability solution Sentinel.

1. What is Redis sentinel?

Redis Sentinel is the official high availability solution for Redis. Redis Sentinel provides high availability for Redis. In practice, this means that using Sentinel you can create a Redis cluster that is resistant to certain types of failures and automatically implements failover without human intervention. [Related recommendations: Redis Video Tutorial]

2. What can sentinel do?

1. Monitor the health status of the redis cluster node (master replica) and sentinel node

2. Automatic failover: If the master fails, sentinel can implement failover and notify the customer Connect to the new master.

3. Notification: Through the API, notifications can be sent to administrators and developers. The monitored redis instance has failed

4. Configuration center: The client is connected to sentinel, and sentinel can access it. The master returns the node information to the client

3. Start sentinel method

1. redis-sentinel /path/to/sentinel.conf

2. redis-server /path/to/sentinel.conf --sentinel

sentinel.conf configuration instructions are as follows

# 配置需要监控的master节点信息 2代表法定人数 作用是表示需要最少需要多少个sentinel节点同意
#master节点不可达才标记为客观下线
#举例 5个sentinel实例 quorum设置成2 那么有2个sentinel节点认为master不可达,
#则其中一个会启动故障转移#如果至少有三个哨兵可到达,故障转移将被授权并实际启动。
sentinel monitor mymaster 127.0.0.1 6379 2 
#只需要配置master sentinel会自动检测slave信息
sentinel down-after-milliseconds mymaster 60000 
#如果master在指定时间内没有响应ping命令/或报错,则认为主观下线了。
sentinel failover-timeout mymaster 180000
sentinel parallel-syncs mymaster 1 
#指定故障转移的时候,同时支持多少个replica并行的与master同步数据,越小故障转移越久
#以上配置可以通过SENTINEL SET command.来实时修改。
sentinel monitor resque 192.168.1.3 6380 4
sentinel down-after-milliseconds resque 10000
sentinel failover-timeout resque 180000
sentinel parallel-syncs resque 5
Copy after login

Note:

Redis-sentinel must use configuration File startup, restart needs to be restored according to the configuration file, port 26379 is opened by default, and port access must be open between sentinels to facilitate mutual access.

4. Sentinel workflow

1. First, dynamic perception is achieved between sentinels through the pub/subscribe mechanism of redis.

A brief analysis of the principle of sentry mode in Redis

#2. How does sentinel sense that the master has died?

There are two situations here, one is when the master goes offline subjectively, and the other is when the master goes offline objectively.

Subjective offline: Each sentinel sends a ping command to the master every 1s. If the master does not respond within down-after-milliseconds, the sentinel node considers the master to be offline subjectively.

A brief analysis of the principle of sentry mode in Redis

Objective offline:

When the node that is subjectively offline is the master node, the sentinel node will pass the command sentinel is- masterdown-by-addr seeks the judgment of other sentinel nodes on the master node. When the number of quorum (the quorum configured in the sentinel configuration) is exceeded, the sentinel node will think that there is indeed a problem with the master node, which is objective. It is offline. Most of the sentinel nodes agree to the offline operation, which means it is objectively offline.

Note that objective offline only takes effect for the master node, it will trigger failover

3, the master is offline, and failover is required

This is divided into two steps , first you need to select the sentinel master node, and perform redis failover through the sentinel master node.

First, sentinel elects the leader. Use the raft algorithm (state consensus algorithm).

Each Sentinel node can become a Leader. When a Sentinel node confirms that the master node of the redis cluster is subjectively offline, it will request other Sentinel nodes to elect itself as the Leader. If the requested Sentinel node has not agreed to the election request of other Sentinel nodes, it agrees to the request (the number of election votes is 1), otherwise it does not agree.

If the number of election votes obtained by a Sentinel node reaches the minimum number of votes for the Leader (the maximum value of quorum and the number of Sentinel nodes/2 1), the Sentinel node is elected as the Leader; otherwise, the election is repeated.

Core idea of ​​Raft: First come, first served, the minority obeys the majority.

After sentinel elects the master node, the sentinel master node needs to elect the redis cluster master node to build a new cluster relationship.

The basis for electing a new redis master node is:

1. The time to disconnect from sentinel. Filter the replica slaves

2 and replica priority found to be disconnected from the main sentinel server for more than the configured host timeout time down-after-milliseconds. Give priority to those with low replica-priority.

3. If the priorities are the same, the copy offset has been processed. The larger the value, the higher the priority, which is more in line with the business scenario function.

4. If the copy offsets are the same, look at the running ID. Prefer small ones.

After selecting the master node, start maintaining the cluster relationship.

1. Sentinel node, send slave no one command to the new master node to make it an independent node

2. Sentinel node, send slaveof ip port to other nodes, follow it to the master node

5. Summary

Through the above analysis, sentinel can achieve automatic failover through regular monitoring methods. However, sentinel still has some problems, such as the situation of a single master node. Under this situation, there is a possibility of data loss, and if the performance of a single machine is limited, there is no ability to expand horizontally.

For more programming-related knowledge, please visit: Introduction to Programming! !

The above is the detailed content of A brief analysis of the principle of sentry mode in Redis. For more information, please follow other related articles on the PHP Chinese website!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
4 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Best Graphic Settings
4 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. How to Fix Audio if You Can't Hear Anyone
4 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: How To Unlock Everything In MyRise
1 months ago By 尊渡假赌尊渡假赌尊渡假赌

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

How to build the redis cluster mode How to build the redis cluster mode Apr 10, 2025 pm 10:15 PM

Redis cluster mode deploys Redis instances to multiple servers through sharding, improving scalability and availability. The construction steps are as follows: Create odd Redis instances with different ports; Create 3 sentinel instances, monitor Redis instances and failover; configure sentinel configuration files, add monitoring Redis instance information and failover settings; configure Redis instance configuration files, enable cluster mode and specify the cluster information file path; create nodes.conf file, containing information of each Redis instance; start the cluster, execute the create command to create a cluster and specify the number of replicas; log in to the cluster to execute the CLUSTER INFO command to verify the cluster status; make

How to use the redis command How to use the redis command Apr 10, 2025 pm 08:45 PM

Using the Redis directive requires the following steps: Open the Redis client. Enter the command (verb key value). Provides the required parameters (varies from instruction to instruction). Press Enter to execute the command. Redis returns a response indicating the result of the operation (usually OK or -ERR).

How to start the server with redis How to start the server with redis Apr 10, 2025 pm 08:12 PM

The steps to start a Redis server include: Install Redis according to the operating system. Start the Redis service via redis-server (Linux/macOS) or redis-server.exe (Windows). Use the redis-cli ping (Linux/macOS) or redis-cli.exe ping (Windows) command to check the service status. Use a Redis client, such as redis-cli, Python, or Node.js, to access the server.

How to implement the underlying redis How to implement the underlying redis Apr 10, 2025 pm 07:21 PM

Redis uses hash tables to store data and supports data structures such as strings, lists, hash tables, collections and ordered collections. Redis persists data through snapshots (RDB) and append write-only (AOF) mechanisms. Redis uses master-slave replication to improve data availability. Redis uses a single-threaded event loop to handle connections and commands to ensure data atomicity and consistency. Redis sets the expiration time for the key and uses the lazy delete mechanism to delete the expiration key.

How to read redis queue How to read redis queue Apr 10, 2025 pm 10:12 PM

To read a queue from Redis, you need to get the queue name, read the elements using the LPOP command, and process the empty queue. The specific steps are as follows: Get the queue name: name it with the prefix of "queue:" such as "queue:my-queue". Use the LPOP command: Eject the element from the head of the queue and return its value, such as LPOP queue:my-queue. Processing empty queues: If the queue is empty, LPOP returns nil, and you can check whether the queue exists before reading the element.

How to read the source code of redis How to read the source code of redis Apr 10, 2025 pm 08:27 PM

The best way to understand Redis source code is to go step by step: get familiar with the basics of Redis. Select a specific module or function as the starting point. Start with the entry point of the module or function and view the code line by line. View the code through the function call chain. Be familiar with the underlying data structures used by Redis. Identify the algorithm used by Redis.

How to use redis lock How to use redis lock Apr 10, 2025 pm 08:39 PM

Using Redis to lock operations requires obtaining the lock through the SETNX command, and then using the EXPIRE command to set the expiration time. The specific steps are: (1) Use the SETNX command to try to set a key-value pair; (2) Use the EXPIRE command to set the expiration time for the lock; (3) Use the DEL command to delete the lock when the lock is no longer needed.

How to clear redis data How to clear redis data Apr 10, 2025 pm 10:06 PM

How to clear Redis data: Use the FLUSHALL command to clear all key values. Use the FLUSHDB command to clear the key value of the currently selected database. Use SELECT to switch databases, and then use FLUSHDB to clear multiple databases. Use the DEL command to delete a specific key. Use the redis-cli tool to clear the data.

See all articles