由于内存不足时,需要扩展redis到内存充足的机器上去,减少原来机器上的节点。
平时操作比较多的就是这个
先找内存比较充足的机器加一个slave节点,master slave 之间可以切换主从,
当一个master 有2个slave的时候就能删掉一个slave了
1、集群举例
可以用./redis-cli -h 192.168.1.130 -p 15060 -c cluster nodes | sort -k 2
查看所有集群的现有节点
找到171内存比较多,先同步文件!
mkdir /data/redis_all
cd /data/redis_all
rsync -avSH 192.168.1.131::data2/redis_allyes/* --exclude=dump* .
rm -rf *.rdb nodes* conf/* log/*同步的rdb文件,nodes*文件 conf/*文件不要
cp rebuild.sh 15060.sh
修改15060.sh,选择你要起的端口
sed -i 's/^save/#save/g' redis_cluster.conf
mkdir -p log
for((i=15060;i<=15060;i++))
do
echo create conf/$i
mkdir -p conf/$i
cp -f redis_cluster.conf conf/$i/redis.conf
sed -i "s/19999/$i/g" conf/$i/redis.conf
./redis-cli -p $i shutdown nosave
./redis-server conf/$i/redis.conf
done
sleep 5
for((i=15060;i<=15069;i++))
do
./redis-cli -p $i dbsize
done
sh 15060.sh启动一个redis-cluster实例
查看15060和25060是否别的程序被占用
netstat -tulnp | grep 25060
2、在内存不足的机器上添加slave节点
(有ruby环境的机器),可以执行./redis-trib.rb命令
yum install ruby
yum install rubygems
gem install redis-3.1.0.gem
添加slave节点第一步,加入集群
命令是#./redis-trib.rb add-node slaveIP:Port 集群中任意一个MasterIP:Port
例如:#./redis-trib.rb add-node 192.168.1.171:15060 192.168.1.130:15060
第二步复制,正式作为slave,此操作会master节点会bgsave,然后传送给slave rdb文件,slave再完全加载到内存,需要一些时间
命令是./redis-cli -h SlaveIP -p SlavePort -c cluster replicate MasterID
例如:./redis-cli -h 192.168.1.171 -p 15060 -c cluster replicate 56682f1ae15e16a89edd973cb0c0bc481576a7c3
执行之后 新加的slave开始同步master的数据
./redis-cli -p slave端口 -h slaveIP dbsize
加载中会报(error) LOADING Redis is loading the dataset in memory
能查到且和master相差不大说明加载好了
3、等内存加载完了./redis-cli -p slave端口 -h slaveIP dbsize 可以查看时 可以做failover了
./redis-cli -p slaveport -h slaveIP -c cluster failover 新加的slave切换成主
检查
./redis-cli -p 15060 -h 192.168.1.130 dbsize 执行后有结果
./redis-cli -h 192.168.1.130 -p 15060 -c cluster nodes | sort -k 2查看一下是否切换正常
当1个master有2个slave时,这时候就可以kill掉一个内存不足机器的slave了。
也可以等./redis-cli -h SlaveIP -p SlavePort dbsize可以查看时,删除一个slave
命令是./redis-trib.rb del-node slaveIP:Port SlaveID
例如./redis-trib.rb del-node 192.168.1.136:15067 56682f1ae15e16a89edd973cb0c0bc481576a7c3
在171上修改 startRedis.sh 文件
for((i=15060;i<=15060;i++))
do
./redis-server ./conf/$i/redis.conf
done
sleep 10
for((i=15060;i<=15069;i++))
do
./redis-cli -p $i dbsize
done
阅读(1487) | 评论(0) | 转发(0) |