首页 > 数据库 >在Linux部署Redis代理Predixy实现数据分片

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

时间:2023-04-05 16:58:31浏览次数:63  
标签:1.0 Predixy Redis predixy Linux soft 主从

前言

本文以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

image-20210926172351574

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 *

image-20210926173430007

image-20210926173442589

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

set {test}k6 k6
set {test}key6 key6

参考

GitHub Twemproxy

GitHub Predixy

在Linux部署Redis主从和哨兵集群

标签:1.0,Predixy,Redis,predixy,Linux,soft,主从
From: https://www.cnblogs.com/shuiyao3/p/17289734.html

相关文章

  • 【Linux】性能调优命令
    进程性能pidstatcat/proc/5598(PID)/statusfreepstoppstreepgrepvmstat#使用top命令,查找pid$top#通过TOP-H-p进程ID,找到具体的线程占用情况$top-H-p21564#通过命令pstack进程ID显示线程堆栈\$pstack24714Java相关参考文档:https://qinxuew......
  • 在Linux部署Redis代理Twemproxy实现数据分片
    前言本文主要讲述Redis代理Twemproxy安装过程。Twemproxy是推特开源用于Memcached和Redis的轻量级代理。这里以0.5.0版本为例。我们可以通过取模、随机、一致性哈希等算法将数据分散在多个Redis服务来实现水平扩展。但是客户端直连就需要跟每个Redis服务产生连接,......
  • 在Linux部署ElasticJob-Lite-UI运维控制台
    前言ElasticJob-Lite-UI是任务的分布式调度解决方案(ElasticJob-Lite)搭配的可视化运维控制台。运维控制台和ElasticJob-Lite并无直接关系,是通过读取作业注册中心(Zookeeper)数据展现作业状态,或更新注册中心数据修改全局配置。它具有这些功能:登录安全控制;注册中心、事件追踪数据源管......
  • Redis——(主从复制、哨兵模式、集群)的部署及搭建
    重点:主从复制:主从复制是高可用redis的基础,主从复制主要实现了数据的多机备份,以及对于读操作的负载均衡和简单的故障恢复。哨兵和集群都是在主从复制基础上实现高可用的。缺点:故障恢复无法自动化,写操作无法负载均衡,存储能力受到单机的限制。哨兵:在主从复制的基础上,哨兵......
  • 在Linux部署Etcd集群
    前言目前解决分布式系统下数据强一致性的主要算法理论是Paxos和Raft,偏向CAP定理一致性(Consistency)、可用性(Availability)、分区容错性(Partitiontolerance)中的CP。Raft在容错和性能方面和Paxos相当,不同之处在于它将问题分解成相对独立的子问题,逻辑较为清晰,更易于理解。关于Raft......
  • 在Linux部署单机Redis完整过程
    前言本文以redis-6.2.5为例,讲述在Linux系统下单机Redis下载、编译、打包、安装为服务、启动和访问的整个过程。安装环境为LinuxCentOS64,本文用的7.5版本.下载编译目录在当前目录soft/redis下,最终服务可执行程序在/opt/soft/redis6中。准备工作#查看是否有文件下载......
  • 在Linux部署Apollo配置中心
    前言这篇是参考官网文档总结的Apollo分布式部署方式,包含具体步骤、资源和相关脚本,也在必要的地方给出了资料来源。通过Apollo-中文文档-部署架构可以了解到单机、集群和高可用部署架构的最佳实践方式。安装步骤本篇实践是在Linux系统,使用Apollo1.9.1版本为例,要求环境包含......
  • linux Tun/Tap 虚拟网卡
    一、TUN、TAP虚拟网卡的工作原理:+----------------------------------------------------------------+|||+--------------------++--------------------+|||UserApplicationA|......
  • 在Linux安装Kafka监控系统EFAK
    前言EFAK(EagleForApacheKafka)是一个简单、高性能的Kafka集群监控系统,实现了监控、可视化操作Topic/Zookeeper、SQL查询、告警等功能,它以前的名字叫KafkaEagle。我们重点看看如何安装以及简单使用它。kafka版本支持:0.8.2.x,0.9.x,0.10.x,0.11.x,1.x,2.x.支持平台:Mac......
  • 在Linux安装Maven
    前言Linux系统安装、配置Maven步骤和相关资源地址,以3.8.2版本为例。安装下载解压#备用地址清华镜像https://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.8.2/binaries/apache-maven-3.8.2-bin.tar.gzecho"创建下载、编译目录">/dev/nullmkdir-p~/soft/......