设为首页 收藏本站
查看: 1513|回复: 0

[经验分享] Redis简介、高可用及集群相关配置

[复制链接]

尚未签到

发表于 2018-11-2 12:28:10 | 显示全部楼层 |阅读模式
一 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
  [root@controller01 ~]# cd /var/lib/redis/
  [root@controller01 redis]# ls
  dump.rdb
  [root@controller01 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
DSC0000.jpg

DSC0001.jpg

DSC0002.jpg

2 安装软件
  server1
DSC0003.jpg

DSC0004.jpg

  复制到其他主机
DSC0005.jpg

  server2
DSC0006.jpg

DSC0007.jpg

  server3
DSC0008.jpg

DSC0009.jpg

三  配置主从架构:
1 server1 为主服务器:
DSC00010.jpg

  配置其监听端口为所有端口
DSC00011.jpg

2 server 2从服务器端配置:
DSC00012.jpg

  配置监听段口为所有
DSC00013.jpg

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

3 server3从服务器端配置:
DSC00015.jpg

DSC00016.jpg

DSC00017.jpg

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

  服务端查看绑定端口情况
DSC00019.jpg

  客户端查看绑定端口情况
DSC00020.jpg

DSC00021.jpg

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

DSC00023.jpg

四 Redis 高可用配置:
1 环境:
主机名IP地址描述server 1192.168.3.10masterserver2192.168.3.20slaveserver3192.168.3.30slave  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 复制配置文件:
DSC00024.jpg

2 修改配置:
DSC00025.jpg

DSC00026.jpg

DSC00027.jpg

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

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

5 启动服务:
DSC00030.jpg

DSC00031.jpg

DSC00032.jpg

6 进行测试:
  此时的master 为server2,如果将server2 down机后,由server1接管
DSC00033.jpg

DSC00034.jpg

DSC00035.jpg

DSC00036.jpg

DSC00037.jpg

五 Redis 集群:
1 添加相关文件:
DSC00038.jpg

2 创建配置文件
DSC00039.jpg

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

4 修改配置文件端口号
DSC00041.jpg

5 安装redis用以启动此服务
  1 安装gcc
DSC00042.jpg

  2 安装redis
DSC00043.jpg

DSC00044.jpg

DSC00045.jpg

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

  查看启动情况
DSC00047.jpg

6  集群搭建:
1 安装相关软件用于搭建集群:
DSC00048.jpg

DSC00049.jpg

DSC00050.jpg

2 集群启动
DSC00051.jpg

3 集群查看
DSC00052.jpg

DSC00053.jpg

DSC00054.jpg

4 基本操作:
1 添加节点:
DSC00055.jpg

DSC00056.jpg

  启动服务:
DSC00057.jpg

  查看服务:
DSC00058.jpg

  1 随机添加节点:
DSC00059.jpg

DSC00060.jpg

  2 添加master节点:
DSC00061.jpg

DSC00062.jpg

  3 为指定的master添加节点:
DSC00063.jpg

DSC00064.jpg

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



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-629846-1-1.html 上篇帖子: Redis 哨兵模式与Redis集群 下篇帖子: redis应用之——标签
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表