CentOS 6.2利用drbd+pacemaker实现redis高可用

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介:
大致过程:
pacemaker安装与配置
drbd安装与配置
pacemaker资源及其约束的配置
测试自动切换
 
OS:CentOS 6.2
主节点:SER-206
备用节点:SER-104
 
一、pacemaker的安装与配置:
参考:http://share.blog.51cto.com/278008/850752,过程略,直接贴配置文件如下:
cat /etc/corosync/corosync.conf

 
 
  1. # Please read the corosync.conf.5 manual page 
  2. compatibility: whitetank 
  3. aisexec { 
  4. user: root 
  5. group: root 
  6. service { 
  7. name: pacemaker 
  8. ver: 0 
  9. totem { 
  10. version: 2 
  11. secauth: off 
  12. threads: 0 
  13. interface { 
  14. ringnumber: 0 
  15. bindnetaddr: 10.10.14.0 
  16. mcastaddr: 226.94.1.1 
  17. mcastport: 5405 
  18. ttl: 64 
  19.  
  20. logging { 
  21. fileline: off 
  22. to_stderr: no 
  23. to_logfile: yes 
  24. to_syslog: no 
  25. logfile: /var/log/cluster/corosync.log 
  26. debug: off 
  27. timestamp: on 
  28. logger_subsys { 
  29. subsys: AMF 
  30. debug: off 
  31.  
  32. amf { 
  33. mode: disabled 
二、drbd的安装与配置:
参考:http://share.blog.51cto.com/278008/845357,但是编译和安装过程有所不同,配置文件也有所改动:
下载drbd源码并编译、安装:

 
 
  1. mkdir -p /root/rpmbuild/SOURCES 
  2.  
  3. wget http://oss.linbit.com/drbd/8.4/drbd-8.4.1.tar.gz 
  4. tar -zxvf drbd-* 
  5. cd drbd-* 
  6. ./configure --enable-spec --with-km 
  7. cp ../drbd*.tar.gz `rpm -E %_sourcedir` 
  8. rpmbuild -bb drbd.spec 
  9. rpmbuild -bb drbd-kernel.spec 
  10.  
  11. rpm -ivh /root/rpmbuild/RPMS/drbd-* //全部安装 
  12. modprobe drbd 
注:1) 可以看到本文的编译过程跟官方文档稍有不同,因为按照官方文档进行编译时一直出错,始终过不去。
2) 这里的编译安装跟前面的文章也稍有不同。刚开始按照前面的文章进行安装与配置,drbd本身是OK的;但是在pacemaker中配置drbd资源时,出了错:

 
 
  1. ERROR: lrm_get_rsc_type_metadata(578): got a return code HA_FAIL from a reply message of rmetadata with function get_ret_from_msg. 
  2. ERROR: ocf:linbit:drbd: could not parse meta-data. 
这个错误的原因是,drbd资源没有安装成功:
ls -lh /usr/lib/ocf/resource.d/linbit,发现该目录中根本找不到drbd这个ra。
 
下面是drbd的最终配置文件:
cat /etc/drbd.d/global_common.conf

 
 
  1. global { 
  2. usage-count yes; 
  3.  
  4. common { 
  5. handlers { 
  6. pri-on-incon-degr "/usr/lib/drbd/notify-pri-on-incon-degr.sh; /usr/lib/drbd/notify-emergency-reboot.sh; echo b > /proc/sysrq-trigger ; reboot -f"; 
  7. pri-lost-after-sb "/usr/lib/drbd/notify-pri-lost-after-sb.sh; /usr/lib/drbd/notify-emergency-reboot.sh; echo b > /proc/sysrq-trigger ; reboot -f"; 
  8. local-io-error "/usr/lib/drbd/notify-io-error.sh; /usr/lib/drbd/notify-emergency-shutdown.sh; echo o > /proc/sysrq-trigger ; halt -f"; 
  9.  
  10. startup { 
  11. # wfc-timeout degr-wfc-timeout outdated-wfc-timeout wait-after-sb 
  12.  
  13. options { 
  14. # cpu-mask on-no-data-accessible 
  15.  
  16. disk { 
  17. on-io-error detach; 
  18. resync-rate 30M; 
  19.  
  20. net { 
  21. protocol C; 
  22. cram-hmac-alg sha1; 
  23. shared-secret "111111"; 
与前面的文章基本相同,但取消了startup的配置,以及disk的fence选项。
cat /etc/drbd.d/redis.res

 
 
  1. resource redis { 
  2.            device /dev/drbd0; 
  3.                disk /dev/VolGroup00/LogVol01; 
  4.                meta-disk internal; 
  5.                on SER-206 { 
  6.                       address 10.10.14.174:9876; 
  7.                } 
  8.                on SER-104 { 
  9.                       address 10.10.14.5:9876; 
  10.                } 
三、配置pacemaker资源及约束:
1) 规划
需要哪些资源?
...
需要哪些约束?
...
重申一遍:配置某个RA前,进入ra模式使用meta查看一下该RA的常用选项,及其语法规则,有的选项后面带单位s(秒),有的不带。另外,建议直接调高pacemaker群集默认的最小值。示例如:
crm(live)ra#meta ocf:heartbeat:Filesystem
crm(live)configure# property default-action-timeout=60

2) 开始配置
主备节点停止drbd自启动:
chkconfig drbd off
 
主备节点创建redis的RA,不用手动写脚本了,方便:

 
 
  1. cp $REDIS_HOME/utils/redis_init_scripts /etc/init.d/redis
  2.  
  3. 然后,要修改CONF目录的配置,指定自己的redis配置文件的真实路径。
使用CLI配置资源及约束:
配置集群的几个默认属性:

 
 
  1. crm(live)configure# property no-quorum-polic=ignore 
  2. crm(live)configure# property stonith-enabled=false 
  3. crm(live)configure# property default-action-timeout=60 
  4. crm(live)configure# rsc_defaults resource-stickiness=100 
  5. crm(live)configure# commit  
配置虚拟IP资源:

 
 
  1. crm(live)configure# primitive VIP ocf:heartbeat:IPaddr2 \ #斜杠前有空格 
  2. > params ip=10.10.0.2 cidr_netmask=24 \ #根据实际情况进行配置,跟前端服务器的网段要能通! 
  3. > op monitor interval=10s timeout=20s 
  4. crm(live)configure# commit  
配置drbd资源,以及drbd主从资源:

 
 
  1. crm(live)# cib new drbd 
  2. INFO: drbd shadow CIB created 
  3. crm(drbd)# configure primitive drbd0 ocf:linbit:drbd \ 
  4. > params drbd_resource=redis drbdconf=/etc/drbd.conf \ 
  5. > op start timeout=250 \ 
  6. > op stop timeout=110 \ 
  7. > op promote timeout=100 \ 
  8. > op demote timeout=100 \ 
  9. > op notify timeout=100 \ 
  10. > op monitor role=Master interval=20 timeout=30 \ 
  11. > op monitor role=Slave interval=30 timeout=30 
  12.  
  13. crm(drbd)# configure ms ms-drbd0 drbd0 \ 
  14. > meta master-max=1 master-node-max=1 clone-max=2 clone-node-max=1 notify=true 
  15. crm(drbd)# cib commit drbd 
配置文件系统资源:

 
 
  1. crm(live)# cib new fs 
  2. INFO: fs shadow CIB created 
  3. crm(fs)# configure primitive fs-drbd0 ocf:heartbeat:Filesystem \ 
  4. > params device=/dev/drbd0 directory=/data fstype=xfs \ 
  5. > op start timeout=70 \ 
  6. > op stop timeout=70 \ 
  7. > op notify timeout=70 \ 
  8. > op monitor interval=30 timeout=50 
  9. crm(fs)# cib commit fs 
配置redis资源:

 
 
  1. crm(live)configure# primitive redis lsb:redis 
  2. crm(live)configure# commit 
把fs-drbd0、VIP、redis进行编组:

 
 
  1. crm(live)configure# group redis_group fs_drbd0 VIP redis 
  2. crm(live)configure# commit 
配置组资源和drbd主节点的约束:

 
 
  1. crm(live)configure# colocation redis_group-on-drbd inf: redis_group ms-drbd0:Master 
  2. crm(live)configure# order redis_group-after-drbd inf: ms-drbd0:Promote redis_group:start 

查看集群状态:
crm status

四、测试自动切换:
本人测试OK。
本文转自 li_qinshan 51CTO博客,原文链接:http://blog.51cto.com/share/850754

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
8月前
|
NoSQL Redis
基于Redis的高可用分布式锁——RedLock
这篇文章介绍了基于Redis的高可用分布式锁RedLock的概念、工作流程、获取和释放锁的方法,以及RedLock相比单机锁在高可用性上的优势,同时指出了其在某些特殊场景下的不足,并提到了ZooKeeper作为另一种实现分布式锁的方案。
245 2
基于Redis的高可用分布式锁——RedLock
|
3月前
|
存储 负载均衡 NoSQL
搭建高可用及负载均衡的Redis
通过本文介绍的高可用及负载均衡Redis架构,可以有效提升Redis服务的可靠性和性能。主从复制、哨兵模式、Redis集群以及负载均衡技术的结合,使得Redis系统在应对高并发和数据一致性方面表现出色。这些配置和技术不仅适用于小型应用,也能够支持大规模企业级应用的需求。希望本文能够为您的Redis部署提供实用指导和参考。
301 9
|
9月前
|
监控 NoSQL Redis
Redis 哨兵模式高可用
Redis 哨兵模式高可用
137 4
|
6月前
|
NoSQL 数据可视化 Linux
redis学习四、可视化操作工具链接 centos redis,付费Redis Desktop Manager和免费Another Redis DeskTop Manager下载、安装
本文介绍了Redis的两个可视化管理工具:付费的Redis Desktop Manager和免费的Another Redis DeskTop Manager,包括它们的下载、安装和使用方法,以及在使用Another Redis DeskTop Manager连接Redis时可能遇到的问题和解决方案。
240 1
redis学习四、可视化操作工具链接 centos redis,付费Redis Desktop Manager和免费Another Redis DeskTop Manager下载、安装
|
6月前
|
NoSQL Linux Redis
在 centos7 下重启/开启 redis 服务器
本文提供了一种在Centos 7操作系统下如何重启Redis服务器的步骤,包括停止Redis服务、确认停止成功以及重新启动Redis服务。
372 2
在 centos7 下重启/开启 redis 服务器
|
6月前
|
NoSQL Linux Redis
Docker学习二(Centos):Docker安装并运行redis(成功运行)
这篇文章介绍了在CentOS系统上使用Docker安装并运行Redis数据库的详细步骤,包括拉取Redis镜像、创建挂载目录、下载配置文件、修改配置以及使用Docker命令运行Redis容器,并检查运行状态和使用Navicat连接Redis。
730 3
|
6月前
|
存储 NoSQL 大数据
大数据-51 Redis 高可用方案CAP-AP 主从复制 一主一从 全量和增量同步 哨兵模式 docker-compose测试
大数据-51 Redis 高可用方案CAP-AP 主从复制 一主一从 全量和增量同步 哨兵模式 docker-compose测试
85 3
|
7月前
|
NoSQL Linux Redis
linux之centos安装redis
linux之centos安装redis
|
8月前
|
NoSQL 数据可视化 Linux
2022 年超详细步骤讲解 CentOS 7 安装Redis 。解决Redis Desktop Manager 图形化工具连接失败解决 ;connection failed处理。开机自启Redis
这篇文章提供了在CentOS 7上安装Redis的详细步骤,包括上传Redis安装包、解压安装、编译、安装、备份配置文件、修改配置以支持后台运行和设置密码、启动Redis服务、使用客户端连接Redis、关闭Redis服务、解决Redis Desktop Manager图形化工具连接失败的问题、设置Redis开机自启动,以及Redis服务的启动和停止命令。
2022 年超详细步骤讲解 CentOS 7 安装Redis 。解决Redis Desktop Manager 图形化工具连接失败解决 ;connection failed处理。开机自启Redis
|
9月前
|
负载均衡 NoSQL 应用服务中间件
搭建高可用及负载均衡的Redis
【7月更文挑战第10天】
335 1