惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园 - Franky
N
Netflix TechBlog - Medium
Google Online Security Blog
Google Online Security Blog
月光博客
月光博客
量子位
酷 壳 – CoolShell
酷 壳 – CoolShell
V
V2EX
腾讯CDC
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
博客园 - 聂微东
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
M
MIT News - Artificial intelligence
Vercel News
Vercel News
The GitHub Blog
The GitHub Blog
Hugging Face - Blog
Hugging Face - Blog
博客园 - 【当耐特】
Apple Machine Learning Research
Apple Machine Learning Research
aimingoo的专栏
aimingoo的专栏
博客园 - 三生石上(FineUI控件)
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
MongoDB | Blog
MongoDB | Blog
H
Help Net Security
The Cloudflare Blog
Blog — PlanetScale
Blog — PlanetScale
F
Full Disclosure
G
Google Developers Blog
罗磊的独立博客
Jina AI
Jina AI
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Y
Y Combinator Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
J
Java Code Geeks
A
About on SuperTechFans
IT之家
IT之家
大猫的无限游戏
大猫的无限游戏
S
SegmentFault 最新的问题
有赞技术团队
有赞技术团队
GbyAI
GbyAI
雷峰网
雷峰网
T
The Blog of Author Tim Ferriss
The Register - Security
The Register - Security
U
Unit 42
D
Docker
Martin Fowler
Martin Fowler
L
LINUX DO - 热门话题
NISL@THU
NISL@THU
阮一峰的网络日志
阮一峰的网络日志
C
Cybersecurity and Infrastructure Security Agency CISA
博客园_首页
Google DeepMind News
Google DeepMind News

博客园 - jimeper

RAC升级后,一个节点无法连接数据库,报ORA-12537: TNS:connection closed 升级到11.2.0.4后用srvctl无法启用数据库实例,报CRS-0254: authorization failure Oracle 11gR2 RAC DBCA无法识别ASM磁盘组(ORA-19504,ORA-15045,ORA-17502,ORA-15081) Troubleshooting Scheduler Autotask Issues (Doc ID 1561498.1) LINUX系统下添加映射存储LUN goldengate一些参数整理 原创:goldengate从11.2升级到12.1.2 Transaction recovery: lock conflict caught and ignored 搭建mongodb集群(副本集+分片) 不停止MySQL服务增加从库的两种方式 Oracle Goldengate REPLICAT启动时报正在运行解决办法 Oracle 11g RAC环境下Private IP修改方法及异常处理 LOB字段存放在指定表空间 清理CLOB字段及压缩CLOB空间 (原创)INTERVAL分区表与RANGE分区表相互转化 删除数据报ORA-00600: internal error code, arguments: [ktbesc_plugged] OGG-03517 Conversion from character set failed解决方法 linux中shell变量$#,$@,$0,$1,$2的含义解释 Logdump使用指引 用飞信监控GoldenGate进程
Redis之高可用方案
jimeper · 2015-04-07 · via 博客园 - jimeper

Redis以其高效的访问速度著称。但由于官方还未发布redis-cluster,而redis的replica又有诸多不便:比如一组master-slave的机器,如果之间有链接瞬段,或者对slave重新执行slaveof命令,会导致slave机器从头开始同步一次master的数据,造成较大的开销。

以下描述了使用keepalived+redis主从的一种高可用方法。安装方法在这里就不赘述了,google之则可。

1. redis服务配置

主机     端口   角色

redis0 6379   master

redis1 6379   slave

2. keepalived的配置

redis0和redis1使用一个虚拟ip

并使用如下脚本监控redis服务是否存活。监控脚本:

  1. #!/bin/bash  
  2. /usr/local/bin/redis-cli -h 192.168.1.53 -p 6379 info > /dev/null  
  3. if [ $? -eq 0 ]; then  
  4. echo "redis OK"  
  5. exit 0  
  6. else  
  7. echo "no redis service found!"  
  8. /usr/local/bin/redis-server /path/to/redis.conf  
  9.   
  10. # try to start it again  
  11. /usr/local/bin/redis-cli -h 192.168.11.53 -p 6380 info > /dev/null  
  12. if [ $? -eq 0 ]; then  
  13. exit 0  
  14. else  
  15.   
  16. # restart failed  
  17. killall keepalived  
  18. echo "error"  
  19. fi  
  20. fi  

要实现redis故障恢复,可以使用keepalived配置的notify_master, notify_backup这两个方法执行特有的脚本。实际上只要在slave(即redis1)上有2个脚本,第一个用于在redis1接管虚拟ip之后,执行slaveof no one把自己变成master。第二个用户在redis1交出虚拟ip之后,在redis0执行slaveof no one确保redis0恢复为主的状态,并对自己执行slaveof redis0 6379开始重新从master同步数据,如果自己已经是slave就没必要同步了。

redis1上keepalived的配置方法如下,redis0只要去掉notify_master, notify_backup两行即可。

  1. ! Configuration File for keepalived  
  2. global_defs {  
  3. router_id redis1  
  4. }  
  5. vrrp_script Monitor_Redis {  
  6.  script "/opt/redis_keepalive.sh"  
  7.  interval 10  
  8.  weight 2  
  9. }  
  10. vrrp_instance 360 {  
  11.  state BUCKUP #(主机为MASTER,备用机为BACKUP)  
  12.  interface eth0 #(HA监测网络接口)  
  13.  virtual_router_id 110 #(主、备机的virtual_router_id必须相同)  
  14.  mcast_src_ip 192.168.11.53 #(多播的源IP,设置为本机外网IP,与VIP同一网卡)此项可不设置  
  15.  priority 70 #(主、备机取不同的优先级,主机值较大,备份机值较小,值越大优先级越高)  
  16.  advert_int 1 #(VRRP Multicast广播周期秒数)  
  17.  authentication {  
  18.   ......  
  19. }  
  20.  notify_master /opt/redis_2master.sh  
  21.  notify_backup /opt/redis_2backup.sh  
  22.  track_script {  
  23.  Monitor_Redis #(调用nginx进程检测脚本)  
  24. }  
  25.  virtual_ipaddress {  
  26.  192.168.11.4 #(VRRP HA虚拟地址)  
  27.  }  
  28. }