美文网首页
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主从及安全

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