redis之 3.0集群安装

1. 集群

即使有了主从复制每个数据库都要保存整个集群中的所有数据容易形成木桶效应

使用Jedis实现了分片集群是由客户端控制哪些key数据保存到哪个数据库中如果在水平扩容时就必须手动进行数据迁移而且需要将整个集群停止服务这样做非常不好的

Redis3.0版本的一大特性就是集群Cluster),接下来我们一起学习集群。

1.0. 架构

 

(1)所有的redis节点彼此互联(PING-PONG机制),内部使用二进制协议优化传输速度和带宽.

(2)节点的fail是通过集群中超过半数的节点检测失效时才生效.

(3)客户端与redis节点直连,不需要中间proxy.客户端不需要连接集群所有节点,连接集群中任何一个可用节点即可

(4)redis-cluster把所有的物理节点映射到[0-16383]slot(插槽),cluster 负责维护node<->slot<->value

1.1. 解压安装包

[root@mysql5 local]# pwd
/usr/local
[root@mysql5 redis]# tar -zxvf redis-3.0.2.tar.gz
[root@mysql5 redis]# ln -s redis-3.0.2 redis

[root@mysql5 redis]# pwd
/usr/local/redis
[root@mysql5 redis]# make
[root@mysql5 redis]# make install PREFIX=/usr/local/redis

# 创建六个实例目录
[root@mysql5 redis]# mkdir /usr/local/redis7001
[root@mysql5 redis]# mkdir /usr/local/redis7002
[root@mysql5 redis]# mkdir /usr/local/redis7003
[root@mysql5 redis]# mkdir /usr/local/redis7004
[root@mysql5 redis]# mkdir /usr/local/redis7005
[root@mysql5 redis]# mkdir /usr/local/redis7006

# 拷贝软件到相应的实例
[root@mysql5 redis]# pwd
/usr/local/redis
[root@mysql5 redis]# cp -rf * /usr/local/redis7001
[root@mysql5 redis]# cp -rf * /usr/local/redis7002
[root@mysql5 redis]# cp -rf * /usr/local/redis7003
[root@mysql5 redis]# cp -rf * /usr/local/redis7004
[root@mysql5 redis]# cp -rf * /usr/local/redis7005
[root@mysql5 redis]# cp -rf * /usr/local/redis7006

1.2. 修改配置文件

1、 设置不同的端口,7001、7002、7003、7004、7005、7006

2、 开启集群,cluster-enabled yes

3、 指定集群的配置文件,cluster-config-file "nodes-xxxx.conf"

4、打开redis后台执行,    daemonize yes

5、启动集群

1.3. 创建集群

1.3.1. 安装ruby环境

因为redis-trib.rb是有ruby语言编写的所以需要安装ruby环境

yum -y install zlib ruby rubygems

gem install redis

手动安装

rz上传redis-3.2.1.gem

gem install -l redis-3.2.1.gem

1.3.2. 创建集群

首先进入redis的安装包路径下

cd /usr/local/src/redis/redis-3.0.1/src/

执行命令

./redis-trib.rb create --replicas 1 10.100.25.44:7001 10.100.25.44:7002 10.100.25.44:7003 10.100.25.44:7004 10.100.25.44:7005  10.100.25.44:7006

--replicas 0:指定了从数据的数量为0 ,如果指定为1的话,每个集群节点会有一个副本

注意这里不能使用127.0.0.1,否则在Jedis客户端使用时无法连接到!

redis-trib用法

 

1.3.3. 集群检测

[root@mysql5 redis7001]# redis-cli -p 7001
127.0.0.1:7001> cluster nodes
dbec41c5a8406c18810a9962ed68068fbcf9aaac 10.100.25.44:7005 slave d277e9e7267b8e6f7da2e72b0d4070868c51bfe3 0 1538674374274 5 connected
d42782bf3eaf1e130d0d694533f3e1bea7e3ef2c 10.100.25.44:7003 master - 0 1538674373770 3 connected 10923-16383
9a0ab8d1772787bde727b0e78b1b8db242f60d2b 10.100.25.44:7004 slave 1e0d1bea4f1f95ca2d673bbbe342afa2646e942b 0 1538674376293 4 connected
17d51731c87847ed5dd6d78146f68a899e0028ab 10.100.25.44:7006 slave d42782bf3eaf1e130d0d694533f3e1bea7e3ef2c 0 1538674371251 6 connected
d277e9e7267b8e6f7da2e72b0d4070868c51bfe3 10.100.25.44:7002 master - 0 1538674375284 2 connected 5461-10922
1e0d1bea4f1f95ca2d673bbbe342afa2646e942b 10.100.25.44:7001 myself,master - 0 0 1 connected 0-5460

 

原文地址:https://www.cnblogs.com/andy6/p/9742676.html