redis主从+哨兵+集群模式搭建详解

一、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已经同步完成。

redis主从+哨兵+集群模式搭建详解_第1张图片

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 查看

redis主从+哨兵+集群模式搭建详解_第2张图片

 主节点node1中设置set name jack

从节点可以get name

 从节点只能读不能写

 7. 注意

  • 主节点可以写,从节点不能写,只能读。主节点中的所有数据都会保存到从节点中去。
  • 主节点断开连接,从节点依旧连接到主节点的,但是没有写操作,这个时候,主节点如果回来了,从节点依旧可以直接获取到主节点写的信息!
  • 如果是使用命令行,来配置的主从,这个时候如果重启了,就会变回主节点!只要变为从节点,立马就会从主节点中获取值!

8. 主从复制原理

  • Slave 启动成功连接到 master 后会发送一个sync同步命令。
  • Master 接到命令,启动后台的存盘进程,同时收集所有接收到的用于修改数据集命令,在后台进程执行完毕之后,master将传送整个数据文件到slave,并完成一次完全同步。
  • 全量复制: slave服务在接收到数据库文件数据后,将其存盘并加载到内存中。
  • 增量复制: Master 继续将新的所有收集到的修改命令依次传给slave,完成同步,但是只要是重新连接master,一次完全同步(全量复制)将被自动执行! 主节点的数据一定可以在从节点中看到。
     

二、 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

redis主从+哨兵+集群模式搭建详解_第3张图片

4. 查看sentinel信息

 5. Redis 容灾切换模拟

将node1 redis服务停掉

可以看到redis-master的状态先变成down,然后重新选择一个master,192.168.157.130成为新的主节点

redis主从+哨兵+集群模式搭建详解_第4张图片

 重新启动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 是密码

创建完成的打印信息 

redis主从+哨兵+集群模式搭建详解_第5张图片

5. 查看集群信息

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

 存数据和取数据都会告诉你在哪个槽哪个服务上

当我们手动停掉一个master时,会重新选一个master,而那个停掉的master重新启动后成为slave节点。

redis主从+哨兵+集群模式搭建详解_第6张图片 至此集群搭建完成。

你可能感兴趣的:(集群搭建,redis,数据库,java)