宝塔 liunx redis 设置读写分离主从复制 + 哨兵自动值守

1.主从概念

一个master可以拥有多个slave,一个slave又可以拥有多个slave。如此下去,形成了强大的多级服务器集群架构。
master用写数据,经统计:网站的读写比率是10:1
通过主从分离可以实现读写分离
master和slave都是一个redis实例(redis服务)

2.主从配置

## 主服务master ##
#1. 修改 master配置
进入你的redis安装目录 /www/server/redis/redis.conf
#2.修改bind为本机ip
bind your_ip


## 从服务slave配置 ##
#1.复制redis.conf 名为slave.conf
cp redis.conf slave.conf
#2.修改配置 修改bind为本机ip
bind your_ip
#3.更改端口 例如 
port 6378
#4. 输入命令启动从服务 :
/www/server/redis/src/redis-server /etc/redis/slave.conf 
#5. 更改slaveof(主从关系,因为刚添加的默认为主服务)
1. 输入命令:redis-cli -h 127.0.0.1 -p 6378 
2. 输入命令:slaveof your_ip 6379 //进入6378把6379修改为主服务

3.然后查看主从关系:

redis-cli -h your_ip -p your_port info Replication

redis 设置读写分离主从复制+哨兵自动值守

或者:

1. 执行命令:redis-cli -h 127.0.0.1 -p 6375
2. info Replication

redis 设置读写分离主从复制

redis 设置读写分离主从复制

4.Master节点设置key后异步同步到Slaver节点;Slaver节点只能读取数据,不能修改,从而形成了读写分离

redis 设置读写分离主从复制

5.使用哨兵模式,自动监视Master节点,当前主服务挂掉后,自动将Slaver节点变为Master节点

配置目录:/www/server/redis/sentinel.conf

#普通配置
#端口号
port 26379
#pid 文件
pidfile "/var/run/redis-sentinel2.pid"
#哨兵工作空间路径
dir /usr/local/redis/sentinel
#进程守护,允许后台运行
daemonize yes
#不开启模块保护,允许远程访问
protected-mode no
#日志存放位置
logfile "/www/server/redis/sentinel2.log"

#核心配置
# 配置哨兵,mymaster随意,至少给主节点定的昵称,注意配置一致即可
# 1表示配置哨兵,有1个哨兵作出决策,就有决策权
sentinel monitor mymaster 127.0.0.1 6379 1
# 密码
sentinel auth-pass <master-name> <password>
# master被sentinel认定为失效的间隔时间
sentinel down-after-milliseconds mymaster 30000
# 剩余的slaves重新和新的master做同步的并行个数
sentinel parallel-syncs mymaster 1
# 主备切换的超时时间,哨兵要去做故障转移,这个时候哨兵也是一个进程,如果他没有去执行,超过这个时间后,会由其他的哨兵来处理
sentinel failover-timeout mymaster 180000

6.执行命令启动哨兵:

/www/server/redis/src/redis-sentinel /www/server/redis/sentinel.conf

7.查看是否启动:

ps -ef|grep redis

redis 设置读写分离主从复制

8.然后手动杀死 6379 主服务:

kill -9 839513(你自己的进程id)

redis 设置读写分离主从复制

9. 1分钟或者几十秒后,接下来我们查看哨兵日志,选了从服务6377为主服务了

redis 设置读写分离主从复制

再执行命令查看:

redis-cli -h 127.0.0.1 -p 6375 info Replication

redis 设置读写分离主从复制

总结

  1. Master可读可写,Slaver只能读,不能写
  2. Master可以对应多个Slaver,但是数量越多压力越大,延迟就可能越严重
  3. Master写入后立即返回,几乎同时将写入异步同步到各个Slaver,所以基本上延迟可以忽略
  4. 可以通过slaveof no one命令将Slaver升级为Master(当Master挂掉时,手动将某个Slaver变为Master)
  5. 可以通过sentinel哨兵模式监控Master,当Master挂掉时自动选举Slaver变为Master,其它Slaver自动重连新的Master
本作品采用《CC 协议》,转载必须注明作者和本文链接
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!