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 Twemproxy 集群,水平扩展 ,扩容方案_第1张图片

四、Redis 服务实例准备

4.1 配置Redis实例

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

  • redis_6381.conf

include redis.conf

port 6381
dir /var/lib/redis/6381
pidfile /var/run/redis_6381.pid

supervised no
daemonize no
logfile ""
appendonly no
  • redis_6382.conf
include redis.conf

port 6382
dir /var/lib/redis/6382
pidfile /var/run/redis_6382.pid

supervised 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
make

mkdir /etc/nutcracker
cp conf/* /etc/nutcracker/
cp /etc/nutcracker/nutcracker.yml  /etc/nutcracker/nutcracker.yml.bk

cp 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: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: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>

你可能感兴趣的:(#,Redis,redis,数据库,缓存,Redis,集群)