软件世界网 购物 网址 三丰软件 | 小说 美女秀 图库大全 游戏 笑话 | 下载 开发知识库 新闻 开发 图片素材
多播视频美女直播
↓电视,电影,美女直播,迅雷资源↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
移动开发 架构设计 编程语言 Web前端 互联网
开发杂谈 系统运维 研发管理 数据库 云计算 Android开发资料
  软件世界网 -> 系统运维 -> redis3.0的集群部署 -> 正文阅读

[系统运维]redis3.0的集群部署


在做redis-cluster群集之前,我已经安装好redis并做好sentinel了,所以,我关掉了之前启动的redis。
在做redis-cluster的时候,发现了之前版本使用的大多是memcache群集,因为它是另一种内存式数据库,因为它不能持久化的特点,所以公司并没有采用它。或者只能称之为缓存, 不能说它是库
1、创建redis节点
我们将在一台服务器上面创建6个节点,通过它们自主选举,会产生3个master和3个slave。
配置好了,就相应地把这个修改后的配置文件拷贝到 7001  7002 7003 7004 7005目录,注意要修改为相应的监听端口,例:port 7001。
2、接下来,启动服务,进入节点目录
依次执行  redis-server  redis.conf 就可以看到生成了appendonly.aof  nodes.conf。
ps -ef | grep redis 查看是否启动成功
netstat -tnlp | grep redis 可以看到redis监听端口
   我们除了看到 配置文件中设置的端口700*    还有700*+10000  (1700*), 前者是客户端访问的, 后者是集群内部节点之间访问的.
    注意:在多台Server间搭建集群,如果开了防火墙的,需要设置iptables开放上面所有端口.
3、创建集群
官方提供了一个工具:redis-trib.rb 看后缀就知道这鸟东西不能直接执行,它是用ruby写的一个程序,所以我们还得安装ruby.
#yum -y install ruby ruby-devel rubygems rpm-build
ubuntu安装ruby如下:
# sudo apt-get update
# sudo apt-get install ruby
或者
# sudo apt-get install ruby2.0
  再用 gem 这个命令来安装 redis接口,gem貌似是ruby的一个工具包  反正没错就是了。
  # gem install redis    //等一会儿就好了
/opt/redis-3.0.0/src/redis-trib.rb  create  --replicas  1  127.0.0.1:7000  127.0.0.1:7001  127.0.0.1:7003  127.0.0.1:7004  127.0.0.1:7005  127.0.0.1:7002
[img]http://img.blog.csdn.net/20160329152223104?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast
注意:127.0.0.1改为本机地址。
如果有报错,如下
[img]http://img.blog.csdn.net/20160328182225676?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast
说明之前启动过,已经在相应目录先生成了3个文件,appendonly.aof、dump.rdb、nodes-7000.conf,需要把原来的这3个数据文件删掉。
解释下, --replicas  1  表示 自动为每一个master节点分配一个slave节点    上面有6个节点,程序会按照一定规则生成 3个master(主)3个slave(从)。前面已经提醒过的 防火墙一定要开放监听的端口,否则会创建失败。
如果不先开启相应的redis,则启动集群发现报错如下:
[img]http://img.blog.csdn.net/20160328182759131?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast
所以要先启动redis,再启动群集。
运行中,提示Can I set the above configuration? (type 'yes' to accept): yes    //输入yes
4. 测试
  1)get 和 set数据
    redis-cli -c -p 7000
    进入命令窗口,直接 set  hello  howareyou
    直接根据hash匹配切换到相应的slot的节点上。
    还是要说明一下,redis集群有16383个slot组成,通过分片分布到多个节点上,读写都发生在master节点。
  2)假设测试
    哥果断先把Server2服务Down掉,(Server2有1个Master, 2个Slave) ,  跑回Server1, 查看一下 发生了什么事,Server1的3个节点全部都是Master,其他几个Server2的不见了
    测试一下,依然没有问题,集群依然能继续工作。
    原因:  redis集群  通过选举方式进行容错,保证一台Server挂了还能跑,这个选举是全部集群超过半数以上的Master发现其他Master挂了后,会将其他对应的Slave节点升级成Master.
    疑问: 要是挂的是Server1怎么办?    哥试了,cluster is down!!    没办法,超过半数挂了那救不了了,整个集群就无法工作了。 要是有三台Server,每台两Master,切记对应的主从节点
            不要放在一台Server,别问我为什么自己用脑子想想看,互相交叉配置主从,挂哪台也没事,你要说同时两台crash了,呵呵哒......
  3)关于一致性
    我还没有这么大胆拿redis来做数据库持久化哥网站数据,只是拿来做cache,官网说的很清楚,Redis Cluster is not able to guarantee strong consistency. 
  4)项目中实践
    项目是java的,选了 Jedis 这个开发包,哥先去跑跑看,就写到这里啦。有什么重大发现再续写喔。
2016.3.30
今天公司需要又搭建一套redis集群,而且一个是centos 另一个是ubuntu
在centos中,yum源里面的ruby没有更新,导致gem无法安装redis接口,从而无法进行集群操作。出现如下图的现象:
[img]http://img.blog.csdn.net/20160330181536484?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center
报错如上,通过公司的牛人,把这个弄好了,具体的我没有问。通过gem list发现有redis 3.xxx了,所以成功了。(牛人给的解决的网址 https://ruby.taobao.org/)
然后我继续弄,发现报错如下:
[img]http://img.blog.csdn.net/20160330181745375?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center
首先,我以为是像第一次安装一样出的错,于是我删了里面多余的东西,重启又重启,发现还是有问题。于是用1.143远程1.142的不同端口,发现报错如下:
[img]http://img.blog.csdn.net/20160330181929094?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center
解决1:把1.142写进1.143的hosts里面,还是没法解决。
解决2:我把selinux关掉,然后重启,发现还是没解决。
解决3:systemctl stop firewalld.service ,good ,问题解决。
总结解决办法,gem安装redis接口是必须,所以要保证源的正确性,也就是最新版的最好。然后必须关掉selinux和firewalld,就可以解决no route to host的问题了。
然而……
[img]http://img.blog.csdn.net/20160330182350127?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center
还是得把里面多出来的东西删了,然后重启,就ok了。
......显示全文...
    点击查看全文


上一篇文章           查看所有文章
2016-04-02 21:00:29  
系统运维 最新文章
linux新进程的创建
Muduo网络库源码分析(一)EventLoop事件循
Linux系统分区
haproxylvsnginx负载均衡的比较
PeopleSoft介绍
win7+iis7+asp+.net+php环境配置
执行系统命令并且将输出写到指定日志文件的
linux批量替换多个文件中的字符串
makefile中=、:=和+=的区别
Linux服务器不关机新增硬盘的方法
360图书馆 软件开发资料 文字转语音 购物精选 软件下载 美食菜谱 新闻资讯 电影视频 小游戏 Chinese Culture 股票 租车
生肖星座 三丰软件 视频 开发 短信 中国文化 网文精选 搜图网 美图 阅读网 多播 租车 短信 看图 日历 万年历 2018年1日历
2018-1-23 3:48:48
多播视频美女直播
↓电视,电影,美女直播,迅雷资源↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  软件世界网 --