Chinaunix首页 | 论坛 | 博客
  • 博客访问: 344918
  • 博文数量: 87
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 727
  • 用 户 组: 普通用户
  • 注册时间: 2014-11-27 15:56
个人简介

开心了, 就笑;不开心了,就过会儿再笑。。。。

文章分类

全部博文(87)

文章存档

2017年(16)

2016年(28)

2015年(33)

2014年(10)

我的朋友

分类: 大数据

2015-11-09 14:25:14

由于内存不足时,需要扩展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) |
给主人留下些什么吧!~~