Redis简介、高可用及集群相关配置

一 Redis 持久化和复制

1 Redis持久化的两种方式:

1 RDB:可以再指定的时间间隔内生成数据集的时间点快照(每隔一定的时间做一个快照,进行将其刷新到磁盘上,断电)
2 AOF:把服务器执行的所有写操作命令记录下来,然后在服务器启动时,通过重新执行这些命令来还原数据集,AOF文件的操作相当于自增操作,
Redis可以同时使用RDB和AOF这两种方式。
当Redis重启时,会优先使用AOF文件来还原数据集。
你也可以关闭持久化功能
RDB:可以做备份,RDB可以最大化Redis性能,父进程在保存RDB文件时唯一要做的就是fork出一个子进程,然后这个子进程会处理接下来的所有保存工作,父进程无需进行任何磁盘的I/O操作。
RDB:数据恢复快
RDB缺点:时间间隔不能太频繁,fork可能会非常耗时,导致服务器在某一时间段内停止处理客户端,
save 900 1 在900s内,如果有一个key被改变,那么就进行快照
save 300 10 如果在300s内,如果有10个key被改变,那么久进行快照
save 60 10000 同上
快照的存储位置:
The filename where to dump the DB
dbfilename dump.rdb
[[email protected] ~]# cd /var/lib/redis/
[[email protected] redis]# ls
dump.rdb
[[email protected] redis]# file dump.rdb
dump.rdb: data
快照的流程
1 fork子进程
2 父进程继续干活
3 子进程开始将内存中的数据开始写入磁盘中的临时文件
4 当子进程写完数据后,用临时文件替换RDB文件,此RDB文件是经过压缩的,因此其占用空间小
5 服务启动时,直接将此文件载入到内存中即可
AOF优点
每一秒执行写操作,down机只会丢失1秒的数据
AOF 文件是一个只进行追加操作的日志文件,即使日志因为某些原因而包含了威胁如完整的命令,Redis-check-aof工具也可以修复
Redis可以在AOF文件体积变大时,自动地在后台对AOF进行重写,
AOF 很容易被读懂
AOF缺点:
1 体积大于RDB
2 速度慢于RDB
Redis 复制(replication)
Redis支持简单且医用的主从复制(master-slave replication)功能,该功能可以让服务器(slave server)成为主服务器的精确复制品

2 Redis复制

1 使用异步复制,从Redis2.8开始,从服务器会以每一秒的频率向主服务器报告复制流的处理进度
2 一个主服务器可以有多个从服务器
3 不仅主服务器可以有从服务器,从服务器也可以有自己的从服务器
4 复制功能不会阻塞主服务器: 即使有一个或多个从服务器正在进行初次同步, 主服务器也可以继续处理命令请求。
5 复制功能也不会阻塞从服务器: 只要在?redis.conf?文件中进行了相应的设置, 即使从服务器正在进行初次同步, 服务器也可以使用旧版本的数据集来处理命令查询。
6 不过, 在从服务器删除旧版本数据集并载入新版本数据集的那段时间内, 连接请求会被阻塞。
7 你还可以配置从服务器, 让它在与主服务器之间的连接断开时, 向客户端发送一个错误。
8 复制功能可以单纯地用于数据冗余(data redundancy), 也可以通过让多个从服务器处理只读命令请求来提升扩展性(scalability): 比如说, 繁重的?SORT?命令可以交给附属节点去运行。
9 可以通过复制功能来让主服务器免于执行持久化操作: 只要关闭主服务器的持久化功能, 然后由从服务器去执行持久化操作即可。

二 环境准备

1 安装gcc



2 安装软件

server1


复制到其他主机

server2


server3

三 配置主从架构:

1 server1 为主服务器:


配置其监听端口为所有端口

2 server 2从服务器端配置:


配置监听段口为所有

2 配置主服务器的IP和端口为6379和server1 IP

3 server3从服务器端配置:




服务器端及客户端重启服务加载配置,并在服务端插入数据:

服务端查看绑定端口情况

客户端查看绑定端口情况

4 客户端查看服务端插入数据是否同步成功:


四 Redis 高可用配置:

1 环境:

主机名 IP地址 描述
server 1 192.168.3.10 master
server2 192.168.3.20 slave
server3 192.168.3.30 slave

2 Redis sentinel介绍
sentinel 的三个任务:
1 监控(monitoring):不断检测主服务器和从服务器是否运行正常
2 提醒(notification): 当被监控的某个redis服务器出现问题时,sentinel 可以通过API向管理员或其他应用程序发送通知:
3 自动故障迁移:当一个主服务器不能正常工作时, Sentinel 会开始一次自动故障迁移操作, 它会将失效主服务器的其中一个从服务器升级为新的主服务器, 并让失效主服务器的其他从服务器改为复制新的主服务器; 当客户端试图连接失效的主服务器时, 集群也会向客户端返回新主服务器的地址, 使得集群可以使用新主服务器代替失效服务器。
启动redis-sentinel程序:
对于 redis-sentinel 程序, 你可以用以下命令来启动 Sentinel 系统:
对于 redis-server 程序, 你可以用以下命令来启动一个运行在 Sentinel 模式下的 Redis 服务器:
redis-server /path/to/sentinel.conf --sentinel
两种方法都可以启动一个 Sentinel 实例。
启动 Sentinel 实例必须指定相应的配置文件, 系统会使用配置文件来保存 Sentinel 的当前状态, 并在 Sentinel 重启时通过载入配置文件来进行状态还原。
如果启动 Sentinel 时没有指定相应的配置文件, 或者指定的配置文件不可写(not writable), 那么 Sentinel 会拒绝启动。

sentinel API
默认情况下,sentinel 使用TCP的26379端口
sentinel 接受redis协议格式的命令请求,所以你可以使用 redis-cli 或者任何其他 Redis 客户端来与 Sentinel 进行通讯。
有两种方式可以和 Sentinel 进行通讯:
第一种方法是通过直接发送命令来查询被监视 Redis 服务器的当前状态, 以及 Sentinel 所知道的关于其他 Sentinel 的信息, 诸如此类。
另一种方法是使用发布与订阅功能, 通过接收 Sentinel 发送的通知: 当执行故障转移操作, 或者某个被监视的服务器被判断为主观下线或者客观下线时, Sentinel 就会发送相应的信息。

2 复制配置文件:

2 修改配置:




参数详解:
1 sentinel monitor mymaster 192.168.3.10 6379 2
设置master 并写入如果有两个节点认为主服务器down机,则主服务器down机
主观下线和客观下线
指单个实例sentinel实例对服务器作出的下线判断操作
如果服务器在给定的毫秒数之内, 没有返回 Sentinel 发送的 PING 命令的回复, 或者返回一个错误, 那么 Sentinel 将这个服务器标记为主观下线(subjectively down,简称 SDOWN )。
客观下线:多个slave对同一个服务器作出sdown判断

1 sentinel down-after-milliseconds mymaster 5000
设置认为服务器断线的确认时间,即5s后确认其断线
2 sentinel config-epoch mymaster 1
设置当主服务器down机后负责与新的master同步的slave 的数量,一旦slave参与与master之间的消息同步,则其不能对外客户端进行响应

4 复制配置文件至其他节点:

5 启动服务:



6 进行测试:

此时的master 为server2,如果将server2 down机后,由server1接管




五 Redis 集群:

1 添加相关文件:

2 创建配置文件

3 拷贝配置文件到其他节点:

4 修改配置文件端口号

5 安装redis用以启动此服务

1 安装gcc

2 安装redis


启动服务:其他的一次类推

查看启动情况

6 集群搭建:

1 安装相关软件用于搭建集群:



2 集群启动

3 集群查看



4 基本操作:

1 添加节点:



启动服务:

查看服务:

1 随机添加节点:


2 添加master节点:


3 为指定的master添加节点:


2 节点的移动,将某一个slave 节点移动到对应的master 上

原文地址:http://blog.51cto.com/11233559/2110938

时间: 2024-10-01 06:12:25

Redis简介、高可用及集群相关配置的相关文章

高可用RabbitMQ集群安装配置

RabbitMQ集群安装配置+HAproxy+Keepalived高可用 rabbitmq 集群 消息队列 RabbitMQ简介 RabbitMQ是流行的开源消息队列系统,用erlang语言开发.RabbitMQ是AMQP(高级消息队列协议)的标准实现. AMQP,即Advanced Message Queuing Protocol,高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计.消息中间件主要用于组件之间的解耦,消息的发送者无需知道消息使用者的存在,反之亦然.AMQP的主

Redis高可用复制集群实现

redis简单介绍 Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库.Redis 与其他 key - value 缓存产品有以下三个特点: 支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用. 不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储. 支持数据的备份,即master-slave模式的数据备份. Redis的持久化 RDB:snapshotting 二进制格式:按

Linux HA Cluster高可用服务器集群,所谓的高可用不是主机的高可用,而是服务的高可用。

什么叫高可用:一个服务器down掉的可能性多种多样,任何一个可能坏了都有可能带来风险,而服务器离线通常带来的代价是很大的,尤其是web站点,所以当某一台提供服务的的服务器down掉不至于服务终止的就叫高可用. 什么叫心跳:就是将多台服务器用网络连接起来,而后每一台服务器都不停的将自己依然在线的信息很简短很小的通告给同一个网络中的备用服务器的主机,告诉其实主机自己依然在线,其它服务器收到这个心跳信息就认为本机是在线的,尤其是主服务器. 心跳信息怎么发送,由谁来收,其实就是进程中的通信两台主机是没法

构建高可用ZooKeeper集群

ZooKeeper 是 Apache 的一个顶级项目,为分布式应用提供高效.高可用的分布式协调服务,提供了诸如数据发布/订阅.负载均衡.命名服务.分布式协调/通知和分布式锁等分布式基础服务.由于 ZooKeeper 便捷的使用方式.卓越的性能和良好的稳定性,被广泛地应用于诸如 Hadoop.HBase.Kafka 和 Dubbo 等大型分布式系统中. 本文的目标读者是对 ZooKeeper 有一定了解的技术人员,将从 ZooKeeper 运行模式.集群组成.容灾和水平扩容四方面逐步深入,最终构建

corosync+pacemaker实现高可用(HA)集群

corosync+pacemaker实现高可用(HA)集群(一) ????重要概念 在准备部署HA集群前,需要对其涉及的大量的概念有一个初步的了解,这样在实际部署配置时,才不至于不知所云 资源.服务与主机(又称节点)的关系: 资源包括vip,httpd,filesystem等: 可整合多个资源形成一个服务: 服务必运行在某个主机上,主机上也可不运行服务(此为空闲主机): 服务里的所有资源应该同时运行在同一个节点上,实现方式有2种: 资源组: 排列约束 资源类型 primitive(或native

heartbeat httpd nfs 实现高可用web集群

一 环境准备 二 拓扑结构 三 前提条件 四 安装相关软件 五 配置heartbeat 六 测试web集群 七 问题汇总 八 共享存储 一 环境准备 操作系统 centos 6.4 x86_64 最小化安装 如使用yum 安装的方式 centos5.5 安装的是V2.X ,centos 6.4 安装的是V3.X YUM 安装 Vim man ntp "development tools" "server platform development" "des

构建高可用ZooKeeper集群(转载)

ZooKeeper 是 Apache 的一个顶级项目,为分布式应用提供高效.高可用的分布式协调服务,提供了诸如数据发布/订阅.负载均衡.命名服务.分布式协调/通知和分布式锁等分布式基础服务.由于 ZooKeeper 便捷的使用方式.卓越的性能和良好的稳定性,被广泛地应用于诸如 Hadoop.HBase.Kafka 和 Dubbo 等大型分布式系统中. 本文的目标读者是对 ZooKeeper 有一定了解的技术人员,将从 ZooKeeper 运行模式.集群组成.容灾和水平扩容四方面逐步深入,最终构建

搭建LVS+Keepalived高可用负载集群

搭建LVS+Keepalived高可用负载集群 最近,本屌接到公司的任务,公司新上20台服务器,需要搭建一整套架构来运行公司的业务,其中有应用服务器,认证服务器,数据库服务器等.服务器基础架构中的应用服务器集群要有高可用性,且需要负载均衡.当我接到这个任务的时候,脑子里第一个想法就是LVS+Keepalived. 由于公司资金有限,直接上硬件的负载均衡设备是不可能的了,所以只好使用软件来实现,LVS在负载均衡集群中无疑是一种很好的方案,使用LVS可以同时分发10台以下的设备,用在我们这个项目中是

高可用mysql集群搭建

对web系统来说,瓶颈大多在数据库和磁盘IO上面,而不是服务器的计算能力.对于系统伸缩性我们一般有2种解决方案,scale-up(纵向扩展)和scale-out(横向扩展).前者如扩内存,增加单机性能,更换ssd等,虽然看似指标不治本而且比较昂贵,但确实是非常有效的,大多数应用的数据规模不是很大,当内存足够缓存下所有数据的时候,磁盘就没有什么压力了:后者譬如各类分布式解决方案,冗余磁盘阵列等. 在我看来,mysql读写分离是一个scale-up和scale-out的结合体,通过多个机器服务来提升