首页 > 数据库 >Redis proxy 组件之 Predixy

Redis proxy 组件之 Predixy

时间:2023-07-31 15:46:45浏览次数:37  
标签:cluster Predixy Redis redis 192.168 predixy proxy conf ##

Predixy 是一款高性能全特征 redis 代理,支持 redis-sentinel 和 redis-cluster
组件特性: Predixy 支持的功能

为什么需要 redis proxy ?

  1. 屏蔽 redis 架构的复杂性,使后端开发人员 无论是用 redis sentinel 还是 redis cluster 集群,都像使用单机 redis 实例一样方便。
  2. 集群扩缩容时,对业务更友好,开发人员无需修改后端配置。
  3. 实现基于 proxy 的 负载均衡、读写分离、权限控制。
  4. 便于集群管理。
  5. 纵观 各大云厂商,横向对比 top 互联网团队,redis 集群架构 proxy 模式已成为标配。

predixy 可以管理 多套 redis sentinel 集群。redis cluster 模式支持 一对一管理,本文主要记录 predixy + redis cluster 的使用。

开始之前你需要有一套 redis cluster 集群,本文使用的集群节点分布:( 3分片,一主一副本)
shards master slave
shard 1 192.168.98.111:16380 192.168.98.113:16381
shard 2 192.168.98.112:16380 192.168.98.111:16381
shard 3 192.168.98.113:16380 192.168.98.112:16381

1. predixy 安装:

下载地址: wget https://github.com/joyieldInc/predixy/releases/tag/1.0.5

[root@db]# tar -xf predixy-1.0.5-bin-amd64-linux.tar.gz -C  /usr/local/predixy
[root@db]# cd  /usr/local/predixy  && ls ./ ./conf/
./:
bin  conf  doc  logs  README_CN.md  test
 
./conf/:
auth.conf  cluster.conf  command.conf  dc.conf  latency.conf  predixy.conf  sentinel.conf  standalone.conf  try.conf
 
## 配置文件
 predixy.conf 全局配置文件,会引用下面的配置文件
 cluster.conf 用于Redis Cluster时,配置后端redis信息
 sentinel.conf 用于Redis Sentinel时,配置后端redis信息
 auth.conf 访问权限控制配置,可以定义多个验证密码,可每个密码指定读、写、管理权限,以及定义可访问的健空间
 dc.conf 多数据中心支持,可以定义读写分离规则,读流量权重分配
 latency.conf 延迟监控规则定义,可以指定需要监控的命令以及延时时间间隔

2. predixy 配置:

predixy.conf 全局配置

[root@db conf]# cat predixy.conf
## Specify a name for this predixy service
## redis command INFO can get this
Name Predixy_001
 
## Default is 0.0.0.0:7617
Bind 0.0.0.0:7617
 
## Worker threads
WorkerThreads 4
 
## Memory limit, 0 means unlimited
## MaxMemory can change online by CONFIG SET MaxMemory xxx
MaxMemory 0
 
## Close the connection after a client is idle for N seconds (0 to disable)
## ClientTimeout can change online by CONFIG SET ClientTimeout N
## Default is 0
ClientTimeout 300   # redis cluster 节点的  timeout 参数最好配置为 0
 
## IO buffer size
## Default is 4096
## IO Buffer大小,predixy内部分配BufSize大小的缓冲区用于接受客户端命令和服务端响应,完全零拷贝的转发给服务端或者客户端,该值太小的话影响性能,太大的话浪费空间也可能对性能无益。但是具体多少合适要看实际应用场景
BufSize 2048
 
## Log file path
Log /data/predixy/logs/predixy.log
## LogRotate LogLevelSample
LogVerbSample 0
LogDebugSample 0
LogInfoSample 1000
LogNoticeSample 1
LogWarnSample 1
LogErrorSample 1
 
## SERVERS
Include auth.conf
Include cluster.conf

auth.conf 配置

[root@db conf]# cat auth.conf
 
Authority {
    Auth 123456qewr {    # predixy 代理密码,业务后端认证需要配置的密码
        Mode admin   # 权限
    }
}

cluster.conf 配置

[root@db conf]# cat cluster.conf
## Cluster_001:
ClusterServerPool {
    Password 123456    # redis cluste 集群密码
    MasterReadPriority 60
    StaticSlaveReadPriority 50
    DynamicSlaveReadPriority 50
    RefreshInterval 1
    ServerTimeout 1
    ServerFailureLimit 10
    ServerRetryTimeout 1
    KeepAlive 120
    Servers {   # redis cluster 集群所有节点
        + 192.168.98.111:16380
        + 192.168.98.111:16381
        + 192.168.98.112:16380
        + 192.168.98.112:16381
        + 192.168.98.113:16380
        + 192.168.98.113:16381
    }
}

3. predixy 日常维护

predixy 完美的实现了对 redis 单例模式及集群模式的支持,几乎完整的实现了 redis 原生的所有用于客户端的命令。多 key 命令、列表阻塞操作、发布订阅、脚本、扫描等高级功能全支持,在使用 redis 单例模式下也支持事物。

# 启动 predixy
[root@db]# nohuo predixy conf/predixy.conf &
 
# 通过 predixy 代理连接 redis cluster
[root@db]# redis-cli -h 127.0.0.1 -p 7617 -a 123456qewr
127.0.0.1:7617> info proxy  # 查看 Proxy 元信息
# Proxy
Version:1.0.5
Name:Predixy_001
Bind:0.0.0.0:7617
RedisMode:proxy
SingleThread:false
WorkerThreads:4
Uptime:1681269847
UptimeSince:2023-04-12 11:24:07
 
127.0.0.1:7617> info stats  # 查看 Proxy 状态
# Stats
Accept:8
ClientConnections:1
TotalRequests:444313
TotalResponses:442434
TotalRecvClientBytes:1880
TotalSendServerBytes:12386300
TotalRecvServerBytes:348915311
TotalSendClientBytes:13728
 
127.0.0.1:7617> info servers   # 查看 redis cluster 节点信息
# Servers
Server:192.168.98.111:16380
Role:master
Group:ecbdd26257c8b5efff89732f0ff04f08fac2996c
DC:
CurrentIsFail:0
Connections:4
Connect:120
Requests:74080
Responses:73728
SendBytes:2064284
RecvBytes:58146243

至此我们的 redis cluster 变成了如下架构

              |--------+                 
              | Clitne1| Jedis jedis = new Jedis("predixy ip","7617");
              | Clitne2| jedis.auth("123456qewr")
              | ClitneN| jedis.ping();
              +--------+               
                   |
                   |
+--------+         |         +--------+
| Predixy|---------+---------| Predixy|
+--------+         |         +--------+
                   |
      +------------+--------------+   
      |      Redis Cluster        |
+-----------+ +-----------+ +-----------+
| shard 1   | | shard 2   | | shard N...|
+-----------+ +-----------+ +-----------+

标签:cluster,Predixy,Redis,redis,192.168,predixy,proxy,conf,##
From: https://www.cnblogs.com/notes201432273/p/17593614.html

相关文章

  • Linux Redis配置
    Redis是一个开源的高性能键值对存储系统,具有快速、灵活和可扩展的特性。它是一个基于内存的数据结构存储系统,可以用作数据库、缓存和消息代理。Redis的一些主要特点和用途:高性能:Redis数据存储在内存中,因此能够提供极快的读写操作。它采用单线程模型和异步I/O,避免了多线程的......
  • Redis从入门到放弃(5):事务
    1、事务的定义Redis的事务提供了一种“将多个命令打包,然后一次性、按顺序地执行”的机制。redis事务的主要作用就是串联多个命令防止别的命令插队。但是,事务并不具有传统数据库事务的特性,如回滚。2、事务命令Redis中的事务可以通过以下命令来执行:MULTI:用于开启一个事务块,......
  • redis monitor 监控说明
    1、监视器Redis监视器是用于监控或观察Redis服务器指令执行的一种特殊的客户端。创建Redis监视器的方式也很简单,启动一个客户端后,执行monitor指令,客户端将进入监视器状态。进入监视器状态的客户端将不再接受Redis指令输入,而称为了一个实时接受服务器指令执行信息的消费者。如下图......
  • python操作redis
    redis/relate一、python连接redis1.方式一importredis#创建连接对象r=redis.Redis(host='127.0.0.1',port=6379)r.set('name','zhangsan')print(r.get('name'))2.方式二使用连接池当并发量比较高的时候,频繁的创建连接和释放连接会对性能有影响,使......
  • redis常见的5中数据类型以及相关命令
    redisredis简介redis是采用ASNIC语言编写的采用的是C/S架构是非关系型数据库以键值对的形式存储在内存中redis在windows中的启动命令redis-serverredis.windows.confredis-cli切换到客户端一、redis的数据类型1.String(字符串)最基本的数据结构,可以......
  • redis做消息队列学习
    转自:https://juejin.cn/post/7094272373930590245#heading-9,https://zhuanlan.zhihu.com/p/3442697371、消息队列基本作用:应用解耦(作为中介)、削峰填谷。redis做mq的优点:轻量级,使用和运维成本低。mq的3个基本要求:消息保序sequence:对应消息需要有序消费的场景;处理重复消息dupl......
  • Java面试题 P17:Redis篇:Redis使用场景-缓存-缓存穿透
    什么是缓存击穿:给某一个key设置了过期时间,当key过期的时候,恰好这时间点对这个key有大量的并发请求过来,这些并发的请求可能会瞬间把数据库压垮。  互斥锁代码:1privatefinalReadWriteLockreadWriteLock=newReentrantReadWriteLock();2privatefinalLock......
  • redis群集模式
    redis群集有三种模式,redis群集有三种模式,分别是主从同步/复制、哨兵模式、Cluster,可以提高redis的高可用,高性能。目录一、redis群集模式二、主从复制三、哨兵四、集群五、总结     一、redis群集模式1.redis群集模式(1)主从复制:主从复制主要实现......
  • 通过Redis+Mysql来自定义Spring-Statemachine的持久化
    我们在使用Spring状态机的时候,往往需要对于StateMachine持久化操作,但是官方为我们提供的基于redis的持久化并不是特别好,一方面是因为只存redis容易导致数据丢失,另一方面因为状态机的特性需要对应的StateMachine的数据永久有效,导致redis中的key永不过期。我现在希望实现将StateMac......
  • Redis
    1.什么是Redis?它主要用来什么的?Redis,英文全称是RemoteDictionaryServer(远程字典服务),是一个开源的使用ANSIC语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。与MySQL数据库不同的是,Redis的数据是存在内存中的。它的读写速度非常快,每......