安装流程:
1.首先请参看Redis多实例配置好Redis,至少6个实例。
2.安装RVM(Ruby Version Manage),使用Rvm安装Ruby,Ruby版本>=2.2.2。
3.开始Redis集群。
4.测试
注意事项:
1.集群的时候需要关闭防火墙或者把Redis以及Redis集群总线端口加入白名单。
2.重启Redis服务器的时候记得清空运行时候的数据,否则出错
3.Redis需要开启cluster-enabled yes,不要设置密码,否则提示连接不上(因为redis-trib.rb集群工具没有提供该参数),具体解决方案后面提出。
一:安装RVM和Ruby,安装完成之后执行gem install redis
具体安装参加RVM安装,注意我们安装的时候选择安装2.2.2及以上的版本,以2.3.3为例。
RVM 安装(使用普通用户,否则按照可能出错)
$ gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3
$ \curl -sSL https://get.rvm.io | bash -s stable
$ source ~/.bashrc
$ source ~/.bash_profile
修改 RVM 的 Ruby 安装源到 Ruby China 的 Ruby 镜像服务器,这样能提高安装速度
$ echo "ruby_url=https://cache.ruby-china.org/pub/ruby" > ~/.rvm/user/db
Ruby 的安装与切换
列出已知的 Ruby 版本
rvm list known
安装一个 Ruby 版本
rvm install 2.3.3 --disable-binary
这里安装了最新的 2.3.3, rvm list known 列表里面的都可以拿来安装。
切换 Ruby 版本
rvm use 2.3.3
如果想设置为默认版本,这样一来以后新打开的控制台默认的 Ruby 就是这个版本
rvm use 2.3.3 --default
查询已经安装的ruby
rvm list
卸载一个已安装版本
rvm remove 1.8.7
执行gem指令
gem install redis
二:配置Redis选项
#requirepass admin //注释掉,不启用密码验证
port 6379 //端口6379,6380,6381,总线端口+10000
bind 0.0.0.0 //保证其他机器可以访问
daemonize yes //redis后台运行
pidfile /var/redis/6379/run/redis_6379.pid //pidfile文件对应7000,7001,7002
logfile /var/redis/6379/log/redis_6379.log //日志文件
dir /var/redis/6379/data //数据存储文件
cluster-enabled yes //开启集群 把注释#去掉
cluster-config-file nodes_6379.conf //集群的配置 配置文件首次启动自动生成 7000,7001,7002
cluster-node-timeout 15000 //请求超时 默认15秒,可自行设置
appendonly yes //aof日志开启 有需要就开启,它会每次写操作都记录一条日志
为例方便处理,写一个启动当前主机的所有Redis实例和停止当前实例的脚本.sh
//启动指定的Redis实例:start_cluster.sh
redis-server redis_6379.conf
redis-server redis_6380.conf
redis-server redis_6381.conf
//停止Redis实例:stop_redis.sh并且删除缓存数据否则可能出现各种错误
redis-cli -p 6379 shutdown
redis-cli -p 6380 shutdown
redis-cli -p 6381 shutdown
#删除文件
rm -f /var/redis/6379/log/*
rm -f /var/redis/6379/data/*
rm -f /var/redis/6379/run/*
rm -f /var/redis/6380/log/*
rm -f /var/redis/6380/data/*
rm -f /var/redis/6380/run/*
rm -f /var/redis/6381/log/*
rm -f /var/redis/6381/data/*
rm -f /var/redis/6381/run/*
当上述配置完成之后启动Redis实例,并且检查是否启动成功:
打开端口防火墙或者关闭防火墙:
然后在另外一台机器采取同样配置,至此Redis配置完成。
二:Redis集群参考博客
首先切换可执行目录到ruby的安装目录:
source /home/admin/.rvm/scripts/rvm //切换可执行目录到这里
然后执行集群命令
//记得把当前目录切换到redis的src里面eg:cd /home/admin/redis-stable/src
./redis-trib.rb create --replicas 1 192.168.1.65:6379 192.168.1.65:6380 192.168.1.65:6381 192.168.1.25:6379 192.168.1.25:6380 192.168.1.25:6381
此时如果出错提示:进入rvm目录,使用gem install redis
如果安装并且运行:
关闭所有的Redis服务器实例,并且清空数据,然后重启,再次运行该命令,上面我们已经实现了.sh的脚本,所以直接运行:如图
此时集群完成。
三:测试
四:错误分析:
4.1.无法连接上节点:
1> 请检查实例是否绑定了ip,redis.conf 的bind是否为“0.0.0.0”
2>请检查防火墙是否关闭或者是否允许连接
3>请检查服务器是否启动
4>请确定Redis是否配置了密码,去掉密码
5>telnet确认是否可以连接上
4.2.Not Empty错误
1>关闭服务器,然后清空nodes.conf数据,重启服务器
4.3waiting for the cluster to join卡主了
1>检查消息总线端口是否通的或者可用,如上图。