Linux企业级——Redis集群

116 篇文章 0 订阅
114 篇文章 0 订阅

企业级——Redis集群

1.配置集群

(1)关闭redis

[root@server1 ~]# /etc/init.d/redis_6379 stop

(2)新建redis目录

[root@server1 ~]# mkdir /usr/local/rediscluster
[root@server1 rediscluster]# mkdir 700{1..6}

(3)编辑配置文件

cd 7001
vim redis.conf 
port 7001
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes
pidfile "/usr/local/rediscluster/7001/redis.pid"
logfile "/usr/local/rediscluster/7001/redis.log"
daemonize yes
dir "/usr/local/rediscluster/7001"

(4)启动:

 redis-server redis.conf

(5)查看

ps ax
 1332 ?        Ssl    0:00 redis-server *:7001 [cluster]

(6)测试

[root@server1 7001]# redis-cli -p 7001
127.0.0.1:7001> info
# Cluster

cluster_enabled:1	##集群激活
同理配置7002~7006,并启动
查看:
ps ax
1348 ?        Ssl    0:00 redis-server *:7001 [cluster]
1382 ?        Ssl    0:00 redis-server *:7002 [cluster]
1388 ?        Ssl    0:00 redis-server *:7003 [cluster]
1394 ?        Ssl    0:00 redis-server *:7004 [cluster]
1400 ?        Ssl    0:00 redis-server *:7005 [cluster]
1405 ?        Ssl    0:00 redis-server *:7006 [cluster]

(7)拷贝ruby脚本

cd /root/redis-5.0.3/src
cp redis-trib.rb /usr/local/bin/
安装ruby:
yum install -y ruby
执行命令:
redis-trib.rb
WARNING: redis-trib.rb is not longer available!
You should use redis-cli instead.	##redis-trib.rb不可用了,用redis-cli
查看说明:
redis-cli --cluster help

(8)创建集群

[root@server1 ~]# redis-cli --cluster create --cluster-replicas 1 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005 127.0.0.1:7006

yes

[OK] All 16384 slots covered.	#看到这个表示16384个槽都分配好了
#–cluster-replicas 1表示为每一个master创建1个slave

(9)查看集群信息

[root@server1 ~]# redis-cli --cluster info 127.0.0.1:7001	##输入其他端口也可以,但是必须输一个端口
(10)测试存储信息
[root@server1 ~]# redis-cli -c -p 7001
127.0.0.1:7001> set name lqh
-> Redirected to slot [5798] located at 127.0.0.1:7002
OK
127.0.0.1:7002> get name
"lqh"
数据保存在5798个哈希槽中,在7002上
[root@server1 ~]# redis-cli -c -p 7005
127.0.0.1:7005> get name
-> Redirected to slot [5798] located at 127.0.0.1:7002
"lqh"	#在任意节点都可以获取到信息,但是都会跳转到7002
挂掉7002,key还会保存在7004上:
redis-cli -c -p 7005
127.0.0.1:7005> get name
-> Redirected to slot [5798] located at 127.0.0.1:7002
"lqh"
127.0.0.1:7002> SHUTDOWN
not connected> 
redis-cli -c -p 7001
127.0.0.1:7001> get name
-> Redirected to slot [5798] located at 127.0.0.1:7002
Could not connect to Redis at 127.0.0.1:7002: Connection refused
Could not connect to Redis at 127.0.0.1:7002: Connection refused
not connected> exit

############################

[root@server1 src]# redis-cli --cluster info 127.0.0.1:7001		#查看信息
Could not connect to Redis at 127.0.0.1:7002: Connection refused
127.0.0.1:7001 (70f07453...) -> 0 keys | 5461 slots | 1 slaves.
127.0.0.1:7006 (3d5a0313...) -> 1 keys | 5462 slots | 0 slaves.
127.0.0.1:7003 (ae486b18...) -> 0 keys | 5461 slots | 1 slaves.
[OK] 1 keys in 3 masters.
0.00 keys per slot on average.
[root@server1 src]# redis-cli -c -p 7001
127.0.0.1:7001> get name
-> Redirected to slot [5798] located at 127.0.0.1:7006

##############################

[root@server1 ~]# redis-cli --cluster info 127.0.0.1:7001		#再次查看
Could not connect to Redis at 127.0.0.1:7002: Connection refused
127.0.0.1:7001 (4f5065af...) -> 0 keys | 5461 slots | 1 slaves.
127.0.0.1:7004 (fc590a43...) -> 1 keys | 5462 slots | 0 slaves.
127.0.0.1:7003 (0b2f0c60...) -> 0 keys | 5461 slots | 1 slaves.
[OK] 1 keys in 3 masters.
0.00 keys per slot on average.
[root@server1 ~]# redis-cli -c -p 7005
127.0.0.1:7005> get name
-> Redirected to slot [5798] located at 127.0.0.1:7004
"lqh"	#跳转到7004,还可以查看
再挂掉7004,key丢失:
[root@server1 ~]# redis-cli -c -p 7004
127.0.0.1:7004> SHUTDOWN
not connected> 
[root@server1 ~]# redis-cli -c -p 127.0.0.1:7004
Could not connect to Redis at 127.0.0.1:127: Connection refused
not connected> 
再次查看:
[root@server1 ~]# redis-cli --cluster info 127.0.0.1:7001
Could not connect to Redis at 127.0.0.1:7004: Connection refused
Could not connect to Redis at 127.0.0.1:7002: Connection refused
127.0.0.1:7001 (4f5065af...) -> 0 keys | 5461 slots | 1 slaves.
127.0.0.1:7003 (0b2f0c60...) -> 0 keys | 5461 slots | 1 slaves.
[OK] 0 keys in 2 masters.				
0.00 keys per slot on average.
#此时只有两个master了
尝试获取key,失败:
[root@server1 ~] redis-cli -c -p 7001
127.0.0.1:7001> get name
(error) CLUSTERDOWN The cluster is down
但可以查看刚才添加的信息:
[root@server1 ~]# cd /usr/local/rediscluster/
[root@server1 7002]# cat appendonly.aof 
*2
$6
SELECT
$1
0
*3
$3
set
$4
name
$3
lqh
再启动7002和7004:
[root@server1 7002]# redis-server redis.conf
[root@server1 7004]# redis-server redis.conf
此时正常查询:
[root@server1 ~]# redis-cli -c -p 7001
127.0.0.1:7001> get name
-> Redirected to slot [5798] located at 127.0.0.1:7006
"lqh"

2.Redis添加新节点

(1)建立目录

[root@server1 ~]# mkdir 7008
[root@server1 ~]# mkdir 7007

(2)编辑配置文件

cp 7001/redis.conf 7008/
cp 7001/redis.conf 7007/
vim 7007/redis.conf
vim 7008/redis.conf

(3)开启节点

[root@server1 7007]# redis-server redis.conf
[root@server1 7008]# redis-server redis.conf

(4)添加节点

[root@server1 7008]# redis-cli --cluster add-node 127.0.0.1:7007 127.0.0.1:7001	##添加节点

(5)查看节点信息

[root@server1 7008]# redis-cli -c -p 7007
127.0.0.1:7007> cluster nodes	

b9ee016d45dde6a0067dd3e19139f1044a621d77 127.0.0.1:7007@17007 myself,master - 0 1554949235000 0 connected
发现7007没有哈希槽
尽管新节点没有包含任何哈希槽, 但它仍然是一个主节点, 所以在集群需要将某个从节点升级为新的主节点时, 这个新节点不会被选中,所以要添加一个slave:
[root@server1 ~]# redis-cli --cluster add-node 127.0.0.1:7008 127.0.0.1:7007 --cluster-slave --cluster-master-id b9ee016d45dde6a0067dd3e19139f1044a621d77
UID要正确
查看:
[root@server1 ~]# redis-cli -c -p 7001
127.0.0.1:7001> cluster nodes			
查看集群信息:
[root@server1 ~]# redis-cli --cluster info 127.0.0.1:7001

(6)为新节点分配哈希槽

[root@server1 ~]# redis-cli --cluster reshard 127.0.0.1:7007

How many slots do you want to move (from 1 to 16384)? 300	##随便分配一点

What is the receiving node ID? b9ee016d45dde6a0067dd3e19139f1044a621d77	##接收哈希槽的节点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: all 这个意思是从所以的节点里选出500个槽位
检查可以看到已经分配哈希槽:
redis-cli --cluster check 127.0.0.1:7001
但是分配不均等,可能导致数据不同步
均分哈希槽:
[root@server1 ~]# redis-cli --cluster rebalance --cluster-threshold 1 --cluster-use-empty-masters 127.0.0.1:7001
查看数据:
[root@server1 ~]# redis-cli --cluster check 127.0.0.1:7001
[root@server1 ~]# redis-cli -c -p 7008
127.0.0.1:7008> get name
-> Redirected to slot [5798] located at 127.0.0.1:7007
"lqh"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值