Redis Twemproxy 集群,水平扩展 ,扩容方案

文章目录

    • 一、概述
    • 二、Twemproxy 分布模式
    • 三、测试规划
    • 四、Redis 服务实例准备
      • 4.1 配置Redis实例
      • 4.2 创建关资源
      • 4.3 启动Redis服务实例
    • 五、Twemproxy 安装准备
    • 六、Twemproxy 安装及集群配置
      • 6.1 安装 Twemproxy
      • 6.2 配置 Twemproxy
      • 6.3 启动 twemproxy
      • 6.4 测试 twemproxy 集群

如果您对Redis的了解不够深入请关注本栏目,本栏目包括Redis安装,Redis配置文件说明,Redis命令和数据类型说明,Redis持久化配置,Redis主从复制和哨兵机制,Redis Cluster(集群)配置,Redis Predixy 集群。

一、概述

  • Twemproxy(也称为nutcracker)是一个开源的代理软件,用于提供 Redis 或 Memcached 数据存储的负载均衡和高可用性。它是一种代理层,允许客户端将请求发送到多个 Redis 或 Memcached 后端服务器,并在多个节点之间进行负载均衡。它也是 Twitter 公司开发的,并且已经成为 Redis 和 Memcached 社区中常见的工具之一。

  • 我在前面讲过Redis Cluster 集群配置,那么即然官方自带了 Redis Cluster 为什么还要使用 Twemproxy 呢?因为 Twemproxy 还有 Redis Cluster 没有的功能,如下:

    • 多种部署:Redis Cluster 只支持一种特定的哈希分片架构,而 Twemproxy 可以适用于多种部署拓扑。而且增加Redis群集后应用程序代码无需修改,就连配置都不修改。
    • 动态的负载均衡:根据实时的节点状态和负载情况,Twemproxy 智能地将请求路由到最佳的 Redis 节点,以实现负载均衡。
    • 读写分离:Twemproxy 支持读写分离的配置。它可以将读操作路由到从节点,以分担主节点的负载,并提高读取性能。同时,写操作仍然会路由到主节点,以确保数据的一致性。
  • Twemproxy 与 Predixy 相比优点是更轻量级,效率更高。但是社区活跃底较低,文档相对较少。

  • 开源地址:https://github.com/twitter/twemproxy

二、Twemproxy 分布模式

  • Twemproxy 将请求路由到哪个后端服务器支持的分布模式有以下3种:

    1. ketama(一致性哈希): 这是默认和推荐的分布模式。它是一种基于一致性哈希算法的分布方式,确保当增加或删除后端服务器时,大部分请求仍能映射到正确的后端服务器。这有助于保持负载均衡并最小化数据的迁移。

    2. modula(模哈希): 这是另一种分布模式,它使用哈希运算中的模(取余)运算来选择后端服务器。它通常需要事先知道服务器的数量,并根据此数量来计算哈希值。这种模式可能会导致负载分布不均匀,特别是在添加或删除服务器时。

    3. random(随机选择): 这个分布模式是基于随机选择后端服务器的方式。对于每个请求的每个键,它将随机选择一个后端服务器。这可能导致负载分布不均匀,不适合需要一定程度的负载均衡的情况。

  • 一致性哈希(ketama)是最常用的分布模式,因为它在添加或删除服务器时能够提供相对稳定的分布,从而维持系统的可用性和负载均衡。其他模式可能适用于特定的使用案例,但需要更仔细的配置和监控,以确保负载均衡和性能。选择哪种分布模式通常会根据特定的应用程序需求和环境来决定。

三、测试规划

  • 我这里在同一主机上开启2个Redis服务实例,然后使用 Twemproxy 集群来测试,示意图如下: 在这里插入图片描述

四、Redis 服务实例准备

4.1 配置Redis实例

  • 新建2个Redis配置文件,用于配置2个Redis服务实例节点。分别为:redis_6381.conf、redis_6382.conf。

  • redis_6381.conf

include redis.confport 6381
dir /var/lib/redis/6381
pidfile /var/run/redis_6381.pidsupervised no
daemonize no
logfile ""
appendonly no
  • redis_6382.conf
include redis.confport 6382
dir /var/lib/redis/6382
pidfile /var/run/redis_6382.pidsupervised no
daemonize no
logfile ""
appendonly no

4.2 创建关资源

mkdir -p /var/lib/redis/6381
mkdir -p /var/lib/redis/6382

4.3 启动Redis服务实例

  • 启动2个Redis服务实例
redis-server redis_6381.conf
redis-server redis_6382.conf

五、Twemproxy 安装准备

  • 安装Epel软件仓库

    • 官方地址:https://developer.aliyun.com/mirror/
    wget -O /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo
    yum clean all
    
  • 准备编译工具

    yum install automake libtool -y
    
  • 升级autoreconf

    yum search autoconf
    yum install autoconf268
    

六、Twemproxy 安装及集群配置

6.1 安装 Twemproxy

  • 在CentOS7及以上系统按顺序执行以下命令安装。安装过程如果使用 git 无法下载,你可以先手动下载后拷贝到目标机器上。安装完成后生成的目标程序叫“nutcracker”,后面配置都是使用“nutcracker”,而不是“twemproxy”。
git clone https://github.com/twitter/twemproxy.git
cd twemproxy/
autoreconf -fvi	# 如果使用autoreconf -fvi 报错,则使用下面这个命令
#autoreconf268 -fvi ./configure --enable-debug=full
makemkdir /etc/nutcracker
cp conf/* /etc/nutcracker/
cp /etc/nutcracker/nutcracker.yml  /etc/nutcracker/nutcracker.yml.bkcp src/nutcracker  /usr/bin/# cp scripts/nutcracker.init  /etc/init.d/nutcracker
# chmod a+x /etc/init.d/nutcracker

6.2 配置 Twemproxy

  • 修改配置文件 nutcracker.yml
vi /etc/nutcracker/nutcracker.yml 
  • 内容如下
alpha:listen: 127.0.0.1:22121hash: fnv1a_64distribution: ketamaauto_eject_hosts: trueredis: trueserver_retry_timeout: 2000server_failure_limit: 1servers:- 127.0.0.1:6381:1- 127.0.0.1:6382:1

6.3 启动 twemproxy

nutcracker -d -c /etc/nutcracker/nutcracker.yml

6.4 测试 twemproxy 集群

redis-cli -p 22121

[root@yiqifu-centos conf]# redis-cli -p 22121
127.0.0.1:22121> set aaa 111
OK
127.0.0.1:22121> set bbb 222
OK
127.0.0.1:22121>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/178110.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于Spring Boot的大学课程排课系统设计与实现

摘 要 大学课程排课是现代教育管理中重要的一环。目前,传统的排课方式已经无法满足日益增长的课程需求和学生个性化的诉求。因此,研究一种基于遗传算法的大学课程排课系统是非常必要的。本研究旨在开发一种基于SpringBoot Vue的大学课程排课系统&#x…

[架构之路-252/创业之路-83]:目标系统 - 纵向分层 - 企业信息化的呈现形态:常见企业信息化软件系统 - 企业应用信息系统集成

目录 第一章 什么是企业应用信息系统集成What 1.1 简介 1.2 架构 二、为什么需要企业应用信息系统集成Why 三、如何实现企业应用信息系统集成 3.1 步骤 3.2 企业应用集成的层次 3.3 业务流程重组 第一章 什么是企业应用信息系统集成What 1.1 简介 企业应用信息系统集…

HDFS 读写架构

一、组成架构 1、NameNode(NN) : 集群的Master,它是一个主管,管理者 (1) 管理HDFS的命名空间 (2) 配置副本策略 (3) 管理数据块(Block)映射信息 (4) 处理客户端读写请求 2、DataNode(DN) : 集群的Slave。NN下达命令,DataNode执行实际操作。…

最新版付费进群源码带自动定位和分销以及分站功能完整版无加密

简介 看到别人发那些不是挂羊头卖狗肉,要么就是发的缺少文件引流的。非常滴恶心 这源码是我付费花钱买的免费分享给大家,功能完整。而且无加密 功能:新建分销会员,设置账号密码,收款方式等 说明: 分站…

Flutter 04 按钮Button和事件处理、弹框Dialog、Toast

一、按钮组件 1、按钮类型: 2、按钮实现效果: import package:flutter/material.dart;void main() {runApp(const MyApp()); }class MyApp extends StatelessWidget {const MyApp({Key? key}) : super(key: key);overrideWidget build(BuildContext co…

【设计模式】第16节:行为型模式之“命令模式”

一、简介 命令模式:将请求(命令)封装为一个对象,这样可以使用不同的请求参数化其他对象(将不同请求依赖注入到其他对象),并且能够支持请求(命令)的排队执行、记录日志、…

硬件测试(二):波形质量

一、信号质量测试 信号在传输的过程中,一般不是标准的矩形波信号,信号质量测试即通过示波器测试单板硬件的数字信号和模拟信号的各项指标,包括电源、时钟、复位、CPU小系统、外部接口(USB、网口、串口)、逻辑芯片(CPLD…

WiFi 6下的大规模部署策略

随着数字化时代的快速发展,我们正处于一个多设备、高密度连接的时代。在这个背景下,WiFi 6(802.11ax)作为一项新的无线通信标准,被广泛认为是满足未来大规模连接需求的关键技术。本文将深入研究WiFi 6在大规模部署中的…

ardupilot开发 --- 代码解析 篇

0. 前言 根据SITL的断点调试和自己阅读代码的一些理解,写一点自己的注释,有什么不恰当的地方请各位读者不吝赐教。 1. GCS::update_send 线程 主动向MavLink system发送消息包。 1.1 不断向地面站发送飞机状态数据 msg_attitude: msg_location: n…

【腾讯云HAI域探秘】AI让我变成灵魂画手

【腾讯云HAI域探秘】AI让我变成灵魂画手 文章目录 【腾讯云HAI域探秘】AI让我变成灵魂画手前言环境搭建进入 StableDiffusionWebUI使用 高性能应用服务HAI 部署的 StableDiffusionWebUI 快速进行AI绘画总结 前言 最近有幸参与了腾讯云举办的 腾讯云 HAI 产品体验活动。在这个过…

Java——java.time包使用方法详解

Java——time包使用方法详解 java.time 包是 Java 8 引入的新日期和时间 API(JSR 310),用于替代旧的 java.util.Date 和 java.util.Calendar 类。它提供了一组全新的类来处理日期、时间、时间间隔、时区等,具有更好的设计和易用性…

“泰山众筹:引爆全球的财富狂潮!“

想象一下,你手中的白酒不再只是简单的饮品,而是一份珍贵的投资,一份充满惊喜的冒险,一份财富的种子!在这个神奇的时刻,让我们一起探索泰山众筹模式的魅力! 在传统的投资领域,你是否…

PC端视频编辑处理的全方位解决方案

视频已经成为企业传播信息、展示品牌形象的重要工具。然而,制作高质量的视频并非易事,需要专业的技术和设备。这就是美摄科技发挥作用的地方。我们为企业提供一站式的PC端视频编辑处理解决方案,帮助企业轻松制作出专业级别的视频。 美摄科技…

学习笔记二十八:K8S控制器Daemonset入门到企业实战应用

DaemonSet控制器:概念、原理解读 DaemonSet概述DaemonSet工作原理:如何管理PodDaemonset典型的应用场景DaemonSet 与 Deployment 的区别DaemonSet资源清单文件编写技巧 DaemonSet使用案例:部署日志收集组件fluentdDaemonset管理pod&#xff1…

【ES专题】ElasticSearch 高级查询语法Query DSL实战

目录 前言阅读对象阅读导航前置知识数据准备笔记正文一、ES高级查询Query DSL1.1 基本介绍1.2 简单查询之——match-all(匹配所有)1.2.1 返回源数据_source1.2.2 返回指定条数size1.2.3 分页查询from&size1.2.4 指定字段排序sort 1.3 简单查询之——…

图片路径名动态生成

写成这样也可以 :src"./src/assets/ScreenLeft/btn${isShowLeft ? Show : Hide}.png"为了节省开销&#xff0c;这种小图标&#xff0c;可以用i标签 const imgUrl ref("icon1");<iclass"w-50px h-50px":style"{backgroundImage: url(./…

VR全景技术在文化展示与传播中有哪些应用?

引言&#xff1a; 随着科技的不断进步&#xff0c;虚拟现实&#xff08;VR&#xff09;全景技术已经成为文化展示与传播领域的一项重要工具。那么VR全景技术是如何改变文化展示与传播方式&#xff0c;VR全景技术又如何推动文化的传承和普及呢&#xff1f; 一&#xff0e;VR技术…

matplotlib画刻度为对数的图

1. 代码 import matplotlib.pyplot as plta [1000,2000,3000,4000,5000] a_x [1, 2, 3, 4, 5] b [0.00001,0.00025,0.001,0.005,0.000001]plt.figure(figsize(10, 6)) plt.plot(a_x, b, cred, labellabel) plt.scatter(a_x, b, cblue) plt.xlabel(step$(\\times 10^3)$) pl…

iis前端代理后台tomcat

1)tomcat服务器配置运行好&#xff0c;服务地址位于 localhost:8080/wechat 2)iis 绑定了域名 api.abc.com 希望访问 api.abc.com/wechat时&#xff0c;实际由tomcat的服务处理; 3)iis上需要添加组件 requestRouter_amd64.msi rewrite_amd64_zh-CN.msi 4)iis进行相关配置…

视频列表:点击某个视频进行播放,其余视频全部暂停(同时只播放一个视频)

目录 需求实现原理实现代码页面展示 需求 视频列表&#xff1a;点击某个视频进行播放&#xff0c;其余视频全部暂停&#xff08;同时只播放一个视频&#xff09; 实现原理 在 video 标签添加 自定义属性 id (必须唯一)给每个 video 标签 添加 play 视频播放事件播放视频时&…