开发者学堂课程【Redis 数据库入门:Redis_集群_Twitter_Twemproxy模式_4】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/15/detail/64
Redis_集群_Twitter_Twemproxy模式_4
内容介绍:
一、Redis_ 集群 _Twitter_Twemproxy 模式
一、Redis_ 集群_Twitter_Twemproxy 模式
由上节内容可知,目前依然存在主从
输入 redis-cli 后输入
set mykey 123123
显示 can’t write against a read only slave,继续输入
slaveof no one
结果显示 ok 后再输入
set mykey 123123
结果显示 ok
那么6379就不是从了
再来确认一下6380和6381是否是主,输入
exit
redis-cli -p 6380
set mykey 123123
结果显示 ok,继续输入
exit
redis-cli -p 6381
set mykey 123123
结果显示ok
exit
证明都是主,现在三个redis已经准备好,可以启动代理,输入
cd..
cd /usr/local/sbin/
nutcracker-d-c /usr/hadoopsoft/twemproxy-0.4.1/nutcracker.bjsxt.yml
-d 代表 daemon 后台,twemproxy 代理了 redis 的协议,通过 redis 客户端可以连接到 twemproxy
再来查看端口,输入
ss -tanl
找不到,输入 ll 查看,结果显示
来检查错误,输入
ll /usr/hadoopsoft/tweproxy-4.0.1/
发现 bsjxt 出现错误,来修改
cd /usr/hadoopsoft/tweproxy-0.4.1/
ll
mv nutcracker.bsjxt.yml nutcracker.bjsxt.yml
cd -
nutcracker-c /usr/hadoopsoft/tweproxy-0.4.1/nutcracker.bjsxt.yml
ll /usr/hadoopsoft/twemproxy-0.4.1/
创建一个新端口查看,输入
ss -tanl
结果显示22121和22222端口,类似于6379等是和其他提供通讯的端口,最后一行是提供外来服务的端口,现在启动起来后,就已经有了 twemproxy
接着我们使用 redis 连接
redis-cli -p -p 22121 -h 192.168.80.21
连接成功后继续操作:
set msg hello
结果显示 ok
get msg
结果显示”hello”
但是真正是将数据存到后面三个 redis 中
再创建三个 node21输入
redis-cli -p 6379
get msg
结果显示(nil)没有,再在第二个中输入
redis-cli -p 6380
get msg
依然没有,在第三个中继续输入
redis-cli -p 6381
get msg
结果显示”hello”
会发现现在使用代理存在数据不同步现象,如果存有hello的这台机器挂掉就不容易再读到,解决方法:找一个从去复制数据或者将从上为主去写,但是存在此时配置文件中没有修改,redis 没法代理问题
再来测试 set date,输入
set date 2016
结果显示ok
get date
结果显示”2016”
在第二个6380中输入
get date
结果显示(nil)
在第三个6379中输入
get date
结果显示”2016”
注意的问题是节点下线就找不到了,再上线就能找到数据。
所以此时存在问题:
用代理模式,集群不好扩展,而且容错也有问题。因为每个服务器都对应一个区间,能不能把服务器 A 中的数据移到B中,代理是不能做到的。但是可以将代挂挂a,数据都放在 b 中