jsnjzlw 发表于 2018-11-2 12:28:10

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
  # cd /var/lib/redis/
  # ls
  dump.rdb
  # 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 1192.168.3.10masterserver2192.168.3.20slaveserver3192.168.3.30slave  2Redis 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 修改配置:



  参数详解:
  1sentinel 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后确认其断线
  2sentinel 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 上


页: [1]
查看完整版本: Redis简介、高可用及集群相关配置