redis的主从复制和redis的cluster·

redis的主从复制

特点:

           (1)读写分离:默认,主节点可读可写,从节点只读

           (2)任务分离:主节点只负责写入数据,从节点读取数据,负责生成持久化文件

架构:星型模型和线性模型

星型模式中所有节点都从主节点通信,并请求主节点进行数据同步

线性模型是一个串联模型,主机点只负责和一个从节点通信,其他的从节点和最近的从节点通信并请求获取数据

           星型模型

                        优点:同步数据快,数据一致性好

                        缺点:对主节点的负载压力比较大

           线性模型

                       优点:对主节点压力比较小,只需同步一台从节点数据即可

                       缺点:数据一致性差,同步数据慢

配置:

我们使用一台物理主机上模拟三台redis的安装

我们拷贝redis.conf为redis6379和redis6380,先拷贝俩份,然后我们配置完6380在拷贝6381

cp redis.conf redis6379.conf 

cp redis.conf redis6380.conf 

redis6379:

把rdb和aof关掉

redis6380

修改端口为6380

开启rdb和aof,并把rdb和aof的日志文件名修改成6380

然后需要把它的主节点配置修改了

退出保存即可,6380已经修改完毕

然后把6380拷贝一份6381

修改端口为6381

修改配置文件dump6381.rdb和appendonly6381.aof

然后保存启动测试

测试的时候,主节点写入,但是从节点获取不到信息,这个是我配置的问题,slave配置主机名配错了,所以大家要认真一点就可以了

redis的分片

             redis的分片功能是用来实现负载均衡的,它需要使用一个第三的代理twemproxy来实现。

            twemproxy的安装:

             我们把包twemproxy安装包nutcracker-0.3.0.tar.gz上传服务器上

            解压安装包 tar -zxvf nutcracker-0.3.0.tar.gz -C /root/training/

            执行编译和安装

            ./configure --prefix=/root/training/proxy
            make
            make install

            配置配置文件

            在sbin文件下创建conf目录,一定要在sbin下创建conf目录(不然检查配置文件是否配置正确的时候总是通不过,其中就有

             这个原因),并把解压后的conf/nutcracker.yml拷贝到这个目录下

            cp  /root/tools/nutcracker-0.3.0/conf/nutcracker.yml /root/tools/nutcracker-0.3.0/conf

            配置nutcracker.yml

           alpha:
                    listen: 127.0.0.1:22121
                    hash: fnv1a_64
                    distribution: ketama
                    auto_eject_hosts: true
                    redis: true
                    server_retry_timeout: 2000
                    server_failure_limit: 1
                    servers:
                               - 127.0.0.1:6380:1
                               - 127.0.0.1:6381:1

            servers表示要代理的机器ip和权重

          可以使用检测命令检测一下配置格式是否正确

         

        

        启动nutcracker

         ./nutcracker -d -c conf/nutcracker.yml

         使用redis的客户端连接twemproxy

         ./redis-cli -p 22121

        

redis主从复制的HA功能

       redis主从复制是通过哨兵的功能实现的,哨兵可以实现主节点的监控并当主节点宕机后自动选举主节点,然后让其他节点重练选举后的主节点

       配置

    核心配置文件:cp ~/tools/redis-3.0.5/sentinel.conf conf/
                     别名      主节点的地址  配置几个哨兵没有收到心跳,就进行HA的切换
    sentinel monitor mymaster 127.0.0.1 6379 1   

   如果简单的配置这个已经足够了

   然后启动哨兵,启动哨兵和启动redis节点差不多

   

    然后我们杀死主节点后再看日志

    

     然后我们的客户端就可以连接哨兵进行写日志了

   除了上边简单的配置我们再了解一下其他的节点

    sentinel down-after-milliseconds mymaster 30000    #当主节点宕机后多长时间后进行切换

   sentinel leader-epoch mymaster 1  #当主节点切换后,同时允许几台从节点去连接主机获取数据,这个一定不能太大

redis的cluster

redis的cluster至少需要六个节点,三主三从,一个主节点对应一个从节点

Redis的分布式存储解决方案,负载均衡、高可用、扩展cluster都支持,

    (*)核心思想:Hash分区
    (*)槽号:slot,就是计算后的Hash值  从0到16383共16384个槽
    (*)安装 部署Redis Cluster:基于Ruby的脚本
        安装Ruby环境:
            yum -y install ruby
        安装Ruby和Redis的接口

           gem  install redis-3.0.5.gem

        gem这个安装只出现在redis的3和4的版本,5的版本已经不用了

       修改配置文件

       在 redis的目录下创建一个cluster 用来放6个配置文件

       mkdir cluster 

       拷贝配置文件

       cp  /root/tools/redis-3.0.5/conf/redis.conf /root/training/redis/cluster/redis6379.conf

      修改6379的配置文件:
            daemonize yes
            port 6379
            cluster-enabled yes
            cluster-config-file nodes/nodes-6379.conf #在每个节点上,都会维护一份集群的配置需要提前创建nodes目录

                                                                             #而且如果这样配置的话启动的时候需要在nodes同级目录下启动不然找不到                                                                                   #nodes目录redis启动不起来,所以最后这里写绝对路径
            cluster-node-timeout 15000
            dbfilename dump6379.rdb
            appendonly yes
            appendfilename "appendonly6379.aof"

        然后拷贝redis6379 到redis6380

         cp redis6379.conf redis6380.conf

         cp redis6379.conf redis6381.conf

         cp redis6379.conf redis6382.conf

         cp redis6379.conf redis6383.conf

         cp redis6379.conf redis6384.conf

         然后就把里边的6379改成对应的配置就可以了

       通过各个配置启动各个redis

      [root@bigdata111 bin]# ./redis-server ../cluster/redis6380.conf 
        [root@bigdata111 bin]# ./redis-server ../cluster/redis6381.conf  
         [root@bigdata111 bin]# ./redis-server ../cluster/redis6382.conf  
      [root@bigdata111 bin]# ./redis-server ../cluster/redis6383.conf  
      [root@bigdata111 bin]# ./redis-server ../cluster/redis6384.conf

     然后对这个几个节点进行分片

      使用redis提供的ruby脚本进行初始化
            cp ~/tools/redis-3.0.5/src/redis-trib.rb bin/
            
            --replicas指定主节点的冗余节点的个数
            
            bin/redis-trib.rb create --replicas 1 192.168.112.111:6379 192.168.112.111:6380 192.168.112.111:6381 192.168.112.111:6382 192.168.112.111:6383 192.168.112.111:6384

 使用客户端登录:bin/redis-cli -c -p 6379
            -c表示:登录集群

当我们使用6379端口登陆上集群,并添加一个值得时候通过hash计算直接放到了12539的槽上,也就是6381的端口上

Redis的内存设置:内存过期的策略
        (*)监控内存
            [root@bigdata111 redis]# bin/redis-cli info |grep mem
            used_memory:816000               占用的内存
            used_memory_human:796.88K         把上面的值换成K
            used_memory_rss:7606272
            used_memory_peak:816000             内存的峰值
            used_memory_peak_human:796.88K
            used_memory_lua:36864
            mem_fragmentation_ratio:9.32
            mem_allocator:jemalloc-3.6.0

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

枣泥馅

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值