redis 集群部署 (linux)

昨晚在windos 上做了redis 集群部署,由于需要运行6个服务器才行,而且windos 部署挺麻烦的,今天早上在阿里上了买了服务器,部署redis集群,忙了一天,踩了无数的坑。

接下来的内容可能会很繁琐,啰嗦,因为是一个回顾,把遇到的问题的情形和分析,做一个总结。

首先,我购买阿里学生服务器,配置是,单核,2g,2m,专用网络,这个配置,也让我后面遇到了很多麻烦,第一次部署环境。

http://jingyan.baidu.com/article/ceb9fb10ac2bb38cac2ba04a.html 

按照百度经验开始部署,先安装了一个redis,这个就不做过多的解释,基本很容易就好了。

重点是集群,集群最少需要6个服务器,然后在执行./redis-trib.rb 脚本,集群就算完毕。

第一个难点,怎么在linux 上,我的是CentOS,怎么在上面部署6个redis?

部署过windos,所以我知道,大致流程就是6个独立配置,然后单独开启,就可以。

根据百度经验,我在/usr/local 下建立cluster文件夹,然后在里面单独建立6个文件夹,存放配置文件,然后把之前运行的redis.conf 复制过去,然后到redis-server 脚本文件夹里,位置是默认的,我记得是/usr/local/bin里面,在里面执行redis-server  redis.conf路径 这个命令,发现怎么都没办法启动第二个redis。

通过执行netstat -lnp  查看端口号命令,只能运行一个redis,通过这个命令发现最后一项发现他执行文件指向了这个redis-server,所以我把这个脚本复制给了这6个文件夹,然后进入对于的文件夹启动对于的配置文件,就成功了。配置项 :

port 端口号

bind IP (这里请不要根据百度或是网上其他文章,请看我的另一个:http://www.cnblogs.com/xiaohuihui96/p/7127922.html)

daemonize yes

cluster-enabled yes

cluster-config-file nodes.conf(最好就是加上端口号为标识)

cluster-node-timeout 5000

appendonly yes

 

最后部署成功的配置文件:http://www.cnblogs.com/xiaohuihui96/p/7128072.html

 

都没有问题就去启动那个集群脚本命令./redis-trib.rb  create --replicas 1 127.0.0.1:6180 127.0.0.1:6181 127.0.0.1:6182 127.0.0.1:6183 127.0.0.1:6184 127.0.0.1:6185

发现跟百度不一样,他报错了,大概的情况是,问你是不是同意以上的配置,yes,然后出来了一个单词,翻译后是:流产(流产你个头)。之前看过大概的配置内容,有一项是设置启动内存最大数,maxmemory 150000000,这里是b单位,查看了当前的内存使用情况,然后在在把数值进行换成乘以6个服务器,发现内存不够,所以启动失败,调小后就启动成功了。

到这里位置部署集群就差不多完成了。

这里遇到了其他的坑,分别有,redis的关闭 命令,使用redis-cli 命令,redis-cli -p 端口,连接进入,然后在执行shutdown ,exit退出就好了。

查看集群的情况,也是,先连接进入redis ,然后在执行集群命令  CLUSTER INFO 打印集群的信息,cluster info 这个命令是显示当前连接的集群的各种信息。

如果命令查看后没问题,那部署就算完成了。

 

接下来部分是部署后遇到的其他问题,外部访问不了,如果你外部测试后也是访问不了,可以接着往下看。

部署后,内部尝试没问题,于是使用cmd telnet 命令和window 上的redis-cli尝试着去连接,发现连接不上。

端口测试网站:http://tool.chinaz.com/port/   可以使用这个网站去测试你的端口是否正常。

为什么会连接不上?是服务器的问题还是redis的问题?

当时猜想最大的可能性是服务器安全组,因为是新的服务器,所以端口没有开放。所以去登陆账号去设置安全组,这里不得不说下开头说的配置,内存以前说了,接下来就是这个专用网络,安全组的官方文档说,需要配置外网安全组,然而专用网络这个是没有的,其实也不需要,他官网对专用网络的介绍又是什么独立隔离,误导我以为我买错了,所以浪费了很多时间,问了其他人,才知道他们跟我一样,是没问题的,所以排除了专用网络。专有网络 VPC 类型的安全组规则,不区分内网和公网,都设置在内网出方向和入方向的规则里。正确配置了安全组,开放了端口后,还是ping不通。

会不会是服务器的防火墙拦截了?找来找去之后,在阿里的文档里面的网络问题里面查看到,阿里的CentOS 7 用的是新的防火墙,默认不启动的,所以排除了防火墙的原因。

那就是redis 本身的问题。查看是bind 的配置项导致的,必须的配置本机ip,才可以。详细的在http://www.cnblogs.com/xiaohuihui96/p/7127922.html 。

到这里也ping通了端口了,花了整整一天。

配置也好了,当时也快下班了,所以跑了下idea里的测试用例,测试下,结果发现不行,报错说,得关闭redis 得安全模式,所以又重新改了下redis配置里面的一个安全模式,设置为no,然后就可以啦。这是最后一个坑。到这里一整天的错误和分析总结结束。接下来会写下window上部署redis集群的总结

 

posted @ 2017-07-06 20:14  有女朋友的程序猿  阅读(274)  评论(1编辑  收藏  举报