zoukankan      html  css  js  c++  java
  • redis 主从配置和集群配置

    主从配置 |  集群配置

    redis主从

    主从配置原因:

    1.到达读写分离,读的操作和写操作比例10 : 1读数据频繁,写数据次数少,这样可以配置1个master数据库用来写数据,配置多个slave从数据库来满足读取操作
    2.降低服务器压力,读取数据访问的速度加快
    3.主的数据库会将修改内容同步到从的数据库-数据备份


    配置步骤:

    配置主:

      1.修改etc/redis/redis.conf文件:

        bind 主数据库ip地址

        port 主数据库端口号

      2.重启redis服务

        sudo service redis stop

        redis-server redis.conf

    配置从:

      1.复制etc/redis/redis.conf文件

        sudo cp redis.conf slaveof.conf

      2.修改etc/redis/redis.conf文件

        2.0 sudo vim slaveof.conf

        2.1 bind 从数据库ip

        

        2.2 port 从数据库端口

        

        2.3 修改slaveof 主数据库ip地址 主数据库端口号

        

      3.重启redis服务

        3.1 最好先干掉之前的redis服务

          px aux | grep redis

          sudo kill -9 pid

          

        3.2 分别启动主/从服务

          sudo redis-server redis.conf

          sudo redis-server slaveof.conf

      4.查看主从关系

        redis-cli -h ip地址 -p 端口 info Replication

        

    测试数据

      1. master主服务

        1.1 进入master客户端: redis-cli -h -p 6379

        1.2 master上写入测试数据

          set name james

      2. slaveof从服务

        2.1 进入slaveof客户端: redis-cli -h -p 6378

        2.2 读取数据

          get name

          

    redis简单的主从配置就这样

    redis集群

    集群配置原因

    • 集群是一组相互独立的、通过高速网络互联的计算机,它们构成了一个组,并以单一系统的模式加以管理。一个客户与集群相互作用时,集群像是一个独立的服务器。集群配置是用于提高可用性和可缩放性。 

    当请求到来首先由负载均衡服务器处理,把请求转发到另外的一台服务器上。

      

    配置步骤

    1.在redis-config(集群目录)目录下创建配置文件7000.conf,7001.conf,7002.conf,7003.conf,7004.conf,7005.conf

       注: 集群最少需要6个服务器

      1.1 在配置文件中进行如下配置:

        port 端口

        bind ip地址

        daemonize yes

        pidfile 7000.pid  # 对应服务器进程的pid

        cluster-enabled yes  # 开启集群

        cluster-config-file 7000_node.conf  # node节点文件

        cluster-node-timeout 15000

        appendonly yes

    2. 使用相应的配置文件启动redis服务

      redis-server 7000.conf

      redis-server 7001.conf

      redis-server 7002.conf

      redis-server 7003.conf

      redis-server 7004.conf

      redis-server 7005.conf

      ps aux | grep redis

      

    3. 创建集群

    • redis的安装包中包含了redis-trib.rb,用于创建集群
    • 将命令复制,这样可以在任何目录下调用此命令

      sudo cp /usr/share/doc/redis-tools/examples/redis-trib.rb /usr/local/bin/
    • 安装ruby环境,因为redis-trib.rb是用ruby开发的

    • sudo apt-get install ruby
    •   

       创建之前先确认一下gem源地址 : 国外的地址因为某种原因...

        -- 先查看使用的 gem 源是什么地址
        gem source -l -- 如果是https://rubygems.org/ 就需要更换
        -- 更换指令为
        gem sources --add https://gems.ruby-china.org/ --remove https://rubygems.com/ # 之前国内的.org域名已经失效
        -- 通过 gem 安装 redis 的相关依赖
        sudo gem install redis
        -- 然后重新执⾏指令
            # redis-trib.rb : 创建集群的命令关键字
            # create: 创建集群
            # --replicas 1 :设置集群的对应关系 1:1对1的关系(一个master对应一个slave)
             redis-trib.rb create --replicas 1 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005
     
        会提示如下主从信息: 并输入yes
     
        

        提示success 创建完成

    数据测试

      **集群创建成功后,所有的服务器都是master 没有主从之分

      

       **从上图可以看到前三个7000,7001,7002 都有一个slots卡槽地址 范围(16384)  , 数据必须要在有卡槽的地方进行一个写入和读取, 而没有卡槽的服务器则需要借助有卡槽的服务器来进行数据的写入和读取    

      1. 加入集群 注意连接服务器 -c:表示加入集群

        redis-cli -h 127.0.0.1 -c -p 7002

      2. 写入数据

        set name durant

        

        由于7005并没有卡槽,所以它借用了卡槽地址为5798的服务器 , 并且重定向到了7001服务器

      3. 读取数据并且修改数据

        get name

        set age 18 

         

        **这说明了集群中任意服务器均可以进行读写数据的操作,数据完全共享

          数据存储在哪个卡槽地址中,读取要去卡槽地址对应的端口(ip)去读取

        **关于卡槽值如何计算并分配写入数据

          CRC16算法

            具体算法:CRC16(key) % 16384

          

          Redis集群没有并使用传统的一致性哈希来分配数据,而是采用另外一种叫做哈希 槽 (hash slot)的公式来分配的。

          redis cluster 默认分配了 16384 个slot,当我们 set一个key 时,会用CRC16算法来取模得到所属的slot,然后将这个key 分到哈 希槽区间的节点上,

          具体算法就是:CRC16(key) % 16384。所以我们在测试的 时候看到set 和 get 的时候,直接跳转到了7000端口的节点

          

    至此,一个简单的redis集群就基本配置完毕了

  • 相关阅读:
    [asp.net] 网页自动刷新总结
    内容页中修改母版页内容
    [asp.net] 页面传值方法小记
    [VSS2005] 源代码管理bin文件夹里的.dll总是被签出,不能同时编译解决办法
    [asp.net] 设置与获取CheckBoxList多选的值
    [转] asp.net中repeater按钮传值与分页
    [asp.net] 验证控件的属性及用法
    [asp.net] 格式化repeater字段显示
    VPS绑定中文域名方法
    M/T法测速经典解析(转)
  • 原文地址:https://www.cnblogs.com/lzc978/p/10169693.html
Copyright © 2011-2022 走看看