Redis集群搭建
笔记:记录Redis集群搭建,伪集群示例
修改配置
将Redis配置文件复制几份,集群有几个节点就复制几份,修改以下配置,将每个节点的以下配置中的所有的6379,替换为此节点的端口号(如果集群不在一个机器上则忽略),为了不让生成的RDB等数据文件名字冲突和端口冲突。
# 将bind这一行注释掉,或者修改为0:0:0:0,这表示任意地址都可以连接此Redis服务
# bind 127.0.0.1
# 关闭保护模式,如果开启的话,外部服务就连不上Redis
protected-mode no
# 配置redis的端口号
port 6379
# 以守护进程运行(后台运行redis)
daemonize yes
# 服务启动后记录线程号的文件
pidfile "/var/run/redis_6379.pid"
# 日志文件名字
logfile "6379.log"
# 数据库的个数
databases 16
# 设置数据保存到数据文件中的save规则,3600秒内修改1次key,进行一次磁盘保存操作
save 3600 1
save 300 100
save 60 10000
# 指定存储至本地数据库时是否压缩数据,默认是yes,redis采用LZF压缩,需要消耗CPU资源
rdbcompression yes
# 保存rdb文件时,是否对rdb文件进行校验
rdbchecksum yes
# 保存数据的文件名字
dbfilename "dump6379.rdb"
# 数据保存路径,是一个目录,这个目录需要提前创建出来
dir "/opt/apps/redis"
# 是否开启aof,指出是否在每次更新操作后进行日志记录,如果不开启,
# 可能会在断电时导致一段时间内的数据丢失,
# 因为redis本身同步数据文件是按上面的save条件来同步的,
# 所以有的数据会在一段时间内只存在于内存中
appendonly yes
# aof文件名字
appendfilename "appendonly6379.aof"
# 集群配置文件,自动生成,不能人为维护
cluster-config-file "nodes-6379.conf"
节点规划
节点 | 类型 | 端口 |
---|---|---|
redis6379 | 主(master) | 6379 |
redis6380 | 从(slave1) | 6380 |
redis6381 | 从(slave2) | 6381 |
根据规划,将上面的配置复制三份,分别是redis6379.conf
、redis6380.conf
、redis6381.conf
,把文件里面的6379
,分别改成:6379
、6380
、6381
启动集群
执行以下命令,启动集群的三个节点,启动之后,可以查看Redis进程
redis-server redis6379.conf
redis-server redis6380.conf
redis-server redis6381.conf
使用客户端redis-cli连接Redis:
redis-cli -p 6379
redis-cli -p 6380
redis-cli -p 6381
因为规划的是redis6380
和redis6381
节点是从
节点,所以要让从
节点跟随主
节点。在 redis6380
和 redis6381
节点上,执行SLAVEOF 127.0.0.1 6379
命令,让它们作为 redis6379
的从节点
# 在redis6380上执行
127.0.0.1:6380> SLAVEOF 127.0.0.1 6379
OK Already connected to specified master
# 在redis6381上执行
127.0.0.1:6381> SLAVEOF 127.0.0.1 6379
OK Already connected to specified master
然后在主节点或者从节点上执行info replication
命令可以查看状态,出现以下信息即表示成功:
主节点查看:
从节点查看:
哨兵(Sentinel)模式
创建一个文件sentinel.conf
,加入以下内容(也可以在此配置文件中加入其他配置)
sentinel monitor myredis 127.0.0.1 6379 1
然后执行redis-sentinel sentinel.conf
命令启动哨兵,此时,如果redis6379
主节点挂了,哨兵节点会选择新的主节点。
测试将主节点shutdown,稍等几秒,哨兵会在从节点中重新选择新的主节点:
-
原主节点:
-
哨兵
-
新主节点
redis6381 节点被选为新的主节点,如果redis6379再次连接上,那他也是redis6381的从节点;