




已阅读5页,还剩9页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
参考/cfl20121314/article/details/52838986Redis cluster 集群1 搭建集群环境1.1第一步安装ruby (什么是ruby)1.1.1 具体操作在终端或者shell连接的窗口中直接输入命令yum install ruby 会自动安装ruby1.1.2 遇到的问题只要能把ruby安装正确,怎么操作都行,本方法适用于外网开放的服务器,所以如果在虚拟机上需要确认是否联网,一开始我没注意,yum install 不成功,后来改用桥接的方式联网操作成功注意:可以用安装包进行安装,但是我没成功。1.1.3 检查安装用命令 ruby v可以检查是否安装完成其实看到complete就行了1.2 安装rubygems (什么是rubygems)1.2.1 步骤在终端窗口输入命令:yum install rubygems1.2.2 遇到问题提示 another app is currently holding the yum.那么直接 ps ef|grep yum 杀掉就行了同样的,联网安装最省事,如果无法联网需要知道安装包怎么安装。注意:如果退出来 发现没有可疑yum那么直接在输入命令即可1.3 安装 gem redis (这是啥)1.3.1 步骤直接输入命令 gem install redis 输入后按回车键等待,1.3.2 遇到问题:有的人不需要这一步也可以继续走,目前也没有找到相关资料,说明需要与不需要的区别。所以如果保险起见,还是在装完了rubygems运行一下,目前来看没有因为这一步出现问题,至少没有这一步,cluster无法创建是真的安装以上三步的原因:6:执行redis的创建集群命令创建集群cd/usr/local/redis3.0/src./redis-trib.rbcreate-replicas1:7000:7001:7002:7003:7004:70056.1执行上面的命令的时候会报错,因为是执行的ruby的脚本,需要ruby的环境错误内容:/usr/bin/env:ruby:Nosuchfileordirectory所以需要安装ruby的环境,这里推荐使用yuminstallruby安装yuminstallruby6.2然后再执行第6步的创建集群命令,还会报错,提示缺少rubygems组件,使用yum安装错误内容:./redis-trib.rb:24:inrequire:nosuchfiletoload-rubygems(LoadError)from./redis-trib.rb:24yuminstallrubygems6.3再次执行第6步的命令,还会报错,提示不能加载redis,是因为缺少redis和ruby的接口,使用gem安装错误内容:/usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:ingem_original_require:nosuchfiletoload-redis(LoadError)from/usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:inrequirefrom./redis-trib.rb:25geminstallredis1.4 安装redis (略)说明一点,截止至发稿日期,我用的版本是3.2.5最新的那个2 创建集群2.1创建节点2.1.1分配文件夹由于cluster的特点,与redis传统主从不同的是,cluster中的节点需要配置在不同的文件夹,否则无法创建集群(网络原句,没有验证)先进入redis根目录,创建节点文件夹,同一个服务器上的不同节点文件夹可以用端口号来命名即可2.1.2 修改配置文件61bind /默认ip为 需要改为其他节点机器可访问的ip 80protected-mode no/yes修改为no84port 7000 /端口7000 128daemonize yes /后台运行 150pidfile /var/run/redis_7000.pid /pidfile文件对应7000 721cluster-enabled yes /开启集群 729cluster-config-file nodes_7000.conf /集群的配置 735cluster-node-timeout 15000 /请求超时 默认15秒,可自行设置ERR Node :7000 is not empty. Either the node already knows other nodes (check with CLUSTER NODES) or contains some key in database 0.将根目录的redis.conf复制到每个对应的文件夹,需要注意的配置内容如下:Line 61:bind 12 #这里的两个ip地址表示redis负责监听的ip地址,也就是说,如果访问其他ip地址,redis不予回复。Line 84:port 7000 #端口名称保持与文件夹相同(没有验证不同是否允许,建议相同,至少好管理)Line 128:daemonize yes #默认是no 改为yes 是否以守护进程运行Line 721:cluster-enabled yes #默认注释掉了,开发cluster属性的配置,改为yesLine 729:cluster-config-file nodes-7008.conf # 这个文件的数字是对应的端口号 ,注意本配置文件是由redis集群中的节点自动维护更新的,不需手动修改,确保每一个节点对应一个独有的文件即可。Line 735:cluster-node-timeout 15000 #超时设置通过以上配置,基本就完成了集群所需,如果还有特殊的需要可以自行研究配置文件2.1.3 启动和创建集群配置好文件后,分别在每个端口目录下执行启动命令# redis-server 7000/redis.conf 检查启动的节点# ps ef|grep redis但是所有节点并没有被放在一个集群中,还需要创建集群进入redis根目录的src目录执行命令 ./redis-trib.rb create -replicas 1 :7000 :7001 :7002 :70003 :7004 :7005创建成功如下图:Redis集群默认最少3个主节点运行,如果少于三个,集群创建将会失败./redis-trib.rb :是ruby语言写的脚本,redis-cluster大部分命令的集成Create:命令之一,还有add-node del-node reshard等等其他命令-Replicas 1 是参数,说明从后面的节点中,对称的选择主节点(6,7个节点,则3个主节点,8,9个节点则4个主节点,以此类推)进入某个节点查看集群节点状态# redis-cli c p 7006 cluster nodes我们可以看到3个master节点,4个从节点(其中一个是自己后来加的,最初是3主3从)集群创建完毕3 测试集群功能3.1添加节点建立一个新的节点(这里我选择新建一个虚拟机,按照搭建方法从新搭建一个环境,新建一个节点192.168。1.113:7000)在第一个集群虚拟机上的redis根目录下的src中执行./redis-trib.rb add-node 13:7000 12:7006(任一已知集群中的节点)然后查看集群状态到第二个虚拟机上查看cluster nodes 发现已经连接上了目前新增的主节点,没有slots所以需要进行下一步操作3.2 重新分片执行命令./redis-trib.rb reshard 12:7006其中ip和端口是可以选择任意的主节点进行如的,然后会有如下提示输入需要分配到新节点的slots数量 ,比如2000输入需要接受slots的新节点id,从cluster nodes中我们可以找到id然后再 source node中输入 all 表示从所有原来老节点提取slots确认后,重新分片结束(碰见个坑,最后回答不能用Y ,而是必须YES否则分片失败)现在新节点13:7000上有了slots这里的分片是从所有其他主节点得来的,所以不连续3.3删除节点要删除有slots的节点,是不允许的,需要吧所有slots移出到其他可用节点执行的命令和重新分片是一样的,只不过,这次的源节点不是all而是删除的节点id而已在这里有个小测试,就是如果我们停掉了一个主节点,然后从节点顶上来充当主节点,那么继续停掉从节点,直到没有节点能够访问到原来停掉主节点的slots那么在slots上的数据将无法访问操作如下:观察最初主节点的keys杀掉节点获取在节点上的key发现从节点顶上来了杀掉从节点 继续在集群中get key 发现提示Clusterdown 3.5集群内部可以相互取数据,比如你在节点7000写入一个key值,然后你在7001获取该值,它会告诉你这个值在哪个节点并且将该值输出,该功能可以使的redis集群更好用4集群与JEDIS的测试4.1单元测试(已完成)这里说明一点:不需要吧所有节点都add进集合只要一个就够了4.2 京淘项目修改(未完成)5 Redis 集群的图解5.1传统redis主从哨兵模式5.3 新集群模式集群目标 1)高性能和线性扩展,最大可以支撑到1000个节点;Cluster架构中无Proxy层,Master与slave之间使用异步replication,且不存在操作的merge。(即操作不能跨多个nodes,不存在merge层) 2)一定程度上保证writes的安全性,需要客户端容忍一定程度的数据丢失:集群将会尽可能(best-effort)保存客户端write操作的数据;通常在failover期间,会有短暂时间内的数据丢失(因为异步replication引起);当客户端与少数派的节点处于网络分区时(network partition),丢失数据的可能性会更高。(因为节点有效性检测、failover需要更长的时间) 3)可用性:只要集群中大多数master可达、且失效的master至少有一个slave可达时,集群都可以继续提供服务;同时“replicas migration”可以将那些拥有多个slaves的master的某个slave,迁移到没有slave的master下,即将slaves的分布在整个集群相对平衡,尽力确保每个master都有一定数量的slave备份。 (Redis Cluster集群有多个shard组成,每个shard可以有一个master和多个slaves构成,数据根据hash slots配额分布在多个shard节点上,节点之间建立双向TCP链接用于有效性检测、Failover等,Client直接与shard节点进行通讯;Cluster集群没有Proxy层,也没有中央式的Master用于协调集群状态或者state存储;集群暂不提供动态reblance策略)3.Redis 集群的节点间通过Gossip协议通信。命令:/集群(cluster) CLUSTER INFO 打印集群的信息 CLUSTER NODES 列出集群当前已知的所有节点(node),以及这些节点的相关信息。 /节点(node) CLUSTER MEET 将 ip 和 port 所指定的节点添加到集群当中,让它成为集群的一份子。 CLUSTER FORGET 从集群中移除 node_id 指定的节点。 CLUSTER REPLICATE 将当前节点设置为 node_id 指定的节点的从节点。 CLUSTER SAVECONFIG 将节点的配置文件保存到硬盘里面。 /槽(slot) CLUSTER ADDSLOTS slot . 将一个或多个槽(slot)指派(assign)给当前节点。 CLUSTER DELSLOTS slot . 移除一个或多个槽对当前节点的指派。 CLUSTER FLUSHSLOTS 移除指派给当前节点的所有槽,让当前节点变成一个没有指派任何槽的节点。 CLUSTER SETSLOT NODE 将槽 slot 指派给 node_id 指定的节点,如果槽已经指派给另一个节点,那么先让另一个节点删除该槽,然后再进行指派。 CLUSTER SETSLOT MIGRATING 将本节点的槽 slo
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 健康教育公众咨询方案
- 学校拼音考试试题及答案
- DB65T 4338-2021 玉米产区玉米螟绿色防控技术规程
- 活动1 策划方案巧编排说课稿-2025-2026学年初中信息技术安徽版八年级上册-安徽版2018
- DB65T 4447-2021 羊粪有机肥机械化制作技术规范
- 农业绿色转型背景下2025年农业绿色技术创新与应用前景报告
- 有关音乐的测试题及答案
- 2025年邮政综合考题题库及答案
- 城东科四考试题型及答案
- 第16课 我的“冬奥会”(三)说课稿-2025-2026学年初中信息技术龙教版2018八年级上册-龙教版2018
- GB/T 3810.14-2016陶瓷砖试验方法第14部分:耐污染性的测定
- GB/T 26567-2011水泥原料易磨性试验方法(邦德法)
- 企业知识产权管理中的专利挖掘工作概述课件
- 癫痫的急救与护理课件
- 国家地表水环境质量监测网采测分离实施方案课件
- 【高等数学练习题】兰州交通大学专升本自考真题汇总(附答案解析)
- 加速康复在肝胆胰外科的应用课件
- 【完整版】锁骨骨折护理查房课件
- 大学信息系统建设与运行维护管理办法
- 大学植物学1细胞
- GB∕T 35320-2017 危险与可操作性分析(HAZOP分析)应用指南
评论
0/150
提交评论