| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 系统运维 -> 【手把手】教你搭建Redis代理分片机制Predixy -> 正文阅读 |
|
[系统运维]【手把手】教你搭建Redis代理分片机制Predixy |
0、安装前环境准备① 本篇是基于Linux操作系统中的安装,故先准备一个干净的Linux操作系统,本文中所有的操作基于CentOS8进行安装演示; ② 接下来的演示文本中,红色字体为操作步骤,黑色字体为解释说明。 ③ Predixy和Twemproxy不一样的是,Predixy不建议自己去编译。根据Github README.md上面的介绍,其实编译的过程并不复杂,但是里面有提到一项说明: ? 需要C++11版本的编译器,如果CentOS的版本不够高的话,比如说CentOS6/7(7的话不是很确定,盲猜),系统自带的编辑器是不达标的。如果想把这个编译器版本补全的话,得费老大劲儿了。所以,还是建议直接下载已经编译好的(当然如果你懂,并且你愿意去折腾的话,玩一玩也行。只是对于一般人来说,我建议你直接下载已经编译完了就可以了)。 1、进入到本地Predixy目录,从Github下载Predixycd /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 ?其实代理就是解耦后端的复杂度,对于客户端来说,无论后端的技术多么复杂也好,都是透明的,不影响客户端的使用,对于纯使用的客户端来说非常的踏实,客户端不需要关心那些复杂的后端技术。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/15 17:24:25- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |