您的位置:首页 > 数据库 > Redis

Redis集群及其中间遇到的坑

2017-09-27 16:10 246 查看

Redis集群

集群准备

下载并解压Resis:
wget http://download.redis.io/releases/redis-4.0.0.tar.gz[/code] 
进入Redis目录下
make && make install


可能会报错

/bin/sh: cc: 未找到命令
make[1]: *** [adlist.o] 错误 127


原因是没有gcc,安装gcc就好
yum install gcc


建议下版本高一点的

/opt/redis-4.0.0/src/redis-trib.rb
复制到
/usr/local/bin


/opt/redis-4.0.0/
目录下创建
redis_cluster


/opt/redis-4.0.0/redis_cluster
下创建7001,7002,7003节点目录

拷贝
/opt/redis-4.0.0/redis.conf
到节点目录

[root@localhost redis-4.0.0]# cp redis.conf redis_cluster/7000
[root@localhost redis-4.0.0]# cp redis.conf redis_cluster/7001
[root@localhost redis-4.0.0]# cp redis.conf redis_cluster/7002


分别修改这3个目录下的redis.conf配置文件

port  7000                                        //端口7000,7002,7003
bind 本机ip                                       //默认ip为127.0.0.1 需要改为其他节点机器可访问的ip 否则创建集群时无法访问对应的端口,无法创建集群
daemonize    yes                               //redis后台运行
pidfile  /<
4000
span class="hljs-built_in">var/run/redis_7000.pid          //pidfile文件对应7000,7001,7002
cluster-enabled  yes                           //开启集群  把注释#去掉
cluster-config-file  nodes_7000.conf   //集群的配置  配置文件首次启动自动生成 7000,7001,7002
cluster-node-timeout  15000                //请求超时  默认15秒,可自行设置
appendonly  yes                           //aof日志开启  有需要就开启,它会每次写操作都记录一条日志


在例外一台机器上进行上步操作,端口为7003,7004,7005

启动2个服务器的redis

redis-server /opt/redis-4.0.0/redis_cluster/7000/redis.conf
redis-server /opt/redis-4.0.0/redis_cluster/7001/redis.conf
redis-server /opt/redis-4.0.0/redis_cluster/7002/redis.conf
redis-server /opt/redis-4.0.0/redis_cluster/7003/redis.conf
redis-server /opt/redis-4.0.0/redis_cluster/7004/redis.conf
redis-server /opt/redis-4.0.0/redis_cluster/7005/redis.conf


查看2台服务器的Redis是否开启
ps -ef| grep redis


集群开始

这里使用到
/opt/redis-x.x.x/src/redis-trib.rb
,但是redis-trib.rb是使用ruby写的,这里还要下载ruby工具:
yum -y install ruby ruby-devel rubygems rpm-build


使用gem安装redis接口
gem install redis


可能会遇到的问题

ERROR:  Error installing redis:
redis requires Ruby version >= 2.2.2.


解决方案

1.安装curl

sudo yum install curl

2. 安装RVM

curl -L get.rvm.io | bash -s stable

3.

source /usr/local/rvm/scripts/rvm

4. 查看rvm库中已知的ruby版本

rvm list known

5. 安装一个ruby版本

rvm install 2.3.3

6. 使用一个ruby版本

rvm use 2.3.3

7. 设置默认版本

rvm remove 2.0.0

8. 卸载一个已知版本

ruby --version

9. 再安装redis就可以了

gem install redis


create (确保每个redis都是启动的)

/opt/redis-4.0.0/src/redis-trib.rb create --replicas 1 192.168.115.132:7000  192.168.115.132:7001  192.168.115.132:7002 192.168.115.130:7003 192.168.115.130:7004 192.168.115.130:7005


注意补充

–replicas 1 表示 自动为每一个master节点分配一个slave节点 上面有6个节点,程序会按照一定规则生成 3个master(主)3个slave(从)防火墙一定要开放监听的端口,否则会创建失败

可能出现问题

[root@localhost src]# ./redis-trib.rb create --replicas 1 192.168.115.132:7000  192.168.115.132:7001  192.168.115.132:7002 192.168.115.130:7003 192.168.115.130:70
>>> Creating cluster
[ERR] Sorry, can't connect to node 192.168.115.130:7003

解决方案:另外一服务器机子7003端口没有对外开放
firewall-cmd --zone=public --add-port=7003/tcp --permanent
firewall-cmd --zone=public --add-port=7004/tcp --permanent
firewall-cmd --zone=public --add-port=7005/tcp --permanent
firewall-cmd --reload
最后你会发现终究OK了


这可能是最后一个坑

集群一直处于等待状态

Sending CLUSTER MEET messages to join the cluster
Waiting for the cluster to join...........


在/etc/profil/iptables中添加开放端口

如果上面失败,清楚每个Redis中的缓存文件,例如我的在:

/opt/redis-4.0.0/redis_cluster/7000目录下的 *.aof nodes* 等文件:
rm -rf *.aof nodes*


集群开启与关闭

Redis集群没有重启或者关闭操作,解决方案,清楚数据重新集群

rm -rf **/*.aof **/*.rdb **/nodes*


/opt/redis-4.0.0/src/redis-trib.rb create --replicas 1 192.168.115.132:7000
192.168.115.132:7001
192.168.115.132:7002
192.168.115.130:7003
192.168.115.130:7004
192.168.115.130:7005
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息