• redis集群代理predixy


    在Linux部署Redis代理Predixy实现数据分片

     https://juejin.cn/post/6863701563685371917
    4 个月前 · 来自专栏 运维

    前言

    本文以predixy-1.0.5为例,讲述 Redis 代理 Predixy 安装过程。

    Predixy 是一款高性能全特征 Redis 代理,支持 Redis-sentinel 和 Redis-cluster。作者拿其它常用代理做了 性能测评,Predixy 在各个维度性能都是最优的,与其他代理的 功能对比

    我们可以通过取模、随机、一致性哈希等算法将数据分散在多个 Redis 服务来实现水平扩展。但是客户端直连就需要跟每个 Redis 服务产生连接,而代理的主要作用就是为了避免这一问题。客户端连接代理进行操作,让代理通过分片算法来操作对应的 Redis 服务。

    准备工作

    本文服务器 Linux CentOS 64 7.5 版本。

    开始前已经准备好了两套主从集群,可以参考 在Linux部署Redis主从和哨兵集群

    • mymaster【6380(从),6381(从),6382(从)】
    • mymaster2【6383(主),6384(从),6384(从)】

    以及同时监控这两套主从集群的哨兵【26380,26381,26382】

    安装步骤

    下载解压

    由于 Predixy 需要 C++11 编译器支持,这里选择跳过编译,直接在 GitHub Predixy Releases 页面下载最新编译后的包。

    echo "创建单独目录" > /dev/null
    mkdir -p ~/soft/redis/
    
    echo "下载包,如果太慢其他方式下载后上传到这里也可以" > /dev/null
    wget -P ~/soft/redis/ https://github.com/joyieldInc/predixy/releases/download/1.0.5/predixy-1.0.5-bin-amd64-linux.tar.gz
    
    echo "解压到自己指定目录" > /dev/null
    tar -xf ~/soft/redis/predixy-1.0.5-bin-amd64-linux.tar.gz -C /opt/soft/

    配置环境变量

    echo "追加PREDIXY_HOME环境变量" > /dev/null
    echo '
    export PREDIXY_HOME=/opt/soft/predixy-1.0.5
    export PATH=$PATH:$PREDIXY_HOME/bin' >> /etc/profile
    
    echo "使环境变量生效" > /dev/null
    source /etc/profile

    修改配置

    编辑主配置修改下面信息,详细配置方式可以参考 GitHub Predixy 中文配置文档

    vim /opt/soft/predixy-1.0.5/conf/predixy.conf
    • 让 Predixy 绑定本机 7617 端口

     

     

    • 使用 sentinel.conf 配置

     

     

    编辑引入的配置追加下面内容(其实是复制配置中注释的模板进行了修改):

    vim /opt/soft/predixy-1.0.5/conf/sentinel.conf
    SentinelServerPool {
        Databases 16
        Hash crc16
        HashTag "{}"
        Distribution modula
        MasterReadPriority 60
        StaticSlaveReadPriority 50
        DynamicSlaveReadPriority 50
        RefreshInterval 1
        ServerTimeout 1
        ServerFailureLimit 10
        ServerRetryTimeout 1
        KeepAlive 120
        Sentinels {
            + 127.0.0.1:26380
            + 127.0.0.1:26381
            + 127.0.0.1:26382
        }
        Group mymaster {
        }
        Group mymaster2 {
        }
    }

    上面 Sentinels 是哨兵服务;Group 后面对应的是哨兵配置里的 <主节点别名>,因为哨兵监控了两套主从集群,这里配置两个 Group 代表会根据算法将操作分散到两套集群中。下面是 Sentinel 跟上面相关的 Sentinel 监控主节点的配置:

    # sentinel monitor <主节点别名> <主节点IP> <主节点端口号> <n个哨兵认为主节点主观下线,才会将主节点标记为客观下线>
    sentinel monitor mymaster 127.0.0.1 6380 2
    sentinel monitor mymaster2 127.0.0.1 6383 2

    启动/停止

    启动 Predixy,通过后面的启动日志可以看到代理获取到了哨兵和主从节点地址。

    predixy /opt/soft/predixy-1.0.5/conf/predixy.conf

     

     

    Predixy 只负责一套主从集群可以使用 KEYS、WATCH、MULTI 等聚合操作,让 Group 配置只有一个就可以了,这样数据也会分片到统一个主从集群;但是负责多个主从集群的时候不支持聚合操作,使用会报错。

    测试

    # 连接 Predixy
    redis-cli -p 7617
    
    # 通过代理写入两个数据
    set k5 k5
    set key5 key5

    然后可以看到数据分散到了两个不同主从集群。

    # redis-cli -p 6380
    redis-cli -p 6380
    
    keys *

     

     

     

     

    通过 key 前加个 {tag} 可以让数据分片到同一个 Redis 服务。

    set {test}k6 k6
    set {test}key6 key6
  • 相关阅读:
    加密
    python数据类型
    json
    xml
    物理层
    计算机网络概述
    js之BOM概述
    消息队列介绍
    linux bond nmcli命令
    linux iostat
  • 原文地址:https://www.cnblogs.com/cheyunhua/p/15942287.html
Copyright © 2020-2023  润新知