Redis cluster的部署

一、Redis cluster介绍

1.基础信息

Redis 集群是一个提供在多个Redis间节点间共享数据的程序集。

Redis集群并不支持处理多个keys的命令,因为这需要在不同的节点间移动数据,从而达不到像Redis那样的性能,在高负载的情况下可能会导致不可预料的错误.

Redis 集群通过分区来提供一定程度的可用性,在实际环境中当某个节点宕机或者不可达的情况下继续处理命令. Redis 集群的优势:

自动分割数据到不同的节点上。
整个集群的部分节点失败或者不可达的情况下能够继续处理命令。

2.Redis 集群的数据分片

Redis 集群有16384个哈希槽,每个key通过CRC16校验后对16384取模来决定放置哪个槽.集群的每个节点负责一部分hash槽,举个例子,比如当前集群有3个节点,那么:

节点 A 包含 0 到 5500号哈希槽.
节点 B 包含5501 到 11000 号哈希槽.
节点 C 包含11001 到 16384号哈希槽.

二、配置单机多线程集群

[root@server1 redis]# cd  /usr/local/
[root@server1 local]# mkdir  cluster
[root@server1 local]# cd  cluster/
[root@server1 cluster]# mkdir 700{1..6}
[root@server1 cluster]# cd  7001/
[root@server1 7001]# vim   redis.conf
port 7001
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes
daemonize yes
pidfile /usr/local/cluster/7001/redis.pid
logfile /usr/local/cluster/7001/redis.log

添加命令

[root@server1 ~]# cd  redis-4.0.8/src/
[root@server1 src]# cp  redis-trib.rb /usr/local/bin/

这里写图片描述

[root@server1 ~]# yum  install -y rubygems-1.3.7-5.el6.noarch.rpm  libyaml-0.1.3-4.el6_6.x86_64.rpm
[root@server1 ~]# yum  install ruby-2.2.3-1.el6.x86_64.rpm  -y
[root@server1 ~]# gem install --local  redis-4.0.1.gem 
Successfully installed redis-4.0.1
Parsing documentation for redis-4.0.1
Installing ri documentation for redis-4.0.1
Done installing documentation for redis after 1 seconds
1 gem installed

这里写图片描述
[root@server1 ~]# redis-trib.rb 可以使用
这里写图片描述
搭建集群:

[root@server1 7001]# /etc/init.d/redis_6379 stop
[root@server1 7001]# vim  redis.conf 

这里写图片描述

[root@server1 7001]# /etc/init.d/redis_6379 stop
[root@server1 7001]# vim  redis.conf 

这里写图片描述

[root@server1 7001]# cat  redis.log

这里写图片描述

[root@server1 7001]# echo 511 > /proc/sys/net/core/somaxconn
[root@server1 7001]# sysctl -w  vm.overcommit_memory=1
vm.overcommit_memory = 1
[root@server1 7001]# vim  /etc/sysctl.conf  #在最后加入上边的参数
[root@server1 7001]# echo never > /sys/kernel/mm/transparent_hugepage/enabled

对其他节点进行同样的配置:

[root@server1 7001]# cp   redis.conf   ../7002
[root@server1 7001]# cp   redis.conf   ../7003
[root@server1 7001]# cp   redis.conf   ../7004
[root@server1 7001]# cp   redis.conf   ../7005
[root@server1 7001]# cp   redis.conf   ../7006

进入对应的目录修改端口号和文件名
分别启动
redis-server redis.conf
最后查看进程:
这里写图片描述
创建集群分配哈希槽

[root@server1 7006]# redis-trib.rb create --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

这里写图片描述

[root@server1 7006]# redis-cli -c  -p  7001
127.0.0.1:7001> INFO

这里写图片描述

127.0.0.1:7001> set name  kobe
-> Redirected to slot [5798] located at 127.0.0.1:7002
OK
127.0.0.1:7002> get name
"kobe"

这里写图片描述

[root@server1 7006]# redis-cli -c -p  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> 
[root@server1 7006]# redis-cli -c -p  7005
127.0.0.1:7004> get name
-> Redirected to slot [5798] located at 127.0.0.1:7005
"kobe"

这里写图片描述
7005已经成为新的master
重新激活7002:

[root@server1 cluster]# cd  7002
[root@server1 7002]# redis-server s

7002继承slave角色
这里写图片描述
破坏其中一个master后,对应的slave机会自动接管master,但当一组master和slave都down掉后,集群无法使用

猜你喜欢

转载自blog.csdn.net/weixin_41476978/article/details/81606909