ubtuntu redis 集群部署/搭建(官方原始方案)
1. 安装ruby环境
Redis作者应该是个Ruby爱好者,Ruby客户端就是他开发的。这次集群的管理功能没有嵌入到Redis代码中,于是作者又顺手写了个叫做redis-trib的管理脚本。redis-trib依赖Ruby和RubyGems,以及redis扩展。可以先用which命令查看是否已安装ruby和rubygems,用gem list –local查看本地是否已安装redis扩展。 最简便的方法就是用apt或yum包管理器安装RubyGems后执行gem install redis。如果网络或环境受限的话,可以手动安装RubyGems和redis扩展(国外链接可能无法下载,可以从CSDN下载): apt-get?install?ruby gem?install?redis 2. 安装redis 参考文章:ubuntu 使用命令安装最新的redis版本 3. 创建集群文件及文件夹 mkdir?redis-cluster cd?redis-cluster mkdir?9000?9001?9002?9003?9004?9005 redis-cluster/ ├──?9000 │???└──?redis.conf.9000 ├──?9001 │???└──?redis.conf.9001 ├──?9002 │???└──?redis.conf.9002 ├──?9003 │???└──?redis.conf.9003 ├──?9004 │???└──?redis.conf.9004 └──?9005 ????└──?redis.conf.9005 结果如下图所示: 4.?拷贝redis.conf ubuntu? redis配置文件路径 cd?/etc/redis ?进入redis配置文件目录,将redis.conf复制redis-cluster文件夹中 cp?redis.conf?/home/user/redis-cluster 4.1主要修改信息如下:
不同信息在redis.conf位置: 4.2 ip绑定?绑定本机ip 4.2修改端口号 4.3?开启 4.4?数据存储位置 dbfilename?备份文件名 4.5?开启集群 4.6?集群配置文件 然后分别将redis0cluster中redis.conf配置文件复制到新建的6个文件夹中(9000,9001,9002,9003,9004,9005) 复制redis.conf配置文件 cp?redis.conf?/home/user/redis-cluster/9000 cp?redis.conf?/home/user/redis-cluster/9001 cp?redis.conf?/home/user/redis-cluster/9002 cp?redis.conf?/home/user/redis-cluster/9003 cp?redis.conf?/home/user/redis-cluster/9004 cp?redis.conf?/home/user/redis-cluster/9005 5.?分别启动redis-server redis-server?/home/user/redis-cluster/9000/redis.conf? redis-server?/home/user/redis-cluster/9001/redis.conf? redis-server?/home/user/redis-cluster/9002/redis.conf? redis-server?/home/user/redis-cluster/9003/redis.conf? redis-server?/home/user/redis-cluster/9004/redis.conf? redis-server?/home/user/redis-cluster/9005/redis.conf 6.?查看redis-server是否正常启动 ps?-ef|grep?redis-server 结果如下 7.?创建redis集群 redis-trib.rb(能否创建集群主要靠它)存放的路径 cd?/usr/share/doc/redis-tools/examples/ 复制redis-trib.rb到指定目录 cp?redis-trib.rb?/home/user/redis-cluster/ redis集群启动 启动集群命令 ./redis-trib.rb?create?--replicas?1?127.0.0.1:9000?127.0.0.1:9001?127.0.0.1:9002?127.0.0.1:9003?127.0.0.1:9004?127.0.0.1:9005 结果如下: >>>?./redis-trib.rb?create?--replicas?1?127.0.0.1:9000?127.0.0.1:9001?127.0.0.1:9002?127.0.0.1:9003?127.0.0.1:9004?127.0.0.1:9005 >>>?Creating?cluster??#?自动输入的命令 >>>?Performing?hash?slots?allocation?on?6?nodes... Using?3?masters: 127.0.0.1:9000 127.0.0.1:9001 127.0.0.1:9002 Adding?replica?127.0.0.1:9004?to?127.0.0.1:9000 Adding?replica?127.0.0.1:9005?to?127.0.0.1:9001 Adding?replica?127.0.0.1:9003?to?127.0.0.1:9002 >>>?Trying?to?optimize?slaves?allocation?for?anti-affinity [WARNING]?Some?slaves?are?in?the?same?host?as?their?master M:?56b766b9e4b8447c2f0645e16b82283f6c7c11d7?127.0.0.1:9000 ???slots:0-5460?(5461?slots)?master M:?89af1208bca79d22f9c051bb86d40de1ebaf92b4?127.0.0.1:9001 ???slots:5461-10922?(5462?slots)?master M:?c95629b3e17abaf3b0cef022359b49f4498a4d8a?127.0.0.1:9002 ???slots:10923-16383?(5461?slots)?master S:?736a7abdbec3fd16bd610900cfed8ecd7f9b008b?127.0.0.1:9003 ???replicates?56b766b9e4b8447c2f0645e16b82283f6c7c11d7 S:?5f94b10bfe0ba249767da82161bdfdb14b5092aa?127.0.0.1:9004 ???replicates?89af1208bca79d22f9c051bb86d40de1ebaf92b4 S:?58481f44f290203a644503946b3d6f2b9bd53916?127.0.0.1:9005 ???replicates?c95629b3e17abaf3b0cef022359b49f4498a4d8a Can?I?set?the?above?configuration??(type?'yes'?to?accept):?yes >>>?Nodes?configuration?updated >>>?Assign?a?different?config?epoch?to?each?node >>>?Sending?CLUSTER?MEET?messages?to?join?the?cluster Waiting?for?the?cluster?to?join.... >>>?Performing?Cluster?Check?(using?node?127.0.0.1:9000) M:?56b766b9e4b8447c2f0645e16b82283f6c7c11d7?127.0.0.1:9000 ???slots:0-5460?(5461?slots)?master ???1?additional?replica(s) S:?736a7abdbec3fd16bd610900cfed8ecd7f9b008b?127.0.0.1:9003 ???slots:?(0?slots)?slave ???replicates?56b766b9e4b8447c2f0645e16b82283f6c7c11d7 S:?5f94b10bfe0ba249767da82161bdfdb14b5092aa?127.0.0.1:9004 ???slots:?(0?slots)?slave ???replicates?89af1208bca79d22f9c051bb86d40de1ebaf92b4 S:?58481f44f290203a644503946b3d6f2b9bd53916?127.0.0.1:9005 ???slots:?(0?slots)?slave ???replicates?c95629b3e17abaf3b0cef022359b49f4498a4d8a M:?89af1208bca79d22f9c051bb86d40de1ebaf92b4?127.0.0.1:9001 ???slots:5461-10922?(5462?slots)?master ???1?additional?replica(s) M:?c95629b3e17abaf3b0cef022359b49f4498a4d8a?127.0.0.1:9002 ???slots:10923-16383?(5461?slots)?master ???1?additional?replica(s) [OK]?All?nodes?agree?about?slots?configuration. >>>?Check?for?open?slots... >>>?Check?slots?coverage... [OK]?All?16384?slots?covered. 8.?连接集群 redis-cli?-c?-h?127.0.0.1?-p?9000 注意:如果遇到MOVED 5798错误 请阅读:http://www.chenxm.cc/post/695.html 8.1?关闭集群 ps?-ef?|?grep?redis?|?awk?'{print?$2}'?|?xargs?kill 9.?简单测试 >>>?redis-cli?-c?-h?192.168.3.99?-p?9000 127.0.0.1:9002>?set?foo?bar OK 127.0.0.1:9002>?set?hello?world ->?Redirected?to?slot?[866]?located?at?192.168.3.212:9000 OK 127.0.0.1:9000>?get?foo ->?Redirected?to?slot?[12182]?located?at?192.168.3.212:9002 "bar" 127.0.0.1:9002>?get?hello ->?Redirected?to?slot?[866]?located?at?192.168.3.212:9000 "world" 10?内部原理分析
前面我们已经学习过,用Redis提供的redis-trib或create-cluster脚本能几步甚至一步就建立起一个Redis集群。这一部分我们为了深入学习,所以要暂时抛开这些方便的工具,完全手动建立一遍上面的3主3从集群。 10.1 集群发现:MEET 最开始时,每个Redis实例自己是一个集群,我们通过cluster meet让各个结点互相“握手”。这也是Redis Cluster目前的一个欠缺之处:缺少结点的自动发现功能。 10.2 角色设置:REPLICATE 结点全部“握手”成功后,就可以用cluster replicate命令为结点指定角色了,默认每个结点都是Master。 10.3 槽指派:ADDSLOTS 设置好主从关系之后,就可以用cluster addslots命令指派16384个槽的位置了。有点恶心的是,ADDSLOTS命令需要在参数中一个个指明槽的ID,而不能指定范围。这里用Bash 3.0的特性简化了,不然就得用Bash的循环来完成了: 总结: 这是一篇完整的Redis集群部署,只要按照文章中的步骤做,那么保证你能成功搭建一个redis集群。 接下来可能就是动态扩容、增加节点和减少节点,重新分配槽大小等,当然,还有最重要的就是怎么和我们程序结合起来,以及如何更好的把 Redis 缓存集群发挥出应有的效果,这些才是最重要的。 参考:https://blog.csdn.net/dc_726/article/details/48552531 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- shell 学习四十七天----文件比较 cmp,diff,patch
- AngularJs删除ng-repeat中的重复元素
- angularjs – 单页应用程序 – 基于部分视图动态加载js文件
- angularjs – 如何使用PassportJS保护API端点?
- AngularJS:防止触发子元素的’mouseenter’事件
- angularjs – `ng-show`和`ng-hide`有什么区别?
- Vim:我可以使用破折号而不是用于空行的波浪线吗?
- Angular 2的12个经典面试问题汇总(文末附带Angular测试)
- scala – 为什么下面的代码泄漏了Slick数据库集合?
- angularjs-更改样式ng-class,ng-style