redis主备部署方案
- 格式:docx
- 大小:49.89 KB
- 文档页数:6
redis异地灾备方案咱来说说Redis的异地灾备方案哈。
一、为啥要搞异地灾备呢?你想啊,Redis里存着咱好多重要的数据呢,就像宝贝一样。
要是本地出了啥岔子,比如机房着火啦(虽然这事儿有点吓人,但也不是没可能),或者遭遇洪水啦,或者就是服务器突然抽风全挂了,那数据可就没了,这可不行啊。
所以得搞个异地灾备,就像给这些数据宝贝在别的地方找个安全的小窝。
二、数据同步是关键。
1. 基于主从复制。
咱可以先在本地弄个Redis主节点,这个主节点就像老大一样,管着数据。
然后在异地弄个从节点。
主节点的数据一变,就把变化的部分告诉从节点,让从节点跟着变。
这就像是老大做了个啥决策,马上派人告诉在异地的小弟一样。
不过这里面有个小问题,就是网络要是不好,可能会有点延迟,数据同步就没那么及时。
2. 使用Redis Sentinel(哨兵模式)这就像是给主从结构找了个小管家。
哨兵会一直盯着主节点和从节点。
要是主节点出问题了,比如说突然死机了,哨兵就会发现,然后让从节点变成新的主节点。
这样就能保证服务一直能有个主节点在工作。
而且在异地灾备的时候,异地的从节点也能在本地主节点出问题的时候顶上去。
不过要注意,哨兵的配置也得小心,别让它误判了。
3. Redis Cluster(集群模式)跨地域部署。
把Redis集群分布在不同的地域。
比如说一部分节点在本地,一部分在异地。
集群里的数据是分散存储的,而且会自动进行数据的重新分片啥的。
这样即使本地的一些节点完蛋了,异地的节点还能把数据找回来重新组合起来。
就像搭积木一样,本地的积木倒了,异地还有备份的积木可以重新搭起来。
不过这种方式对网络要求比较高,毕竟节点之间要经常通信来协调数据的事儿。
三、网络方面的考虑。
1. 网络带宽。
网络带宽得足够大,不然数据同步就会像蜗牛爬一样慢。
就好比你要搬家,车太小了,东西就得来回运好多趟,浪费时间还容易出问题。
所以要根据数据量和同步频率来选择合适的网络带宽。
redis灾备方案Redis是一款开源的内存数据结构存储系统,具有高性能、高可用性和易于使用的特点,被广泛用于缓存、消息队列和实时分析等场景。
然而,由于Redis的单机模式存在单点故障的风险,为了保障数据的安全性和高可用性,需要进行灾备方案的规划和实施。
一、灾备方案概述灾备方案主要包括主从复制和哨兵模式两种常见的解决方案。
主从复制通过将主节点的数据复制到从节点上,实现数据的冗余和备份;哨兵模式则引入了哨兵节点,通过监控Redis主从节点的健康状态和自动切换,提供了更高的可用性。
二、主从复制方案1. 配置主节点和从节点在Redis的配置文件中,将主节点的ip地址和端口号配置为从节点的masterof参数。
从节点将会连接到主节点并复制其数据。
同时,可以设置复制的安全性密码,提高数据的安全性。
2. 复制过程主节点将每次写操作的数据变更记录到本地的AOF(Append Only File)或RDB(Redis Database)文件中,从节点通过连接到主节点,获取并复制这些数据变更,将其应用到本地的数据库中。
3. 数据同步从节点可以通过全量复制和增量复制两种方式与主节点进行数据同步。
全量复制通过复制整个数据库来初始化从节点,而增量复制则仅复制主节点的增量数据变更。
4. 角色切换在主从复制方案中,当主节点发生故障或者需要维护时,需要手动将某个从节点切换为主节点,保证系统的可用性。
切换过程需要修改从节点的配置文件并重启该节点。
三、哨兵模式1. 配置哨兵节点在Redis的配置文件中,配置哨兵节点的ip地址和端口号,并指定监控的主节点信息。
哨兵节点会周期性地检测主从节点的健康状态,当主节点宕机或不可用时,会通过选举机制自动将某个从节点切换为新的主节点。
2. 监控主从节点哨兵节点通过发送PING命令和PONG回复来监控主从节点的健康状态。
当主节点长时间无法回复PING命令时,哨兵节点将主节点标记为主观下线。
3. 主节点切换当主节点被标记为主观下线后,哨兵节点会执行选举过程,选出一个新的主节点,并将其他从节点切换至新的主节点。
分布式Redis(Coids)部署文档北京东方国信科技股份有限公司2015.06目录1 前言 (1)1.1 重要声明 (1)1.2 保密级别 (1)2 变更记录 (2)3 部署环境要求 (3)4 部署详细步骤 (3)4.1 编译codis (3)4.2 安装Zookeeper及Codis (4)4.2.1 Zookeeper安装 (4)4.2.2 Codis安装 (5)5 部署注意事项 (7)1前言1.1重要声明本文档属于一般保密,请文档获得人员注意保密,感谢您的配合!1.2保密级别公司产品文档共三种保密级别:一般:本文档含有北京东方国信科技股份有限公司的产品保密信息,仅限于公司产品实施人员、和产品推广人员查阅。
请文档获得人员注意保密,未经文档起草部门的直属经理及以上管理人员的书面许可,不得向公司其他员工、任何第三方组织和个人透露本文档所含信息的全部或部分;秘密:本文档含有北京东方国信科技股份有限公司的产品保密信息,仅限于公司参与本产品研发人员及该产品的管理人员(产品经理、研发主管及更高职务人员)查阅。
请文档获得人员注意保密,未经文档起草部门的直属经理及以上管理人员的书面许可,不得向公司其他员工、任何第三方组织和个人透露本文档所含信息的全部或部分;机密:本文档含有北京东方国信科技股份有限公司的产品保密信息,仅限于公司参与本产品的管理人员(产品经理、研发主管及更高职务人员)查阅。
请文档获得人员注意保密,未经文档起草部门的直属经理及以上管理人员的书面许可,不得向公司其他员工、任何第三方组织和个人透露本文档所含信息的全部或部分。
2变更记录版本修改时间修改人修改内容备注V1.0 2015-6-23 杨代星初稿3部署环境要求硬件要求:内存64GB以上,数量3台及以上Zookeeper节点为奇数个数,建议三个节点以上,Codis节点根据内存的大小以及存储数据量来估算,建议6个节点以上,以达到互备的效果,如下表格以最低要求为例:组件类型主机1 主机2 主机1 zookeeper Node1 Node2 Node3Codis/Group1 Master Slave NSlave N N Codis/Group2 N N MasterN Slave Slave4部署详细步骤4.1编译codis编译需要依赖go语言,需要先配置GO环境,安装步骤如下:解压:tar –zxvf go1.x.linux-amd64.tar.gz配置GO环境变量:#defined goexport GOROOT=/home/all_ecs_query/goexport PATH=$PATH:$GOROOT/bin配置go工作目录,这里codis源码路径export GOPATH=/home/all_ecs_query/codis-proj编译源码:1) cd codis-proj\src\\wandoulabs\codis2) ./build.sh3)编译完成在目录下会有个deploy.tar文件备注:同类型机器,只需要编译一次就可以了,将delpoy.tar拷贝其他机器安装即可4.2安装Zookeeper及Codis4.2.1Zookeeper安装将Zookeeper安装文件解压合适的目录,修改对应的配置文件,安装节点数应为奇数,具体步骤如下:1)tar –zxvf zookeeper.x.x.x2)cd zookeeper/conf(修改zoo.cfg配置文件)tickTime=2000initLimit=5syncLimit=2dataDir=/Users/apple/zookeeper0/datadataLogDir=/Users/apple/zookeeper0/logsclientPort=4180server.0=xxx.xxx.1:xxxx:xxxxserver.1= xxx.xxx.1:xxxx:xxxxserver.2= xxx.xxx.1:xxxx:xxxx参数说明:tickTime: zookeeper中使用的基本时间单位, 毫秒值.dataDir: 数据目录. 可以是任意目录.dataLogDir: log目录, 同样可以是任意目录. 如果没有设置该参数,将使用和dataDir相同的设置.clientPort: 监听client连接的端口号.initLimit: zookeeper集群中的包含多台server, 其中一台为leader,集群中其余的server为follower. initLimit参数配置初始化连接时,follower和leader之间的最长心跳时间. 此时该参数设置为5, 说明时间限制为5倍tickTime, 即5*2000=10000ms=10s.syncLimit: 该参数配置leader和follower之间发送消息, 请求和应答的最大时间长度. 此时该参数设置为2, 说明时间限制为2倍tickTime, 即4000ms.server.X=A:B:C 其中X是一个数字, 表示这是第几号server. A是该server所在的IP地址. B配置该server和集群中的leader交换消息所使用的端口. C配置选举leader时所使用的端口. 由于配置的是伪集群模式, 所以各个server的B, C参数必须不同.3)将配置的zookeeper目录拷贝到其他机器相应的目录,并在对应dataDir 目录下新建myid文件,写入server.x对应的值(例如:server.0则写入0)。
Redis缓存多机房部署策略Redis是一种开源的内存数据存储系统,被广泛用于缓存、消息传递、实时分析等应用场景。
在多机房环境下,如何合理地部署Redis缓存,成为了一个重要的问题。
本文将探讨Redis缓存多机房部署的策略。
在多机房环境下,为了保证用户访问速度和服务的高可用性,需要将Redis缓存部署在各个机房分布式节点上。
常见的部署策略有以下几种:1. 主从复制策略主从复制是Redis的默认配置,适用于小规模的多机房部署。
该策略将一个Redis实例配置为主节点,其他实例配置为从节点。
主节点负责接收写请求并同步到从节点,从节点则用于读请求的负载均衡。
通过设置适当数量的从节点,可以提高读取的吞吐量和服务的可用性。
2. 哨兵模式策略哨兵模式是Redis提供的一种高可用解决方案。
该策略在主从复制的基础上,引入了哨兵节点。
哨兵节点通过监控主节点的状态,当主节点故障时,自动将一个从节点升级为新的主节点,并通知其他从节点更新配置。
这样可以实现自动故障转移,保证服务的高可用性。
在多机房环境下,可以在每个机房都配置一组主从节点和哨兵节点,来实现跨机房的故障转移。
3. 集群模式策略Redis的集群模式是一种分布式解决方案,适用于大规模的多机房部署。
集群模式将多个Redis实例组成一个分布式集群,每个实例负责管理一部分数据。
客户端使用Hash槽对数据进行分片,将数据分散存储在不同的实例上。
这样可以提高整个系统的读写吞吐量和扩展性。
在多机房环境下,可以将不同机房的实例组成多个分布式子集群,通过跨机房的网络来访问和操作数据。
除了以上策略外,还可以结合使用代理、负载均衡和分布式锁等技术,来进一步提高多机房的Redis部署效果。
例如,可以在每个机房设置一个代理节点,用于将请求路由到对应机房的Redis实例。
同时,可以使用负载均衡策略来均衡各个机房之间的请求流量,避免某个机房负载过高或过低。
在并发访问较高的情况下,可以使用分布式锁来保证对数据的互斥访问,避免并发冲突和数据不一致的问题。
Redis同城双活方案概述在分布式系统中,为了保证高可用性和低延迟,常常需要在多个数据中心之间进行数据同步和故障切换操作。
而Redis作为一种高性能的缓存和键值存储系统,也需要在多数据中心之间实现同城双活的方案。
Redis同城双活方案是指在多个数据中心之间运行并同步多个Redis节点,以实现高可用性和灾难恢复。
本文将介绍一种常用的Redis同城双活方案,包括架构设计、数据同步和故障切换等方面。
架构设计多机房部署为了实现同城双活,首先需要在不同的机房部署Redis节点。
在选择机房时,需要考虑网络延迟、网络带宽、可用性等因素。
通常可以选择两个主要机房,分别部署Redis主节点,每个主节点下面可以有多个Redis从节点。
假设机房A为主机房,机房B为备份机房。
数据同步为了保证数据在主备机房之间的同步,可以采用以下两种方式进行数据同步。
1. Redis复制Redis复制是Redis自带的一种数据同步方式,通过将主节点的数据复制到从节点来实现同步。
在主备机房之间,可以通过Redis的复制功能将主节点A上的数据同步到备份机房B上的从节点。
这样,即使主机房A发生故障,备份机房B上的从节点仍然可以提供服务。
2. Redis SentinelRedis Sentinel是Redis的高可用性解决方案,它可以自动监控Redis节点的状态,并在主节点不可用时实现自动故障转移。
在我们的同城双活方案中,可以在每个机房中部署一个Redis Sentinel实例,用于监控本机房的Redis节点。
当主节点不可用时,Sentinel会自动从备份节点中选举一个新的主节点,保证系统的可用性。
故障切换当主机房A发生故障时,需要在备份机房B上启动Redis节点并接管服务,以保证系统的连续性。
在我们的方案中,可以通过两种方式进行故障切换。
1. 手动切换当主机房A发生故障时,管理员可以手动启动备份机房B上的Redis节点,并将其设置为主节点。
redis 集群主流架构方案分析Redis 在互联网大数据平台有着广泛的应用,主要被用来缓存热点数据,避免海量请求压垮数据库,同时可以提升服务节点的响应速度和并发量。
随着数据量的增多,由于redis 是占用单台物理机或虚机的内存,内存资源是有限的,要动态地扩容缩容,就需要用到redis 集群。
redis 集群的架构方案经历了一系列演变和改良的过程,本文介绍了四种主流的redis 架构方案。
客户端分片优点不使用第三方中间件,实现方法和代码可以自己掌控并且可随时调整。
这种分片性能比代理式更好(因为少了分发环节),分发压力在客户端,无服务端压力增加缺点不能平滑地水平扩容,扩容/缩容时,必须手动调整分片程序,出现故障不能自动转移,难以运维Twemproxy 优点运维成本低。
业务方不用关心后端Redis 实例,跟操作Redis 一样。
Proxy 的逻辑和存储的逻辑是隔离的缺点a. 代理层多了一次转发,性能有所损耗b. 进行扩容/缩容时候,部分数据可能会失效,需要手动进行迁移,对运维要求较高,而且难以做到平滑的扩缩容c. 出现故障,不能自动转移,运维性很差Redis Cluster 优点a. 无中心节点b. 数据按照Slot 存储分布在多个Redis 实例上c. 平滑的进行扩容/缩容节点d. 自动故障转移(节点之间通过Gossip 协议交换状态信息进行投票机制完成Slave 到Master 角色的提升)e. 降低运维成本,提高了系统的可扩展性和高可用性缺点a. 严重依赖外部Redis-Tribb. 缺乏监控管理c. 需要依赖Smart Client(连接维护,缓存路由表,MultiOp和Pipeline 支持)d. Failover 节点的检测过慢,不如“中心节点ZooKeeper”及时e. Gossip 消息的开销f. 无法根据统计区分冷热数据g. Slave “冷备”,不能缓解读压力Proxy Redis Cluster 优点Smart Client:a. 相比于使用代理,减少了一层网络传输的消耗,效率较高。
redis灾备方案Redis是一款高性能的内存键值存储系统,广泛用于缓存、消息队列、实时数据分析等领域。
在分布式系统中,为了保证数据的高可用性和可靠性,必须采取一定的灾备措施。
本文将介绍Redis的灾备方案,确保在主节点故障时能够迅速进行故障切换,实现系统的无缝切换和故障恢复。
1. Redis的主从复制Redis通过主从复制机制实现数据的同步。
主节点接收客户端的写操作请求,并将写操作日志记录下来,然后将这些写操作同步到从节点。
从节点会不断地从主节点拉取数据,跟随主节点的写操作进行同步。
当主节点发生故障时,可以将一个从节点提升为主节点,实现故障切换。
主从复制的特点是实时性高,但是故障切换需要手动操作,存在一定的恢复时间。
2. Redis的哨兵模式Redis的哨兵模式是在主从复制的基础上,引入了哨兵进程来监控主节点的状态。
哨兵进程会定期检查主节点是否正常运行,如果主节点发生故障,哨兵会自动将一个从节点升级为主节点,并通过通知其他从节点进行切换。
哨兵模式的特点是自动化程度高,能够自动进行故障切换和恢复,但是切换的时间会比主从复制稍长。
3. Redis的集群模式Redis的集群模式是通过对数据进行分片存储和复制,来实现数据的高可用和扩展性。
集群模式将数据分成多个槽,每个节点负责一部分槽的数据存储和复制。
当节点发生故障时,集群会自动将故障节点的槽重新分配到其他节点上,实现故障切换和数据恢复。
集群模式的特点是具有良好的扩展性和自动化切换能力,但是对于一些不支持分片的操作(如事务操作)需要进行额外的处理。
4. Redis的持久化策略除了主从复制、哨兵模式和集群模式,Redis还提供了持久化机制来保证数据的安全。
Redis支持两种持久化方式:RDB(Redis数据库快照)和AOF(Append Only File)。
RDB方式是将Redis在内存中的数据定时或者手动保存到硬盘上,通过快照文件进行数据恢复。
AOF 方式是将每个写操作追加到AOF文件中,通过重放AOF文件来恢复数据。
redis+keepalived部署方案(优选.)1REDIS 安装1.1下载安装注:以下所有示例均以2.8.13版为例;下载地址:http://www.redis.io/download1、安装下载后解压tar zxvf redis-2.8.13.tar.gz 到任意目录,例如/usr/local/redis-2.8.132、解压解压,进入redis目录cd /usr/local/redis-1.2.6 执行make命令拷贝文件cp redis.conf /etc/ 这个文件时redis启动的配置文件cp redis-benchmark redis-cli redis-server/usr/bin/ #这个倒是很有用,这样就不用再执行时加上./了,而且可以在任何地方执行设置内存分配策略(可选,根据服务器的实际情况进行设置)/proc/sys/vm/overcommit_memory可选值:0、1、2。
0,表示内核将检查是否有足够的可用内存供应用进程使用;如果有足够的可用内存,内存申请允许;否则,内存申请失败,并把错误返回给应用进程。
1,表示内核允许分配所有的物理内存,而不管当前的内存状态如何。
2,表示内核允许分配超过所有物理内存和交换空间总和的内存值得注意的一点是,redis在dump数据的时候,会fork出一个子进程,理论上child进程所占用的内存和parent是一样的,比如parent占用的内存为8G,这个时候也要同样分配8G的内存给child,如果内存无法负担,往往会造成redis服务器的down机或者IO负载过高,效率下降。
所以这里比较优化的内存分配策略应该设置为1(表示内核允许分配所有的物理内存,而不管当前的内存状态如何)1.2启动redis服务[root@Architect redis-1.2.6]# pwd /usr/local/redis-1.2.6 [root@Architect redis-1.2.6]# redis-server/etc/redis.conf查看进程,确认redis已经启动[root@Architect redis-1.2.6]# ps -ef | grep redis root 401 29222 0 18:06 pts/3 00:00:00 grepredis root 29258 1 0 16:23 ? 00:00:00 redis-server /etc/redis.conf 如果这里启动redis服务失败,一般情况下是因为redis.conf文件有问题,建议检查或找个可用的配置文件进行覆盖,避免少走弯路,这里建议,修改redis.conf,设置redis进程为后台守护进程# By default Redis does not run as a daemon. Use 'yes' if you need it.# Note that Redis will write a pid file in /var/run/redis.pid when daemonized.daemonize yes1.3测试redis[root@Architect redis-1.2.6]# redis-cliredis> set name songbin OK redis> get name "songbin"1.4关闭redis服务redis-cli shutdownredis服务关闭后,缓存数据会自动dump到硬盘上,硬盘地址为redis.conf中的配置项dbfilename dump.rdb 所设定强制备份数据到磁盘,使用如下命令redis-cli save 或者redis-cli -p 6380 save(指定端口)2Redis配置(redis.conf)Redis 配置文件,一般该文件会在其中配置示例:daemonize:是否以后台daemon方式运行pidfile:pid文件位置port:监听的端口号timeout:请求超时时间loglevel:log信息级别logfile:log文件位置databases:开启数据库的数量save * *:保存快照的频率,第一个*表示多长时间,第三个*表示执行多少次写操作。
redis 主备方案在当今互联网发展的浪潮下,数据的高可用性和容错能力变得越来越重要。
作为一个高性能的开源键值数据库系统,Redis备受开发者们的青睐。
Redis本身由于其单线程的特性,在面对大量请求时可能会成为瓶颈。
因此,合理的Redis主备方案能够实现数据的高可用性与容错能力的同时提高系统的稳定性和可靠性。
Redis主备方案在架构设计上常常采用主从模式,其中一个Redis主节点负责接收和处理各种读写请求,而其他的Redis从节点则负责备份主节点上的数据,并且能够在主节点宕机时顶替其成为新的主节点。
下面将详细介绍Redis主备方案的相关内容。
首先,Redis主备方案的实施需要重点考虑数据的同步方式。
目前Redis支持两种数据同步方式:全量复制和增量复制。
全量复制即从主节点向所有从节点传输全部数据,而增量复制仅传输主节点上的新增或修改的数据。
全量复制适用于初始化从节点和数据丢失场景,但在数据量大且频繁更新的情况下,增量复制能够有效减少带宽消耗和同步时间。
其次,Redis主备方案需要考虑主备节点的切换机制。
通常情况下,主节点宕机时,系统需要自动将一个从节点提升为新的主节点,并通知其他从节点进行更新。
为了实现这一机制,可以借助Redis Sentinel来监控主节点的状态变化。
Sentinel可以实时监测主节点的健康状况,并在主节点不可达时根据事先设定的规则进行自动切换。
另外,Redis主备方案还需要考虑数据的持久化和故障恢复能力。
Redis提供了两种持久化方式:RDB快照和AOF日志。
RDB快照将Redis的内存中数据保存到硬盘上的二进制文件中,而AOF日志则将每一次写操作追加到日志文件中。
这两种方式可以结合使用,提高数据可靠性和恢复速度。
当系统发生故障时,通过加载RDB文件和重放AOF日志即可实现数据的快速恢复。
最后,Redis主备方案还需要考虑数据的监控和管理。
针对Redis集群的监控,可以使用开源的监控工具如Redis Live、Redis Commander 等,这些工具能够实时统计节点的状态、内存使用情况、命中率等指标,并提供可视化的数据展示。
如何部署高性能的Redis服务器近年来,Redis已经成为了一款备受瞩目的高性能NoSQL数据库。
它的出现,彻底扭转了传统数据库的使用模式,使得其在数据处理方面的性能表现得到了极大的提升。
而在今天的这篇文章中,我们将来探讨一下什么是Redis?以及如何部署一款高性能的Redis服务器。
一、什么是Redis?Redis是一个使用ANSI C语言编写的高性能键值存储。
它具有内存数据结构服务器的特点,可用于数据库、缓存和消息代理等领域中。
它最为出彩的优点就是其高性能、支持多语言、自带数据类型等等。
Redis支持的数据类型非常丰富,包括字符串(String)、哈希(Hash)、列表(List)、集合(Set)、有序集合(Sorted Set)等,可以满足用户在日常开发中的绝大多数需求。
二、Redis的部署1. 下载Redis软件包可以在官网上下载Redis稳定版的软件包。
解压后可以看到其中的utils文件夹,其中的redis_init_script是启动Redis的脚本。
2. 修改Redis配置文件在安装好Redis之后,需要对其进行一些配置。
比如说Redis默认使用的是6379端口,我们可以在redis.conf文件中进行修改。
同时还可以对内存等性能参数进行调整。
3. 启动Redis服务找到解压缩后的Redis启动脚本redis_init_script,输入./redis_init_script start,即可以启动Redis服务。
如果需要停止服务,可以输入./redis_init_script stop。
4. Redis客户端连接使用Redis客户端连接Redis服务器。
可以使用redis-cli工具,命令为redis-cli -h 127.0.0.1 -p 6379,其中127.0.0.1是Redis服务器所在的IP地址,6379是Redis服务器的端口号。
5. Redis集群Redis支持搭建一个集群,可扩展性也就非常好。
redis主备部署方案Redis部署方式采用主备的方式,通过keepalived来对外提供虚IP,并实现主备自动切换功能。
主实例A:192.168.20.30备实例B:192.168.20.232虚IP:192.168.20.110正常工作时,虚IP在主实例A上,主实例A上的数据自动同步到备实例B上,当主实例A挂掉之后,备实例B将自动接管虚IP,并将redis转换为主模式,待原主实例A恢复后,A将自动切换成备模式,从B上同步数据,主备角色互换,实现融灾备份。
安装部署步骤如下:1.安装keepalivedwget /software/keepalived-1.2.6.tar.gztarzxvf keepalived-1.2.6.tar.gzcd keepalived-1.2.6./configure如果报错configure: error:!!! OpenSSL is not properly installed on your system. !!!!!! Can not include OpenSSL headers files.解决办法:yum -y install openssl-develyum -y install popt-develln -s /usr/src/kernels/2.6.32-220.el6.x86_64/ /usr/src/linux./configuremakemake installcp /usr/local/etc/rc.d/init.d/keepalived /etc/rc.d/init.d/cp /usr/local/etc/sysconfig/keepalived /etc/sysconfig/cp /usr/local/sbin/keepalived /usr/sbin/mkdir /etc/keepalived添加keepalived的配置项:vi /etc/keepalived/keepalived.confglobal_defs {router_id LVS_DEVEL}vrrp_scriptMonitor_Redis {script "/home/bbcv/redis/redis_keepalive.sh"interval 3 #每3秒执行一次weight 2}# VIP1vrrp_instance VI_1 {state BACKUP #主备服务器都设置成BACKUPinterface eth0virtual_router_id55priority 100 # 备份服务上将100改为90advert_int 1 #检查间隔nopreempt #设置为不抢占,注意这个配置只能设置在state为BACKUP的主机上,而且这个主机的priority必须比另外一台高authentication {auth_type PASSauth_pass 1111}notify_master/home/bbcv/redis/redis_master.shnotify_backup/home/bbcv/redis/redis_backup.shtrack_script {Monitor_Redis #(调用redis进程检测脚本)}virtual_ipaddress {192.168.20.110#(如果有多个VIP,继续换行填写.)}}启动keepalivedservicekeepalived start2.redis_keepalive.sh脚本该脚本主要实现对redis进程进行监控,当检测到redis进程挂掉时,自动停止keepalived进程,使虚IP进行漂移注意添加该脚本的可执行权限!chmod +x redis_keepalive.sh#!/bin/bashtime=$(date '+%Y-%m-%d %H:%M:%S' )#redis部署路径redispath=/home/bbcv/redis#redis-cli部署路径rediscli=$redispath/redis-2.0.0-rc4/redis-cliif [ ! -d "logs" ]; thenmkdir $redispath/logsfilogfile=$redispath/logs/redis-state.logoldfile=$logfile'.'$(date +%Y-%m-%d --date='30 days ago')yesterdayfile=$logfile'.'$(date +%Y-%m-%d --date='1 days ago')#把昨天的日志重命名if [ -f $yesterdayfile ]thenecho "OK"elsemv $logfile $yesterdayfile>> $logfile 2>&1echo "$time [$yesterdayfile] Move yesterdayfile Success!" >> $logfilefi#删除老的日志文件if [ -f $oldfile ]thenrm -f $oldfile>> $logfile 2>&1echo "$time [$oldfile] Delete Old File Success!" >> $logfileelseecho "no old file"fi#检测redis端口是否正常status=`$rediscli -h 127.0.0.1 -p 6379 info|greprole|awk -F ":" '{print $2}'`$rediscli -h 127.0.0.1 -p 6379 info > /dev/nullif [ $? -eq0 ]; thenecho "$time redis server is OK" >>$logfileecho 目前状态为:$status >>$logfileelseecho "$time no redis service found!">>$logfilesleep 2# try to found it again$rediscli -h 127.0.0.1 -p 6379 info > /dev/nullif [ $? -eq0 ]; thenecho "$time redis server is OK" >>$logfileecho 目前状态为:$status >>$logfile#exit 0elseecho "$time redis server error" >>$logfile#stop keepalived/etc/init.d/keepalived stopecho "$time stop keepalived" >>$logfilefifi3.redis_master.sh脚本该脚本主要实现当keepalived切换到master时,执行slaveof no one语句把redis的端口转换为主模式注意添加该脚本的可执行权限!chmod +x redis_master.sh#!/bin/sh#本机IP地址localip=127.0.0.1#另一台服务器的地址backip=192.168.20.232#redis端口号port="6379 9998 11111 14948"time=$(date '+%Y-%m-%d %H:%M:%S' )#redis部署路径redispath=/home/bbcv/redis#redis-cli部署路径rediscli=$redispath/redis-2.0.0-rc4/redis-cli#日志文件目录logfile=$redispath/logs/redis-state.logfor p in $portdo{echo "$time redis $p端口切换成主端口" >>$logfile$rediscli -h $localip -p $p slaveof no one>>$logfile 2>&1sleep 1}done4.redis_backup.sh该脚本主要实现当keepalived切换到master时,执行slaveof 主redisIP 端口语句,把redis的端口转换为备模式,并同步主redis的数据注意添加该脚本的可执行权限!chmod +x redis_backup.sh#!/bin/sh#本机IP地址localip=127.0.0.1#另一台服务器的地址backip=192.168.20.232#redis端口号port="6379 9998 11111 14948"time=$(date '+%Y-%m-%d %H:%M:%S' )#redis部署路径redispath=/home/bbcv/redis#redis-cli部署路径rediscli=$redispath/redis-2.0.0-rc4/redis-cli#日志文件目录logfile=$redispath/logs/redis-state.logfor p in $portdo{echo "$time redis $p端口切换成$backip的备端口" >>$logfile$rediscli -h $localip -p $p slaveof $backip $p>>$logfile 2>&1sleep 1}done5.安装redis1.新建文件夹,如mkdirredis2.将redis-2.2.13.tar.gz拷入其中3.解压并进入主目录4.make5.make install(Ubuntu上需要sudo执行)6.修改配置文件redis.conf修改如下:daemonize no 改为 daemonize yes取消注释:syslog-enabled no (改为syslog-enabled yes)syslog-facility local0已将修改后的redis.conf文件放入附件,不同需求还需再修改配置文件(如修改端口等)7.在执行redis-server redis.conf启动时,可能会报如下错误:Can't chdir to '/var/db/redis': No such file or directory需要手动创建'/var/db/redis'文件夹# WARNING overcommit_memory is set to 0! Background save may fail under low memory condition需要执行sysctlvm.overcommit_memory=1修改内核参数8.再次执行redis-server redis.conf可成功启动redis6.测试1.查看当前redis是主还是备/home/bbcv/redis/redis-2.0.0-rc4/redis-cli -h 127.0.0.1 -p 6379 info2.在主redisA上新增一条数据,查看备redisB是否同步该数据/home/bbcv/redis/redis-2.0.0-rc4/redis-cli -h 127.0.0.1 -p 63793.停止主redisA,查看虚IP是否切换到备redisB服务器,并查看备redisB服务器是否切换成主状态ip a查看虚IP是否在本机上4.恢复redisA,查看redisA是否从redisB中同步数据。