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

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

时间:2023-04-05 16:55:06浏览次数:50  
标签:twemproxy Twemproxy nutcracker Redis dev echo Linux null

前言

本文主要讲述 Redis 代理 Twemproxy 安装过程。

Twemproxy 是推特开源用于 Memcached 和 Redis 的轻量级代理。这里以0.5.0版本为例。

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

准备工作

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

启动多个Redis服务,本文启动了两个 Redis 服务 6386 和 6387。

安装步骤

下载源码编译

  • 通过Git下载
echo "安装Git如果没有的话" > /dev/null
yum -y install git

echo "创指定目录" > /dev/null
mkdir -p ~/soft/redis/twemproxy-0.5.0

echo "从 GitHub 克隆源码" > /dev/null
git clone https://github.com/twitter/twemproxy.git ~/soft/redis/twemproxy-0.5.0
echo "下载" > /dev/null
wget -O ~/soft/redis/twemproxy-0.5.0.tar.gz https://github.com/twitter/twemproxy/archive/refs/tags/0.5.0.tar.gz

echo "解压" > /dev/null
tar -xf ~/soft/redis/twemproxy-0.5.0.tar.gz -C ~/soft/redis/

进入解压目录

cd ~/soft/redis/twemproxy-0.5.0

配置、编译,完成后可以在 src 目录下看到可执行程序 nutcracker。

echo "安装必要的工具" > /dev/null
yum install -y automake libtool

echo "配置、编译" > /dev/null
autoreconf -fvi
./configure
make

设置为系统服务

将 Twemproxy 配置为系统服务方便使用。

echo "拷贝启动脚本到 init.d 目录" > /dev/null
cp scripts/nutcracker.init /etc/init.d/twemproxy
echo "给予执行权限" > /dev/null
chmod +x /etc/init.d/twemproxy


echo "下面这些都是 nutcracker.init 会使用到的" > /dev/null
echo "拷贝可执行程序,这样在系统任意位置都可以使用 nutcracker" > /dev/null
cp src/nutcracker /usr/bin

echo "拷贝配置文件" > /dev/null
mkdir /etc/nutcracker
cp conf/* /etc/nutcracker
echo "备份配置文件" > /dev/null
cp /etc/nutcracker/nutcracker.yml /etc/nutcracker/nutcracker.yml.bak

修改配置文件

修改代理配置,去掉多余部分。

vim /etc/nutcracker/nutcracker.yml

通过配置项servers指定被代理的Redis服务,格式为 IP:端口:权重。

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:6386:1
   - 127.0.0.1:6387:1

启动/停止/查看状态

# 启动
service twemproxy start
# 停止
service twemproxy stop
# 查看状态
service twemproxy status

测试分片效果

通过代理写入数据

# 连接代理
redis-cli -p 22121

# 写入测试数据
set 1 1

# 写入测试数据
set k1 k1

另开两个 ssh 窗口分别登陆两个 Redis 服务可以看到数据分散在了两台服务上

# redis-cli -p 6387
redis-cli -p 6386

# 查看所有key
keys *

数据分片环境下聚合操作难以实现,通过 Twemproxy 执行会报错,如:

# 查看所有key
KEYS *

# 监控k1
WATCH k1

# 开启事务
MULTI
在这里插入图片描述

参考链接

GitHub Twemproxy

GitHub Predixy

标签:twemproxy,Twemproxy,nutcracker,Redis,dev,echo,Linux,null
From: https://www.cnblogs.com/shuiyao3/p/17289767.html

相关文章

  • 在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/......
  • Linux 基础
    Linux基础1.安装虚拟机网络类型#1.桥接模式 上网不需要经过其他路由,上网速度快,ip数量少,容易跟同一网段的主机ip冲突。 #2.仅主机模式 只能与宿主机进行交互,并不能上网。 #3.NAT模式 ip多,独立的网段。上网需要经过VMnet8网卡。下载虚拟机官网地址https://centos.org......
  • 在Linux安装JDK
    前言本文讲述在Linux服务器安装JDKrpm安装去Oracle官网下载.rpm格式的安装包,如Oracle-JDK8下载。也可以从CSDN-jdk-8u301-linux-x64.rpm.zip下载。echo"安装">/dev/nullrpm-ivhjdk-8u301-linux-x64.rpmecho"追加环境变量">/dev/nullecho'exportJA......