美文网首页
Redis(三)

Redis(三)

作者: 吃可爱长大鸭 | 来源:发表于2020-01-02 19:38 被阅读0次

第十七章 redis集群写入测试

1.尝试插入一条数据发现报错

10.0.0.51:6380> set k1 v1
(error) MOVED 12706 10.0.0.53:6380

2.目前的现象

- 在db01的6380节点插入数据提示报错
- 报错内容提示应该移动到db03的6380上
- 在db03的6380上执行相同的插入命令可以插入成功
- 在db01的6380节点插入数据有时候可以,有时候不行
- 使用-c参数后,可以正常插入命令,并且节点切换到了提示的对应节点上

3.问题原因

因为集群模式有ASK路由规则,加入-c参数后,会自动跳转到目标节点处理
并且最后由目标节点返回信息

4.测试足够随机足够平均

#!/bin/bash
for i in {1..10000}
do
    redis-cli -c -h db01 -p 6380 set k_${i} v_${i} && echo "set k_${i} is ok"
done

第十八章 redis集群使用工具安装部署

1.安装依赖-只要在db01上操作

yum makecache fast
yum install rubygems -y
gem sources --remove https://rubygems.org/
gem sources -a http://mirrors.aliyun.com/rubygems/
gem update –system
gem install redis -v 3.3.5

2.还原环境-所有节点都执行!!!

pkill redis
rm -rf /data/redis_6380/*
rm -rf /data/redis_6381/*

3.启动集群节点-所有节点都执行

redis-server /opt/redis_6380/conf/redis_6380.conf
redis-server /opt/redis_6381/conf/redis_6381.conf
ps -ef|grep redis

4.使用工具搭建部署Redis

cd /opt/redis/src/
./redis-trib.rb create --replicas 1 10.0.0.51:6380 10.0.0.52:6380 10.0.0.53:6380 10.0.0.51:6381 10.0.0.52:6381 10.0.0.53:6381

5.检查集群完整性

./redis-trib.rb check 10.0.0.51:6380

6.检查集群负载是否合规

./redis-trib.rb rebalance 10.0.0.51:6380

第十九章 redis集群使用工具扩容

1.创建新节点-db01操作

mkdir -p /opt/redis_{6390,6391}/{conf,logs,pid}
mkdir -p /data/redis_{6390,6391}
cd /opt/
cp redis_6380/conf/redis_6380.conf redis_6390/conf/redis_6390.conf
cp redis_6380/conf/redis_6380.conf redis_6391/conf/redis_6391.conf
sed -i 's#6380#6390#g' redis_6390/conf/redis_6390.conf
sed -i 's#6380#6391#g' redis_6391/conf/redis_6391.conf
redis-server /opt/redis_6390/conf/redis_6390.conf
redis-server /opt/redis_6391/conf/redis_6391.conf
ps -ef|grep redis
redis-cli -c -h db01 -p 6380 cluster meet 10.0.0.51 6390
redis-cli -c -h db01 -p 6380 cluster meet 10.0.0.51 6391
redis-cli -c -h db01 -p 6380 cluster nodes

2.使用工具扩容步骤

cd /opt/redis/src/
./redis-trib.rb reshard 10.0.0.51:6380

第一次交互:每个节点保留多少个槽位
How many slots do you want to move (from 1 to 16384)?   4096

第二次交互:接收节点的ID是什么
What is the receiving node ID?  6390的ID

第三次交互:哪个节点需要导出
Source node #1: all

第四次交互:确认是否执行分配
Do you want to proceed with the proposed reshard plan (yes/no)? yes

3.检查集群完整性

./redis-trib.rb check 10.0.0.51:6380

4.检查集群负载是否合规

./redis-trib.rb rebalance 10.0.0.51:6380

5.调整复制顺序

redis-cli -h 10.0.0.53 -p 6381 CLUSTER REPLICATE 51-6390的ID
redis-cli -h 10.0.0.51 -p 6391 CLUSTER REPLICATE 51-6380的ID

6.测试写入脚本

[root@db01 ~]# cat input.sh 
for i in $(seq 1 10000)
do
    redis-cli -c -h db01 -p 6380 set k_${i} v_${i}
    sleep 0.1
    echo "set k_${i} is ok"
done

7.测试读脚本

[root@db03 ~]# cat du.sh 
#!/bin/bash 

for i in $(seq 1 10000)
do
    redis-cli -c -h db01 -p 6380 get k_${i}
    sleep 0.1 
done

第二十章 redis集群使用工具收缩节点

1.使用工具收缩节点

cd /opt/redis/src/
./redis-trib.rb reshard 10.0.0.51:6380

2.第一次交互: 要迁移多少个

How many slots do you want to move (from 1 to 16384)? 1365

3.第二次交互: 输入第一个需要接收节点的ID

What is the receiving node ID?  db01的6380的ID

4.第三次交互: 输入需要导出的节点的ID

Please enter all the source node IDs.
  Type 'all' to use all the nodes as source nodes for the hash slots.
  Type 'done' once you entered all the source nodes IDs.
Source node #1: db01的6390的ID
Source node #2: done

5.第四次交互: 确认

Do you want to proceed with the proposed reshard plan (yes/no)?  yes

6.继续重复的操作,直到6390所有的槽位都分配给了其他主节点

7.确认集群状态是否正常,确认6390槽位是否都迁移走了

[root@db01 /opt/redis/src]#./redis-trib.rb info 10.0.0.51:6380
10.0.0.51:6380 (4e3078c0...) -> 61 keys | 5461 slots | 2 slaves.
10.0.0.53:6380 (527f17f6...) -> 63 keys | 5462 slots | 1 slaves.
10.0.0.51:6390 (1ce44ea8...) -> 0 keys | 0 slots | 0 slaves.
10.0.0.52:6380 (c8a5f924...) -> 57 keys | 5461 slots | 1 slaves.
[OK] 181 keys in 4 masters.
0.01 keys per slot on average.

8.忘记以及下线节点

redis-cli -h 10.0.0.51 -p 6380 CLUSTER NODES
[root@db01 /opt/redis/src]# ./redis-trib.rb del-node 10.0.0.51:6390 baf9585a780d9f6e731972613a94b6f3e6d3fb5e
[root@db01 /opt/redis/src]# ./redis-trib.rb del-node 10.0.0.51:6391 e54a79cca258eb76fb74fc12dafab5ebac26ed90

相关文章

网友评论

      本文标题:Redis(三)

      本文链接:https://www.haomeiwen.com/subject/gdnooctx.html