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