predixy学习笔记

predixy 是高性能的适用于 redis 集群和哨兵的代理

项目地址:

predixy github 地址:https://github.com/joyieldInc/predixy
predixy 编译安装需要 C++11 版本的编译器,至少需要 CentOS 7及以上版本才能编译安装。对于 CentOS 6或更低版本,可以直接使用在 github release 中的二进制版本(如下)。

部署

wget https://github.com/joyieldInc/predixy/releases/download/1.0.5/predixy-1.0.5-bin-amd64-linux.tar.gz
tar -zxf predixy-1.0.5-bin-amd64-linux.tar.gz -C /app
mv predixy-1.0.5 predixy

有中文注释

这里建议用gitee仓库的一键部署包,通过编译的方式安装predixy,因为二进制版本默认的自定义命令槽才16个,一键部署包已修改了源码,将自定义命令槽位增大到128个
https://gitee.com/chen-ahai/predixy-install.git


确认完安装的路径,redis密码,就可以bash install.sh进行安装
再根据提示修改添加集群信息,就可以启动服务



如果是手动部署,则具体配置如下:(以集群配置为例)

配置

1.修改配置文件cluster.conf

cluster.conf,用于Redis Cluster时,配置后端redis信息

ClusterServerPool {
   MasterReadPriority 60
   StaticSlaveReadPriority 50
   DynamicSlaveReadPriority 50
   RefreshInterval 1
   ServerTimeout 1
   ServerFailureLimit 10
   ServerRetryTimeout 1
   KeepAlive 120
   Password "XXXXXXX"
   Servers {
       + 192.168.11.121:7001
       + 192.168.11.121:7002
       + 192.168.11.122:7003
       + 192.168.11.122:7004
       + 192.168.11.123:7005
       + 192.168.11.123:7006

   }
}

添加集群所有节点(主从都配置),密码有特殊字符,一定要加上双引号“”
参数说明:MasterReadPriority,StaticSlaveReadPriority,DynamicSlaveReadPriority 三个参数和 redis 本身配置文件中的slave-priority 没任何关系的。
如果是自动发现找到的节点,则 DynamicSlaveReadPriority 会起作用,如果是直接配置的节点,则 StaticSlaveReadPriority 会起作用。
RefreshInterval : predixy 获取节点信息和集群 hash slot 集群信息的间隔,以秒为单位,指定刷新周期,默认为1秒
ServerFailureLimit : 一个redis实例出现多少次才错误以后将其标记为失效,不指定的话为10,超过10次,predixy 停止路由到该节点
ServerTimeout : 请求在predixy中最长的处理/等待时间,如果超过该时间redis还没有响应的话,那么predixy会关闭同redis的连接,并给客户端一个错误响应,对于blpop这种阻塞式命令,该选项不起作用,为0则禁止此功能,即如果redis不返回就一直等待,不指定的话为0,默认为1秒
ServerRetryTimeout: 一个redis实例失效后多久后去检查其是否恢复正常,不指定的话为1秒
KeepAlive: predixy与redis的连接tcp keepalive时间,为0则禁止此功能,不指定的话为0
Sentinels: 里面定义redis sentinel实例的地址
Group: 定义一个redis组,Group的名字应该和redis sentinel里面的名字一致,Group里可以显示列出redis的地址,列出的话就是上面提到的静态节点

默认配置为Master/SlaveReadPriority 60/50

2.修改配置文件auth.conf

auth.conf,用于代理中心访问权限控制配置,可以定义多个验证密码,可每个密码指定读、写、管理权限,以及定义可访问的键空间

Authority {
    Auth "xxxxxxxx" {
        Mode admin
    }
}

这里在最后面添加个默认配置即可

3.修改配置文件predixy.conf

predixy.conf,整体配置文件,会引用其他的配置文件

Name Predixy7617
Bind 0.0.0.0:7617
WorkerThreads 1
ClientTimeout 300
LogVerbSample 0
LogDebugSample 0
LogInfoSample 10000
LogNoticeSample 1
LogWarnSample 1
LogErrorSample 1
Include auth.conf
Include cluster.conf

红色为修改的配置,注释#Include command.conf #Include try.conf,其他保持默认
其他配置文件按照需要可进行配置
sentinel.conf,用于Redis Sentinel时,配置后端redis信息
dc.conf,多数据中心支持,可以定义读写分离规则,读流量权重分配
latency.conf, 延迟监控规则定义,可以指定需要监控的命令以及延时时间间隔
command.conf,自定义命令扩展,用于命令扩展,支持redis 的插件以及自定义数据处理函数等
standalone.conf,使用单击模式的redis配置

4.配置systemctl服务,启动predixy服务

vim /etc/systemd/system/predixy.service

[Unit]
Description=predixy
Documentation=https://github.com/joyieldInc/predixy
Wants=network-online.target
After=network-online.target
[Service]
PrivateTmp=true
WorkingDirectory=/app/predixy
User=root
Group=root
ExecStart=/app/predixy/bin/predixy /app/predixy/conf/predixy.conf
StandardOutput=journal
StandardError=inherit
[Install]
WantedBy=multi-user.target


systemctl start predixy

验证
redis-cli -p 7617 -a XXXXXX

posted @ 2023-02-03 11:17  海yo  阅读(364)  评论(0编辑  收藏  举报