一、redis集群原理
redis集群中的所有节点彼此互联,节点内部采用二进制协议优化传输速度和带宽,每个节点都可以与Java客户端连接。redis集群的数据分配采用哈希槽,它内置了16384个哈希槽,开发者可以根据每个redis实例的性能来调整每个redis实例上哈希槽的分布范围。当需要进行数据存取时,redis首先使用CRC16算法对key进行计算,计算结果对16384取余,即CRC16(key)%16384,使用余数来确定去哪一个节点存取这个key。当集群中超过半数的节点检测失效时会认为该节点失效。
二、集群搭建
1.集群规划
本次在两台服务器上进行安装,192.168.72.129和192.168.72.130,集群规划如下:
主节点:192.168.72.129:7001,192.168.72.129:7002,192.168.72.129:7003
从节点:192.168.72.130:8001,192.168.72.130:8002,192.168.72.130:8003
2.安装Ruby环境
Redis5.0之前的版本,创建集群需要使用redis集群管理工具redis-trib.rb
,它依赖于Ruby环境,需要安装Ruby环境,5.0之后的版本不再依赖Ruby环境,请自行绕过该小节。
为了方便安装,此处使用Ruby版本管理工具rvm来进行安装(可参考rvm官网:http://www.rvm.io/)。
安装GPG key:
gpg2 --keyserver hkp://pool.sks-keyservers.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB
安装rvm:
\curl -sSL https://get.rvm.io | bash -s stable
此时发现有报错:
这是因为nss版本过低导致,升级nss版本:yum -y update nss
,再次执行上一步命令安装成功。
查找rvm配置文件: find / -name rvm.sh
,返回路径为:/etc/profile.d/rvm.sh。
使配置文件生效:source /etc/profile.d/rvm.sh
下载rvm依赖:rvm requirements
查看rvm库Ruby版本:rvm list known
,如下图所示:
选择指定版本进行安装:rvm install ruby-2.5.3
安装后有提示:
查看/usr/local/rvm/log/1551880376_ruby-2.5.3/rubygems.install.log,里边有如下提示:
此时需要使用rvm install ruby-2.5.3 --rubygems ignore
命令来安装。安装成功:
设置ruby默认版本:rvm use 2.5.3 default
最后,安装Redis依赖:gem install redis
3.解压安装redis
两台服务器上均执行如下操作:
(1)上传下载好的redis安装包redis-5.0.3.tar.gz到/instal
目录下,执行命令tar -zxvf redis-5.0.3.tar.gz
解压文件;
(2)将解压好的文件复制到规划好的安装位置cp -r redis-5.0.3 /usr/local/redis_cluster
;
(3)在/usr/local/redis_cluster
目录下执行以下命令进行安装:
make MALLOC=libc
make install
安装期间会遇到的问题可参考: