软件世界网 购物 网址 三丰软件 | 小说 美女秀 图库大全 游戏 笑话 | 下载 开发知识库 新闻 开发 图片素材
多播视频美女直播
↓电视,电影,美女直播,迅雷资源↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
移动开发 架构设计 编程语言 Web前端 互联网
开发杂谈 系统运维 研发管理 数据库 云计算 Android开发资料
  软件世界网 -> 系统运维 -> redis3.0的集群部署 -> 正文阅读
系统运维 最新文章
linux新进程的创建
Muduo网络库源码分析(一)EventLoop事件循
Linux系统分区
haproxylvsnginx负载均衡的比较
PeopleSoft介绍
win7+iis7+asp+.net+php环境配置
执行系统命令并且将输出写到指定日志文件的
linux批量替换多个文件中的字符串
makefile中=、:=和+=的区别
Linux服务器不关机新增硬盘的方法

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

  2016-04-02 21:00:49

在做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

注意:127.0.0.1改为本机地址。
如果有报错,如下

说明之前启动过,已经在相应目录先生成了3个文件,appendonly.aof、dump.rdb、nodes-7000.conf,需要把原来的这3个数据文件删掉。
解释下, --replicas  1  表示 自动为每一个master节点分配一个slave节点    上面有6个节点,程序会按照一定规则生成 3个master(主)3个slave(从)。前面已经提醒过的 防火墙一定要开放监听的端口,否则会创建失败。
如果不先开启相应的redis,则启动集群发现报错如下:

所以要先启动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接口,从而无法进行集群操作。出现如下图的现象:

报错如上,通过公司的牛人,把这个弄好了,具体的我没有问。通过gem list发现有redis 3.xxx了,所以成功了。(牛人给的解决的网址 https://ruby.taobao.org/)
然后我继续弄,发现报错如下:

首先,我以为是像第一次安装一样出的错,于是我删了里面多余的东西,重启又重启,发现还是有问题。于是用1.143远程1.142的不同端口,发现报错如下:

解决1:把1.142写进1.143的hosts里面,还是没法解决。
解决2:我把selinux关掉,然后重启,发现还是没解决。
解决3:systemctl stop firewalld.service ,good ,问题解决。
总结解决办法,gem安装redis接口是必须,所以要保证源的正确性,也就是最新版的最好。然后必须关掉selinux和firewalld,就可以解决no route to host的问题了。
然而……

还是得把里面多出来的东西删了,然后重启,就ok了。
上一篇文章           查看所有文章
2016-04-02 21:00:29  
360图书馆 论文大全 母婴/育儿 软件开发资料 网页快照 文字转语音 购物精选 软件 美食菜谱 新闻中心 电影下载 小游戏 Chinese Culture
生肖星座解梦 人民的名义 人民的名义在线看 三沣玩客 拍拍 视频 开发 Android开发 站长 古典小说 网文精选 搜图网 天下美图
中国文化英文 多播视频 装修知识库
2017-4-26 17:57:29
多播视频美女直播
↓电视,电影,美女直播,迅雷资源↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  软件世界网 --