Redis 主从模式,哨兵模式,集群模式实践(1)-在腾讯云服务器搭建一个redis主从模式

247 阅读3分钟

前言: 腾讯云服务器可以直接用宝塔登陆,在软件商店里面可以直接安装redis,本文实践全部基于redis 7.0.5版本 以下是我要搭建的主从架构:

6080是主节点,可读可写,6081,6082,6083是三个从节点

whiteboard_exported_image.png

主从搭建流程

  1. 创建redis-cluster文件夹,将redis.conf文件拷贝4份到redis-cluster中,并修改文件的名称分别为redis_6380.conf,redis_6381.conf,redis_6382.conf,redis_6383.conf
  2. conf文件的修改
# (1)设置允许外部ip访问,需要注释掉bind配置,并关掉保护模式
# bind 127.0.0.1 -::1
protected-mode no

# (2)修改端口号
port 6380

# (3)修改为以守护进程模式后台运行
daemonize yes

# (4)修改pid文件名,以守护进程运行的时候,会产生pid文件,默认位置为 /run/redis.pid 
# 因为这里在同一台机器上运行多个实例,所以需要指定
pidfile /www/server/redis/redis-cluster/redis_6380.pid 

# (5)修改日志文件位置
logfile "/www/server/redis/redis-cluster/redis_6380.log"

# (6)修改rdb快照文件位置
dir /www/server/redis/redis-cluster
dbfilename dump_6380.rdb

# (7)修改主节点地址,从节点文件需要设置,主节点不用设置
replicaof 152.136.197.37 6380
#(8)设置从节点连接主节点的密码,xxx为redis的登陆密码,从节点需要设置,主节点不需要设置
masterauth xxxx

image.png

主从模式验证

1. 分别启动四个redis-server服务

[lighthouse@VM-16-10-centos redis-cluster]$ redis-server redis_6380.conf 
[lighthouse@VM-16-10-centos redis-cluster]$ redis-server redis_6381.conf 
[lighthouse@VM-16-10-centos redis-cluster]$ redis-server redis_6382.conf 
[lighthouse@VM-16-10-centos redis-cluster]$ redis-server redis_6383.conf 

2. 登陆主节点

[lighthouse@VM-16-10-centos redis-cluster]$ redis-cli -p 6380

3. 执行auth xxx命令,如果不执行会报错,显示没有权限

image.png

4. 查看主从状态

127.0.0.1:6380> info replication

以下,表示创建成功! image.png 备注:我的6082节点一直创建不成功,查看日志之后发现报错如下

Master does not understand REPLCONF listening-port: -NOAUTH Authentication require,这种情况有可能是端口占用导致,可以先确认该端口是否有被占用,如果被占用,则kill掉,重启服务,再观察,也有可能是没有添加masterauth导致的

5. 验证主从的写入和读取

image.png 主节点可读可写,从节点只读

主从模式master宕机之后操作

1. 在6380的节点执行shutdown

image.png 此时整个服务已经不可写入了!

2.将6381节点升为主节点,6382,6383是6381的从节点

1. 修改redis_6381.conf 删除replicaof 152.136.197.37 6380和masterauth xxxx
2. 修改6382.conf和6383.conf,将replicaof 后6380端口号改为6381
3. 重启redis
1. 6381的节点执行slaveof no one 
2. 6382,6383执行slaveof 152.136.197.37 6381

可以看到6381已经升级为主节点,6382,6383是6381的主节点

image.png

碎碎念:此时按照搭建的流程,去修改对应的conf文件,再重启服务,发现没有设置成功,只有用命令才有效,具体原因未知!

从这次实践中,可以看到主从模式如果主节点挂掉,整个服务将变得不可写,需要运维或研发手动去执行命令,升级主节点,时效性,准确性都难以保证

此处,第一次set进入的数仍在节点中 image.png

此时重启6380的机器,发现test1的值仍然也在,因为我们开启了RDB持久化

image.png

以上,请多多指教!

参考链接:blog.csdn.net/Wei_Naijia/…