Redis 集群详解及搭建过程

news/2024/11/8 12:16:56/

1. 引言

   从3.0版本开始,redis具备了集群功能,实现了分布式、容错、去中心化等特性,在生产环境中对于保证数据一致性和安全性、提高系统响应能力都有着很必要的意义。 本文我们就来介绍 redis 集群的三种搭建模式和搭建方法。
目前Redis 7.0对其管理的几乎每个子系统都进行了多项改进,包括内存、计算、网络和存储

 详见:Releases · redis/redis · GitHub

1.1. redis 集群的特性

redis 集群的目标是线性可扩展性和保证最终一致性,因此,redis 集群不存在中心节点或代理节点。 同时,一致性的保证是建立在一部分容错性牺牲的基础上的,系统通过主从节点的模式在保证对节点失效具有有限抵抗力的前提下,尽可能保证数据的一致性。 redis 集群实现了节点的自动发现、master 的自动选举、热分片、ASK 转向和 MOVED 转向等机制。 可以参考官方文档: https://redis.io/topics/cluster-tutorial。

1.2. 集群端口

无论是哪种模式的 redis 集群,都需要指定服务端口(默认为 6379),但 redis 实际上是通过服务端口 + 10000 的端口来进行数据同步的。 因此,如果集群无法建立或同步无法进行,除了需要考虑服务端口是否连通以外,还需要检测同步端口的可用性

2. 集群

 2.1 主从模式集群

  1. 概念
     主从复制模型中,有多个redis节点。 其中,有且仅有一个为主节点Master。从节点Slave可以有多个。只要网络连接正常,Master会一直将自己的数据更新同步给Slaves,保持主从同步 。

     优点:读写分离,将Redis读操作分摊到多个节点,大大提高redis服务器的并发量
   缺点:不支持容错,master宕机后没有可写节点,可能会数据丢失,较难支持扩容

2.3.1 准备服务器(最少俩台,都安装redis)192.168.10.10 master        192.168.10.11 slave192.168.10.13 slave2.3.2 修改redis配置文件master    redis.confbind 192.168.10.10        #绑定地址port 6379daemonize yes             #后台启动protected-mode yes        #打开保护模式appendonly yes            #开启AOF持久化存储requirepass 123           #启用密码认证pidfile /usr/local/redis-6379/logs/redis-6379.pidlogfile /usr/local/redis-6379/logs/redis.logdirmasterauto 123slave1  redis.confbind 192.168.10.11        #绑定地址port 6379daemonize yes             #后台启动protected-mode yes        #打开保护模式appendonly yes            #开启AOF持久化存储requirepass 123           #启用密码认证pidfile /usr/local/redis-6379/logs/redis-6379.pidlogfile /usr/local/redis-6379/logs/redis.logdirmasterauto 123            #master节点密码replicaof 192.168.10.10 6379       #定义master信息slave2  redis.confbind 192.168.10.13        #绑定地址port 6379daemonize yes             #后台启动protected-mode yes        #打开保护模式appendonly yes            #开启AOF持久化存储requirepass 123           #启用密码认证pidfile /usr/local/redis-6379/logs/redis-6379.pidlogfile /usr/local/redis-6379/logs/redis.logdirmasterauto 123            #master节点密码replicaof 192.168.50.10 6379       #定义master信息

2.2 Sentinel(哨兵集群)

  2.1 主从模式的缺陷
        当主节点宕机了,整个集群就没有可写的节点了。
由于从节点上备份了主节点的所有数据,那在主节点宕机的情况下,如果能够将从节点变成一个主节点,就可以解决这个问题了。这就是Sentinel哨兵的作用。 

 2.2 哨兵的任务
       Redis 的 Sentinel 系统用于管理多个 Redis 服务器(instance), 该系统执行以下三个任务:
监控(Monitoring): Sentinel 会不断地检查你的主服务器和从服务器是否运作正常。
提醒(Notification): 当被监控的某个 Redis 服务器出现问题时, Sentinel 可以通过 API 向管理员或者其他应用程序发送通知。
自动故障迁移(Automatic failover): 当一个主服务器不能正常工作时, Sentinel 会开始一次自动故障迁移操作, 它会将失效主服务器的其中一个从服务器升级为新的主服务器, 并让失效主服务器的其他从服务器改为复制新的主服务器; 当客户端试图连接失效的主服务器时, 集群也会向客户端返回新主服务器的地址, 使得集群可以使用新主服务器代替失效服务器。 

  2.2.1 监控(Monitoring)
         1.Sentinel可以监控任意多个Master和该Master下的Slaves。(即多个主从模式)
         2.同一个哨兵下的、不同主从模型,彼此之间相互独立。
         3.Sentinel会不断检查Master和Slaves是否正常。 

2.3 配置Sentinel
   1.在/usr/local目录下,创建/redis/sentinels/目录
mkdir -p sentinels
    2.在/sentinels目录下,以次创建s1、s2、s3三个子目录中
mkdir s1 s2 s3
    3.依次拷贝redis解压目录下的sentinel.conf文件,到这三个子目录中
cp -v /opt/soft/redis-3.2.9/sentinel.conf ./s1cp -v /opt/soft/redis-3.2.9/sentinel.conf ./s2cp -v /opt/soft/redis-3.2.9/sentinel.conf ./s3   4.依次修改s1、s2、s3子目录中的sentinel.conf文件,修改端口,并指定要监控的主节点。(从节点不需要指定,sentinel会自动识别)

3.Redis-cluster集群

 3.1 哨兵模式的缺陷
    在哨兵模式中,仍然只有一个Master节点。当并发写请求较大时,哨兵模式并不能缓解写压力。只有主节点才具有写能力,那如果在一个集群中,能够配置多个主节点,就可以缓解写压力了,这就是redis-cluster集群模式。

 3.2 Redis-cluster集群概念
1.由多个Redis服务器组成的分布式网络服务集群;
2.集群之中有多个Master主节点,每一个主节点都可读可写;
3.节点之间会互相通信,两两相连;
4.Redis集群无中心节点。

3.3 集群配置(Scaling with Redis Cluster | Redis)

1、Redis集群官方建议最好使用6个节点
本次搭建在一台主机上创建伪分布式集群,不同的端口表示不同的redis节点,如下:
主节点:192.168.58.1:7001 192.168.58.1:7002 192.168.58.1:7003
从节点:192.168.58.1:7004 192.168.58.1:7005 192.168.58.1:7006
 
2、在/usr/local/redis下创建redis-cluster目录,在其下创建7001、7002......7006目录,如下:

mkdir -p redis/redis-clustermkdir -v 7001 7002 7003 7004 7005 7006 

3、将redis解压路径下的配置文件redis.conf,依次拷贝到每个700X目录内,并修改每个700X目录下的redis.conf配置文件:
必选配置:

port 700X
bind ip(当前主机ip:192.168.xxx.xxx)
cluster-enabled yes (启动redis-cluster集群模式)


建议配置:

daemonized yes
logfile /usr/local/redis/redis-cluster/700X/node.log 

4、启动每个结点redis服务
依次以700X下的redis.conf,启动redis节点。(必须指定redis.conf文件)

cd 700x && redis-server ./redis.conf 

5 执行创建集群命令
进入到redis源码存放目录redis/redis-4.10.3/src下,执行redis-trib.rb,此脚本是ruby脚本,它依赖ruby环境。

./redis-trib.rb create --replicas 1 192.168.58.1:7001 192.168.58.1:7002 192.168.58.1:7003 192.168.58.1:7004 192.168.58.1:7005 192.168.58.1:7006

完成集群搭建


http://www.ppmy.cn/news/1158956.html

相关文章

uniapp-vue3-微信小程序-标签选择器wo-tag

采用uniapp-vue3实现, 是一款支持高度自定义的标签选择器组件&#xff0c;支持H5、微信小程序&#xff08;其他小程序未测试过&#xff0c;可自行尝试&#xff09; 可到插件市场下载尝试&#xff1a; https://ext.dcloud.net.cn/plugin?id14960 使用示例 <template>&…

MediaRecorder媒体录音机

权限&#xff1a; <uses-permission android:name"android.permission.RECORD_AUDIO"/> <uses-permission android:name"android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name"android.permission.READ_EXTE…

协同办公系统OA实施过程中需要注意的细节

随着企业对于高效、便捷的办公方式的需求增加&#xff0c;协同办公系统OA正逐渐成为企业信息化建设的热门选择。然而&#xff0c;协同办公系统OA的实施并非一蹴而就&#xff0c;需要企业在实施过程中注意一系列的细节。 一、规划与需求分析 企业应根据自身的业务需求和发展战略…

成绩查询页面和自助查询方式

科技发展让我们有更多的方式来发布和查询学生成绩。今天&#xff0c;我想向大家介绍什么是成绩查询页面&#xff0c;并分享如何通过各种代码和Excel来实现让学生自助查询成绩。 成绩查询页面是一个专门用来发布和查询学生成绩的网络页面。这个页面具有发布、查询、统计成绩等功…

现货黄金操作建议

如果您想得到更好的现货黄金操作建议&#xff0c;那就应该读读Jack Schwager的经典交易著作是《市场奇才&#xff1a;顶级交易者访谈》。这本书1989年首次出版&#xff0c;当中收录了对美国一些传奇交易者的访谈&#xff0c;当中的一些建议不但有用&#xff0c;而且经得起的时间…

Android versionCode会变成指定数值加001、002、003等后缀

“活久见”—今天遇到个奇怪的问题&#xff0c;指定的versionCode最终在打包出来的apk中,versionCode变成&#xff08;指定数值 00X的形式&#xff09; 如下所示&#xff1a; 注&#xff1a;当前build.gradle中的versionCode为26 后来搜索代码&#xff0c;发现原来是这个配置导…

设备上使用 Wi-Fi Settings 设置代理

在 Android 设备上使用 Wi-Fi Settings 设置代理的详细教程&#xff1a; 首先&#xff0c;打开您的 Android 设备的 "设置" 应用。 在设置菜单中&#xff0c;点击 "Wi-Fi" 选项。 确保您已经连接到一个 Wi-Fi 网络。如果没有连接&#xff0c;请点击 &quo…

微信查分,原来这么简单,老师必看攻略

哈喽&#xff0c;亲爱的老师们&#xff01;是不是经常为了查找学生的成绩而烦恼呢&#xff1f;别担心&#xff0c;今天我就来给大家分享一个超级实用的教程——在微信里查分&#xff01;快来一起了解一下吧&#xff01; 首先&#xff0c;我们要清楚成绩查询页面是什么。一般来说…