一、redis主从安装
1. 下载redis
我这里选择的是redis-6.2.7版本
这里三台机器,都需要安装redis
node1 192.168.157.128
node2 192.168.157.129
node3 192.168.157.130
2. 安装redis
- # 解压redis
- tar -zxvf redis-6.2.7.tar.gz
- # 编译安装
- cd redis-6.2.7
- make
3. 修改配置
node1 主 node2 node3从
node1 redis.conf
- bind 192.168.157.128
- port 6379
- daemonize yes
- logfile ./logs/redis_6379.log
- pidfile ./pid/redis_6379.pid
- requirepass 123456
- masterauth 123456
node2
- bind 192.168.157.129
- port 6379
- daemonize yes
- logfile ./logs/redis_6379.log
- pidfile ./pid/redis_6379.pid
- replicaof 192.168.157.128 6379
- requirepass 123456
- masterauth 123456
node3
- bind 192.168.157.130
- port 6379
- daemonize yes
- logfile ./logs/redis_6379.log
- pidfile ./pid/redis_6379.pid
- replicaof 192.168.157.128 6379
- requirepass 123456
- masterauth 123456
4. 相关解释
bind 为当前主机的地址
port 为redis启动的端口
daemonize 是否为后台启动,默认为no
logfile 日志路径
pidfile pid路径
replicaof 主节点ip port
requirepass redis的密码
masterauth 主节点密码
5. 启动redis
- # 在redis.conf文件目录下
- ./src/redis-server redis.conf
查看日志文件输出,可以看到129和130已经同步完成。

6. 测试
在node1的redis中存数据,查看node2,node3中是否存在。
使用redis-cli 连接redis
- # h 主机地址 p 端口号 a 密码
- redis-cli -h 192.168.157.128 -p 6379 -a 123456
- # 也可以进入之后使用auth 123456 来认证
- redis-cli -h 192.168.157.128 -p 6379
- auth 123456
从节点输入命令 info replication 查看

主节点node1中设置set name jack
![]()
从节点可以get name
![]()
从节点只能读不能写

7. 注意
8. 主从复制原理
二、 Redis 哨兵模式
1. 配置sentinel.conf文件
- port 26379
- protected-mode no
- daemonize yes
- logfile ./logs/sentinel.log
- sentinel monitor redis-master 192.168.157.128 6379 2
- sentinel auth-pass redis-master 123456
- sentinel down-after-milliseconds redis-master 3000
- sentinel failover-timeout redis-master 180000
port 哨兵模式的端口号
protected-mode 保护模式,外部是否可以访问,这是设置为no,外部可以访问
daemonize 设置后台启动
logfile 日志文件
sentinel monitor 执行服务器ip和端口,并且指定当有2台哨兵认为主节点挂了,则对主节点进行容灾切换
sentinel auth-pass 主节点对应的密码
sentinel down-after-milliseconds 主节点多久每反应则认为挂了
sentinel failover-timeout 故障转移超时时间(毫秒)
2. 分别启动三台服务器上的哨兵
- # 在sentinel.conf目录下,启动哨兵
- ./src/redis-sentinel sentinel.conf
3. 查看sentinel.log日志
可以看到启动成功,并且成功监听 master

4. 查看sentinel信息

5. Redis 容灾切换模拟
将node1 redis服务停掉
可以看到redis-master的状态先变成down,然后重新选择一个master,192.168.157.130成为新的主节点

重新启动192.168.157.128节点的redis,查看sentinel.log信息,可以看到此时128节点的redis变成了slave 从节点了。

三、redis集群模式
这里选择每台机器启动两个redis服务,端口分别为7001和7002
1. 准备redis工作目录
- #创建redis01 redis02目录
- mkdir redis01 redis02
- #将redis复制到redis01和redis02下
- cp -R redis-6.2.7/ redis01/
- cp -R redis-6.2.7/ redis02/
- #删除rdb文件
- rm -rf redis01/dump.rdb
- rm -rf redis02/dump.rdb
2. 修改配置
redis.conf
- bind 192.168.157.129
- port 7001
- daemonize yes
- logfile "./logs/redis_7001.log"
- pidfile "./pid/redis_7001.pid"
- requirepass "123456"
- masterauth "123456"
- dir "/opt/apps/redis01/data"
- cluster-enabled yes
- cluster-node-timeout 10100
- appendonly yes
主要增加了cluster-enabled yes 这个配置,表示开启集群
3. 启动每个redis
./src/redis-server redis.conf
4. 创建redis集群
在任意一台机器上执行创建集群命令
- ./src/redis-cli --cluster create \
- 192.168.157.128:7001 192.168.157.128:7002 \
- 192.168.157.129:7001 192.168.157.129:7002 \
- 192.168.157.130:7001 192.168.157.130:7002 \
- --cluster-replicas 1 -a 123456
--cluster-replicas 1 表示一主一从
-a 是密码
创建完成的打印信息

5. 查看集群信息
- #连接 -c 以集群模式连接
- ./src/redis-cli -h 192.168.157.128 -c -p 7001 -a 123456
- #查看节点信息
- cluster nodes

存数据和取数据都会告诉你在哪个槽哪个服务上
当我们手动停掉一个master时,会重新选一个master,而那个停掉的master重新启动后成为slave节点。
至此集群搭建完成。