0、安装前环境准备
① 本篇是基于Linux操作系统中的安装,故先准备一个干净的Linux操作系统,本文中所有的操作基于CentOS8进行安装演示;
② 接下来的演示文本中,红色字体为操作步骤,黑色字体为解释说明。
③ Predixy和Twemproxy不一样的是,Predixy不建议自己去编译。根据Github README.md上面的介绍,其实编译的过程并不复杂,但是里面有提到一项说明:
需要C++11版本的编译器,如果CentOS的版本不够高的话,比如说CentOS6/7(7的话不是很确定,盲猜),系统自带的编辑器是不达标的。如果想把这个编译器版本补全的话,得费老大劲儿了。所以,还是建议直接下载已经编译好的(当然如果你懂,并且你愿意去折腾的话,玩一玩也行。只是对于一般人来说,我建议你直接下载已经编译完了就可以了)。
1、进入到本地Predixy目录,从Github下载Predixy
cd /usr/local/source/
mkdir predixy
cd predixy/
进入Predixy在Github上的地址(Releases · joyieldInc/predixy · GitHub),复制下载地址
使用wget从Github上下载Predixy至本地
2、将Predixy进行解压缩
tar -zxvf predixy-1.0.5-bin-amd64-linux.tar.gz
bin 目录下是 predixy 的可执行程序,conf 目录下是 predixy 的配置文件
3、仔细阅读Github上面README.md说明
predixy对于中国人还是比较友好的,连中文文档都已经帮你准备好了,翻译都省了
predixy不仅支持Sentinel,还有Group的概念:如果predixy代理层后面只有一台主机和几台备机,其实从严格意义上来说,只能算是单实例的,也就是说所有的数据都压在这一台主机身上。但是Sentinel是可以监控两套主从的,可以监控两台主机,这两台主机就是相当于Group里面的两台机器。使用Group以后,经过代理层来的数据,代理层可以通过指定的算法将数据打散到两套集群里,和Sentinel可以监控两套主机一样,Group也可以对两套主机进行数据分发。而且predixy还支持Sentinel,前一篇中介绍的twemproxy不支持Sentinel。
4、修改predixy.conf配置文件
cd /usr/local/source/predixy/predixy-1.0.5/conf/
vim predixy.conf
predixy配置文件完美地继承了Redis配置文件的写法,自描述式的写法,每一个选项都给你解释的清清楚楚。
① 解除 Bind 127.0.0.1:7617 前的注释
② 导入Sentinel配置文件
虽然predixy支持Sentinel和Cluster来使用Redis,但一个配置里这两种形式只能出现一种。
5、修改sentinel.conf配置文件
vim sentinel.conf
在配置文件中我们准备三台Sentinel,这三台Sentinel是一个集群,可以监控一套主从复制,也可以同时监控多套主从复制。在Group里面,分组的名字就是Sentinel配置文件当中监控的主从的master的逻辑名称。
6、修改Sentinel配置文件,并启动Sentinel服务
cd test/
vim 26379.conf
端口号为26379的哨兵,它需要监控36379的master和46379的master。36379的master对应的从机是36380,46379的master对应的从机是46380。
vim 26380.conf
vim 26381.conf
redis-server 26379.conf –sentinel
redis-server 26380.conf –sentinel
redis-server 26381.conf –sentinel
7、启动两套Redis主从复制集群
此次演示两台master主机和两台从机都是为了显示效果临时启动,所以我会在当前目录下建4个文件夹,分别用来存放两台主机和两台从机的数据(因为当Redis启动的时候,如果没有指定配置文件,Redis会默认将数据序列化到当前的目录下)。
mkdir 36379(第1套集群中主机的端口)
mkdir 36380(第1套集群中从机的端口)
mkdir 46379(第2套集群中主机的端口)
mkdir 46380(第2套集群中从机的端口)
启动第1套集群中的主机服务:
cd test/36379/
redis-server –port 36379
启动第1套集群中的从机服务:
cd test/36380/
redis-server –port 36380 –replicaof 127.0.0.1 36379
启动第2套集群中的主机服务:
cd test/46379/
redis-server –port 46379
启动第2套集群中的从机服务:
cd test/46380/
redis-server –port 46380 –replicaof 127.0.0.1 46379
8、启动predixy代理服务
cd /usr/local/source/predixy/predixy-1.0.5/bin/
./predixy ../conf/predixy.conf
9、客户端连接predixy代理
redis-cli -p 7617
一些基本的操作都没有问题,很正常
分别连接36379和46379看一看数据的存储情况
这次的数据分配的倒是比较平均,36379里有3条数据,46379里面也有3条数据。
除此之外还可以用特定的占位符来设置数据
这两台数据都会发送到46379,通过特殊的符号添加在key中,就可以人为的将数据发送到指定的机器中。我们现在再来分析一波predixy代理所存在的问题:
和twemproxy代理一样,不支持watch,不支持multi事务
现在在这个代理后面是两套主从集群,是分置的,所以predixy默认直接就不支持,这个做的没有Redis自带的集群好用,在Redis自带的集群当中,是可以实现这些操作。
10、配置predixy支持事务
cd ../conf/
vim sentinel.conf
修改predixy的sentinel.conf配置文件,删除xxoo这个Group, 那么之后所有客户端操作的数据都只会往ooxx这一个集群里面去怼。
cd ../bin/
./predixy ../conf/predixy.conf
再开启predixy代理服务之后,只会去管ooxx这一套集群,也就是36379这套集群。在只有一套集群的情况下,predixy是允许使用multi的操作。
并且因为只配了一套集群,所以无论怎么操作数据都最终只会在36379这一套集群中。
同样的36379作为主机宕机之后,在Sentinel的监控下36380年会变成主机接管,不影响predixy的代理分配。
36379已经宕机,但是依然可以从7617代理get出k9
其实代理就是解耦后端的复杂度,对于客户端来说,无论后端的技术多么复杂也好,都是透明的,不影响客户端的使用,对于纯使用的客户端来说非常的踏实,客户端不需要关心那些复杂的后端技术。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/111947.html