笔记:记录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.conf
,加入以下内容(也可以在此配置文件中加入其他配置)
sentinel monitor myredis 127.0.0.1 6379 1
然后执行redis-sentinel sentinel.conf
命令启动哨兵,此时,如果redis6379
主节点挂了,哨兵节点会选择新的主节点。
测试将主节点shutdown,稍等几秒,哨兵会在从节点中重新选择新的主节点:
原主节点:
哨兵
新主节点
redis6381 节点被选为新的主节点,如果redis6379再次连接上,那他也是redis6381的从节点;