美文网首页
day07-Redis主从及安全

day07-Redis主从及安全

作者: 雨醉风尘 | 来源:发表于2018-06-08 20:33 被阅读4次

Redis集群

  • 主从复制

    为了避免单台机器故障导致的数据丢失,我们需要将数据复制多份部署到多台不同的服务器上,这样即使一台服务器出现故障,别的服务器依然能提供服务。 这也要求一台服务器数据更新以后,自动同步更新到其他服务器上。

    • 如何实现

      • Redis 提供了复制(Replication)功能来实现多台 Redis 服务器的数据同步

      • 通过部署多台 Redis 机器,并在配置文件中指定者几台 Redis 服务器之间的主从关系。主负责写入数据,同时将数据实时同步到从机器上。Redis默认Master用于写,Slave用于读。向 Slave 写数据会导致错误。

    方式一: 修改配置文件,启动时,服务器读取配置文件,并自动成为指定服务器的从服务器,从而构成主从复制关系

    启动

    • redis-sever /etc/redis6380.conf //启动master

    • redis-sever /etc/redis6381.conf //启动slaver1

    • redis-sever /etc/redis6382.conf //启动slaver2

      Redis Master配置

      #导入原始配置文件
      include /etc/redis/redis.conf
      
      #守护进程
      daemonize yes
      
      #端口
      port 6380
      
      #进程文件
      pidfile /var/run/redis/redis_6380.pid
      
      #日志文件
      logfile redis-6380.log
      
      #RDB文件
      dbfilename redis-dump-6380.rdb
      

      Redis slave 配置

      #导入原始配置文件
      include /etc/redis/redis.conf
      
      #守护进程
      daemonize yes
      
      #端口
      port 6381
      
      #进程文件
      pidfile /var/run/redis/redis_6381.pid
      
      #日志文件
      logfile redis-6381.log
      
      #RDB文件
      dbfilename redis-dump-6381.rdb
      
      #配置目前的配置是那一台master的slave
      slaveof 127.0.0.1 6380
      

    查看当前机器的角色

      ```
      #master机器信息
      root@aaron:/home/aaron# redis-cli -p 6380
      127.0.0.1:6380> INFO replication
      # Replication
      role:master
      connected_slaves:2
      slave0:ip=127.0.0.1,port=6381,state=online,offset=476,lag=1
      slave1:ip=127.0.0.1,port=6383,state=online,offset=476,lag=1
      master_replid:aa778915d498ad1ea8a5c44cf7aa73e238a95956
      master_replid2:0000000000000000000000000000000000000000
      master_repl_offset:476
      second_repl_offset:-1
      repl_backlog_active:1
      repl_backlog_size:1048576
      repl_backlog_first_byte_offset:1
      repl_backlog_histlen:476
      
      -----------------------------------------------
      #slaver信息
      127.0.0.1:6383> info replication
      # Replication
      role:slave
      master_host:127.0.0.1
      master_port:6380
      master_link_status:up
      master_last_io_seconds_ago:9
      master_sync_in_progress:0
      slave_repl_offset:1246
      slave_priority:100
      slave_read_only:1
      connected_slaves:0
      master_replid:aa778915d498ad1ea8a5c44cf7aa73e238a95956
      master_replid2:0000000000000000000000000000000000000000
      master_repl_offset:1246
      second_repl_offset:-1
      repl_backlog_active:1
      repl_backlog_size:1048576
      repl_backlog_first_byte_offset:253
      repl_backlog_histlen:994
    
      ```
    
    • 方式二: redis-server --slaveof <master-ip> <master-port>, 在启动 Redis 时指定当前服务成为某个主Redis服务的从Slave

    • 容灾处理

    当 master 机器出现故障时(模拟时杀掉redis master服务进程),需要手动将Slave中的一个提升为Master, 剩下的slav配置到新的Master上(冷处理)

    将6381端口的 Slave 提升 master

    127.0.0.1:6381> SLAVEOF no one
    OK
    

    将6382的master设置为6381

    127.0.0.1:6382> SLAVEOF 127.0.0.1 6381
    OK
    

高可用 Sentinel 哨兵

Sentinel 时官方提供的用于监控多个Redis服务实例运行情况的解决方案。

  • 监控

  • Sentinel配置

#复制四份sentinel.conf文件

- sentinel26380.conf
- sentinel26381.conf
- sentinel26382.conf
- sentinel26383.conf

#修改sentinel2638*.conf中的两个配置项

port 26380   //sentinel26380.conf

port 26381   //sentinel26381.conf

port 26382   //sentinel26382.conf

port 26383   //sentinel26383.conf

#修改sentinel监视配置项

<!---->
#                name     masterIP    masterPort  哨兵投票数
sentinel monitor mymaster 127.0.0.1   6381        2

#创建监视主服务器的Sentinel实例

redis-sentinel /etc/redis/sentinel26380.conf

redis-sentinel /etc/redis/sentinel26381.conf

redis-sentinel /etc/redis/sentinel26382.conf

redis-sentinel /etc/redis/sentinel26383.conf

安全

  • 设置密码

redis.conf 文件中设置 requirepass yourPassword

  • 绑定ip
#只允许本机登陆
bind 127.0.0.1
  • 命令禁止或是重命名
#重命名flushall为asdfg
#注意:对于flushall命令,需要保证appendonly.aof文件没有flushall命令,否则服务器无法启动
rename-command flushall asdfg

#禁止使用flushdb命令
rename-command flushdb ""

#禁止使用config命令
rename-command config ""

参考:【动力节点】Redis视频教程

相关文章

  • day07-Redis主从及安全

    Redis集群 主从复制为了避免单台机器故障导致的数据丢失,我们需要将数据复制多份部署到多台不同的服务器上,这样即...

  • redis安全设置及主从配置

    编辑/etc/redisc.conf配置文件 #设置监听ipbind 127.0.0.1 2.2.2.2 #可以...

  • sharding-jdbc 配置主从及 mysql 主从配置

    sharding-jdbc 支持配置主从库,本章主要介绍如何配置主从,及mysql 主从配置mysql主从配置参考...

  • MySQL5.6主从复制及读写分离的实现

    MySQL5.6主从复制及读写分离的实现 MySQL 5.6 基于GTID的主从复制及使用amoeba配置实现读写...

  • 基础复制算法

    主从异步复制只要master写入成功即可;简单,但不安全。比如mysql的binlog复制。 主从同步复制必须所有...

  • MySQL主从复制以及读写分离

    1、主从复制及主主复制的实现 1.1 主从复制 1.1.1、主节点设置 1.1.2 从节点 1.2 主主复制...

  • Redis入门(7) - 持久化、主从复制、安全

    持久化RDB方式Redis实现快照的过程AOF方式操作系统缓存RDB与AOF 复制主从数据库主从复制的意义 安全 ...

  • pipeline及主从同步

    pipeline:前提:redis本身基于tcp的一个Request/Response protocol模式,单个...

  • mysql主从延时

    二,主从延时问题的原因分析及处理 2.1什么是主从延时? 主库发生了操作,从库很久才跟上来(超过10s) 2.2 ...

  • DDIA-数据复制

    综述 首先介绍什么是复制,然后介绍了下主流的复制方式(主从),重点关注了主从复制的流程、技术实现及存在的问题。最后...

网友评论

      本文标题:day07-Redis主从及安全

      本文链接:https://www.haomeiwen.com/subject/gafzsftx.html