一、redis主从安装
1. 下载redis
Download | 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节点。