- 下载、编译、安装 Ruby
yum install zlib-devel readline openssl-devel gcc gcc-c++
wget https://cache.ruby-lang.org/pub/ruby/2.6/ruby-2.6.1.tar.gz
tar xf ruby-2.6.1.tar.gz -C /usr/local
cd ruby-2.6.1/
./configure
make && make install
- 安装rubygem redis
cd …
wget https://rubygems.org/rubygems/rubygems-3.0.2.tgz
tar -xf rubygems-3.0.2.tgz
cd rubygems-3.0.2/
ruby setup.rb
gem install redis
- 安装 redis-trib.rb
mkdir /etc/redis
cd /usr/local/redis-4.0.10/
cp redis.conf /etc/redis/
cp ~/redis-4.0.10/src/redis-trib.rb /usr/local/bin/
mkdir -p /redis/data/
rm -rf /redis/data/*
cd /etc/redis/
- 修改配置文件
redis-6380.conf的配置文件如下
port 6380
daemonize yes
protected-mode no
pidfile “/var/run/redis-6380.pid”
logfile “/var/log/redis-6380.log”
dir “/redis/data”
cluster-enabled yes
cluster-config-file redis-6380.conf
cluster-require-full-coverage no
sed ‘s/6380/6381/g’ redis-6380.conf > redis-6381.conf
sed ‘s/6380/6382/g’ redis-6380.conf > redis-6382.conf
sed ‘s/6380/7001/g’ redis-6380.conf > redis-7001.conf
sed ‘s/6380/7002/g’ redis-6380.conf > redis-7002.conf
sed ‘s/6380/7003/g’ redis-6380.conf > redis-7003.conf
- 启动服务
redis-server /etc/redis/redis-6380.conf
redis-server /etc/redis/redis-6381.conf
redis-server /etc/redis/redis-6382.conf
scp redis-700* root@ela2:/etc/redis/
redis-server /etc/redis/redis-7001.conf
redis-server /etc/redis/redis-7002.conf
redis-server /etc/redis/redis-7003.conf
-
启动集群
redis-trib.rb create --replicas 1 192.168.203.192:6380 192.168.203.192:6381 192.168.203.192:6382 192.168.203.128:7001 192.168.203.128:7002 192.168.203.128:7003 -
此时集群建立
检测
redis-cli -p 6380 set hello wenqian
redis-cli -p 6381(任意一个节点) -c get hello
在别的节点可以得到hello这个key对应的值 -
添加两个新的节点 6384 和 7004
cp redis-7001.conf redis-6384.conf
sed -i ‘s/7001/6384/g’ redis-6384.conf
redis-server redis-6384.conf
cp redis-7001.conf redis-7004.conf
sed -i ‘s/7001/7004/g’ redis-7004.conf
redis-server redis-7004.conf
-
添加一个新的节点到集群为主节点
redis-trib.rb add-node 192.168.203.192:6384 192.168.203.192:6380 -
添加一个新节点到集群为从节点
(查看节点信息 redis-trib.rb del-node 192.168.203.192:7004)
(查看节点id redis-cli -p 6380 cluster nodes)
redis-trib.rb add-node --slave --master-id 192.168.203.192:7004 192.168.203.192:6381
-
重新分配槽
./redis-trib.rb reshard 127.0.0.1:7001 -
移动要删除节点的数据槽到目前集群中的任意一个主节点
redis-trib.rb reshard --from (要删除节点的id) --to (任意一个节点的id) --slots 100(槽数) 192.168.203.192:7001
反复操作以上指令,知道把需要删除节点的所有槽移动完毕
-
删除从节点
redis-trib.rb del-node 192.168.122.106:7004 868c5098d6aab08d8cd41acbac046319700e4729 -
删除主节点
redis-trib.rb del-node 192.168.122.106:6384 ed643cf5be217bc0bf78fe5c99fb6afa7c854e66