anyuan2002.com - vwin网

查找: 您的方位主页 > 网络频道 > 阅览资讯:Redis Sentinel 架构装备!!!

Redis Sentinel 架构装备!!!

2019-04-04 07:05:04 来历:www.anyuan2002.com 【

之前咱们讲了主从仿制,能够有用的进步Redis 的功能,Slave 节点能够备份 Master 节点的数据,能够对恳求进行分流,读写别离,减轻主节点的压力。

主从仿制是否真的高可用了?

主从仿制都是建立在主节点的,如果 Master 挂掉了,那么从节点就不能实时更新数据了。因而当咱们主节点挂掉了,咱们会怎样处理了:

  1. 需要把其间的一个Slave节点,晋级为 Master。
  2. 需要把 Slave 挂载到 新的 Master 的IP 上。
  3. 需要把新的Master 节点 和 Slave 的节点IP ,告诉给客户端。
  4. 客户端链接新的 更改好的对应的 主从节点。

然后得出结论主从仿制也不是很靠谱,因而 Redis 推出的 Sentinel 架构。

Redis Sentinel 架构

Redis Sentinel 架构装备!!!

  1. 主从仿制的架构仍是 一个 Master,2个 Slave。
  2. Sentinel 并不是一个,而是多个,他们每个都会去监听每个Redis 的健康状况。
  3. 客户端将不再和Redis直接链接,而是经过Sentinel 来获取信息了。

Redis Sentinel 毛病搬运流程

  1. 多个Sentinel 发现并承认 Master 有问题。
  2. 推举一个Sentinel 为领导。
  3. 推举一个Slave 为新的 Master。履行 slave no one。
  4. 告诉其他的slave ,成为新的Master 的 slave。
  5. 告诉链接的客户端主从的改变。
  6. 等候老的Master 复生,成为新的Master 的 Slave。

Redis Sentinel 装置

Redis Sentinel 架构装备!!!

  1. 装备节点的Config,redis_7000.conf redis_7001.conf redis_7002.conf,这儿的3个装备用的都是极简的装备
root@iZ28x8osxzxZ:/opt/redis/ect# cat redis_7000.conf 
port 7000
daemonize yes
pidfile /var/run/redis_7000.pid
logfile "/home/redisRdbLog/7000.log"
dir /home/redisRdbLog/
root@iZ28x8osxzxZ:/opt/redis/ect# cat redis_7001.conf 
port 7001
daemonize yes
pidfile /var/run/redis_7001.pid
logfile "/home/redisRdbLog/7001.log"
dir /home/redisRdbLog
replicaof 127.0.0.1 7000
root@iZ28x8osxzxZ:/opt/redis/ect# cat redis_7002.conf 
port 7002
daemonize yes
pidfile /var/run/redis_7002.pid
logfile "/home/redisRdbLog/7002.log"
dir /home/redisRdbLog
replicaof 127.0.0.1 7000
  1. Sentinel 的装备,Redis 文件目录下有个 sentinel.conf
    Redis Sentinel 架构装备!!!
//检查 sentinel 的装备文件,疏忽注释和空格
root@iZ28x8osxzxZ:/opt/redis# cp sentinel.conf /opt/redis/ect/
root@iZ28x8osxzxZ:/opt/redis/ect# cat sentinel.conf | grep -v "#" | grep -v "^$"
port 26379 // 发动sentinel 端口号
daemonize no //是否以看护进程的方法发动
pidfile /var/run/redis-sentinel.pid //发动的PID
dir /tmp //保存的作业目录
logfile "" //日志文件
sentinel monitor mymaster 127.0.0.1 6379 2 //sentinel 监控主节点的姓名mymaster,ip 127.0.0.1 端口6379,2的意思是 当有几个 sentinel 觉得这个master 有问题,就进行毛病搬运,
sentinel down-after-milliseconds mymaster 30000 // ping mymaster 30000 毫秒后,还ping不同,这个就确认有问题
sentinel parallel-syncs mymaster 1 //当有新的master,老的slave会对新的进行仿制,1相当于每次只能仿制1个
sentinel failover-timeout mymaster 180000 //毛病搬运的时刻
sentinel deny-scripts-reconfig yes //不允许运用SENTINEL SET设置notification-script和client-reconfig-script

装备Sentinel config 文件

root@iZ28x8osxzxZ:/opt/redis/ect# cat sentinel.conf | grep -v "#" | grep -v "^$" > redis-sentinel-26379.conf
root@iZ28x8osxzxZ:/opt/redis/ect# vim redis-sentinel-26379.conf 
root@iZ28x8osxzxZ:/opt/redis/ect# cat redis-sentinel-26379.conf 
port 26379
daemonize yes
dir /home/redisRdbLog/
pidfile /var/run/redis-sentinel-26379.pid
logfile "redis-sentinel-26379.log"
sentinel monitor mymaster 127.0.0.1 7000 2
sentinel down-after-milliseconds mymaster 30000
sentinel parallel-syncs mymaster 1
sentinel failover-timeout mymaster 180000
sentinel deny-scripts-reconfig yes

装备别的2个 redis-sentinel,运用sed 指令 sed “s/替换值/替换后的值”

root@iZ28x8osxzxZ:/opt/redis/ect# sed "s/26379/26380/g" redis-sentinel-26379.conf > redis-sentinel-26380.conf 
root@iZ28x8osxzxZ:/opt/redis/ect# sed "s/26379/26381/g" redis-sentinel-26379.conf > redis-sentinel-26381.conf 

顺次检查 26380,26381 的文件装备

root@iZ28x8osxzxZ:/opt/redis/ect# cat redis-sentinel-26380.conf 
port 26380
daemonize yes
dir /home/redisRdbLog/
pidfile /var/run/redis-sentinel-26380.pid
logfile "redis-sentinel-26380.log"
sentinel monitor mymaster 127.0.0.1 7000 2
sentinel down-after-milliseconds mymaster 30000
sentinel parallel-syncs mymaster 1
sentinel failover-timeout mymaster 180000
sentinel deny-scripts-reconfig yes
root@iZ28x8osxzxZ:/opt/redis/ect# cat redis-sentinel-26381.conf 
port 26381
daemonize yes
dir /home/redisRdbLog/
pidfile /var/run/redis-sentinel-26381.pid
logfile "redis-sentinel-26381.log"
sentinel monitor mymaster 127.0.0.1 7000 2
sentinel down-after-milliseconds mymaster 30000
sentinel parallel-syncs mymaster 1
sentinel failover-timeout mymaster 180000
sentinel deny-scripts-reconfig yes

发动 redis-server: 端口为7000 ,7001 ,7002,履行 info replication 看出主从节点的信息

root@iZ28x8osxzxZ:/opt/redis/ect# redis-server redis_7000.conf 
root@iZ28x8osxzxZ:/opt/redis/ect# redis-server redis_7001.conf 
root@iZ28x8osxzxZ:/opt/redis/ect# redis-server redis_7002.conf 
root@iZ28x8osxzxZ:/opt/redis/ect# redis-cli -p 7000 info replication
# Replication
role:master
connected_slaves:2
slave0:ip=127.0.0.1,port=7001,state=online,offset=28,lag=1
slave1:ip=127.0.0.1,port=7002,state=online,offset=28,lag=0
master_replid:a448e9c6b7786ece06c3f49e5f0b1d35691a8be2
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:28
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:28

发动redis-sentinel,端口为 26379,26380,26381

root@iZ28x8osxzxZ:/opt/redis/ect# redis-sentinel redis-sentinel-26379.conf 
root@iZ28x8osxzxZ:/opt/redis/ect# redis-sentinel redis-sentinel-26380.conf 
root@iZ28x8osxzxZ:/opt/redis/ect# redis-sentinel redis-sentinel-26381.conf 
root@iZ28x8osxzxZ:/opt/redis/ect# cat redis-sentinel-26379.conf 
port 26379
daemonize yes
dir "/home/redisRdbLog"
pidfile "/var/run/redis-sentinel-26379.pid"
logfile "redis-sentinel-26379.log"
sentinel myid b933b102f5d7dc472a14e60b9b72931a262c73fb
sentinel deny-scripts-reconfig yes
sentinel monitor mymaster 127.0.0.1 7000 2
sentinel config-epoch mymaster 0
sentinel leader-epoch mymaster 0
# Generated by CONFIG REWRITE
protected-mode no
sentinel known-replica mymaster 127.0.0.1 7001
sentinel known-replica mymaster 127.0.0.1 7002
sentinel known-sentinel mymaster 127.0.0.1 26381 76cd0f4664dc063c307070322f554433725dabff
sentinel known-sentinel mymaster 127.0.0.1 26380 bc6d19b66b8633fa7b9663be8358841cad689da8
sentinel current-epoch 0

咱们顺次发动了3个sentinel ,咱们检查sentinel 端口为26379,发现和咱们装备的不一样,仍是加入了从节点的信息,这个是因为redis帮咱们去掉了一些装备,履行了 info replication 获取了从节点的信息,帮咱们加入了。

经过 info sentinel 信息检查是否成功

root@iZ28x8osxzxZ:/opt/redis/ect# redis-cli -p 26379 info sentinel
# Sentinel
sentinel_masters:1
sentinel_tilt:0
sentinel_running_scripts:0
sentinel_scripts_queue_length:0
sentinel_simulate_failure_flags:0
master0:name=mymaster,status=ok,address=127.0.0.1:7000,slaves=2,sentinels=3

能够看到 name 为 mymaster, 主节点master : 127.0.0.1:7000,slave 有2个,sentinel 有3个,阐明装备成功了。

之前预备学习的时分写博客,但是都没有坚持下去,期望这次能够有头有尾。
Redis 坚持第一天 :为什么要运用 redis ?
Redis 坚持第二天 :Redis 的装置与发动
Redis 坚持第三天 :Redis 运用装备文件发动,常见装备学习。
Redis 坚持第四天 :

  1. Redis 五种常见的数据结构:String
  2. Redis 五种常见的数据结构:Hash
  3. Redis 五种常见的数据结构:List
  4. Redis 五种常见的数据结构:Set
  5. Redis 五种常见的数据结构:zset

Redis 坚持第五天 :Redis 客户端:Jredis 和 spring-data-redis 整合。
Redis 坚持第六天 :Redis 慢查询日志。
Redis 坚持第七天 :Redis pipeline。
Redis 坚持第八天 :Redis 发布订阅。
Redis 坚持第九天 :Redis bitmp。
Redis 坚持第十天 :Redis HyperLogLogs。
Redis 坚持第十一天 :Redis GEO。
Redis 坚持第十二天 :Redis 耐久化:RDB。
Redis 坚持第十三天 :Redis 耐久化 :AOF。
Redis 坚持第十四天 :Redis :主从仿制。
Redis 坚持第十五天 :Redis Sentinel 架构装备!!!

 
 
vwin娱乐场

本文地址:http://www.anyuan2002.com/a/question/100250.html
Tags: 架构 Redis Sentinel
修改:vwin网
关于咱们 | 联络咱们 | 友情链接 | 网站地图 | Sitemap | App | 回来顶部