Redis主从和集群的搭建

主从的搭建

主从的优缺点

优点:配置简单,一定程度提高了可用性
缺点:主挂掉之后,虽然客户端还能访问 但是只能读,不能写

redis 5.0 安装

wget http://download.redis.io/releases/redis-5.0.7.tar.gz
tar -zvxf redis-5.0.7.tar.gz
make

make install(会在/usr/local/bin/)生成如下

Redis主从和集群的搭建_第1张图片
复制redis.conf配置主从

主节点不用动
从节点修改端口和加上slaveof 127.0.0.1 6379
修改如下

#Redis使用后台模式
daemonize yes
#关闭保护模式
#protected-mode no
#注释以下内容开启远程访问
#bind 127.0.0.1
#修改启动端口为6379
port 6381
#修改pidfile指向路径
pidfile /usr/local/redis-3.0.0/conf/redis_6381.pid
#数据库的存放位置
dir /usr/local/redis-3.0.4/db/slave_two/
#Slaveof命令可以将当前服务器转变为指定服务器的从属服务器(slave server)。
slaveof 127.0.0.1 6379
在bin下执行
redis-server /redis/redis-5.0.7/conf/redis_6379.conf
redis-server /redis/redis-5.0.7/conf/redis_6380.conf
redis-server /redis/redis-5.0.7/conf/redis_6381.conf
执行之后 一个简单的一主两从就做好了
检验下

主机写
Redis主从和集群的搭建_第2张图片从机读
Redis主从和集群的搭建_第3张图片

redis-cluster集群搭建

优缺点

优点:大大提高了可用性,其中一个主节点挂掉也不妨碍读写功能,cluster默认的槽位分配机制可以均匀的将数据存放在集群的节点中,不需要手动或者编程分片,jedis提供对这种集群的支持,横向扩展方便 只需要向集群中加入主节点即可,去中心化,有分区,故障转移,复制等功能对于一般规模的公司足够用。
Redis主从和集群的搭建_第4张图片
##搭建
先建立文件夹 我是在这个目录下建立了7001 7002 7003 7004 7005 7006

进入redis的src目录 执行install命令安装到刚刚建立的其中一个文件夹
安装
make install PREFIX=/redis/cluster/7001/
然后把redis.conf考到bin中 修改如下配置
这里其实和主从比较的话 就是最后一句集群打开不一样 其他的都类似 同理把这个配置文件复制下 修改剩下的五个 剩下的五个只需要改端口号即可
#注释掉绑定ip
#bind 127.0.0.1
#保护模式关闭
protected-mode no
port 7001
#后台运行启动
daemonize yes
#集群打开
cluster-enabled yes

然后为了方便 在cluster下写一个start.sh脚本 内容如下
cd 7001/bin
./redis-server redis.conf
cd …
cd …

cd 7002/bin
./redis-server redis.conf
cd …
cd …

cd 7003/bin
./redis-server redis.conf
cd …
cd …

cd 7004/bin
./redis-server redis.conf
cd …
cd …

cd 7005/bin
./redis-server redis.conf
cd …
cd …

cd 7006/bin
./redis-server redis.conf
cd …
cd …
其实就是挨个启动

授权
chmod u+x start.sh
查看进程 如下 即为成功
Redis主从和集群的搭建_第5张图片

然后进入其中一个文件夹的bin 执行如下命令
注意这里的 --cluster-replicas 1 是节点复制一个的意思
如果是一主两从 那这里就输入三个主 六个从 --cluster-replicas 2 这样
./redis-cli --cluster create 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 --cluster-replicas 1

执行结果如下 对讯问的输入yes
Redis主从和集群的搭建_第6张图片搭建之后如下图 M代表主 S代表从 后面跟的是唯一的id
对于主来说 会有slot分配 这里会连续的占满0-16383 也就是2的14次方 ,这里提一句 这个槽位其实就类似于分片里的哈希,但是大家都知道如果使用哈希取模分片的话 当集群内再加入主机的时候就会需要重新转移数据才可以,这个槽位有这么多 就是为了尽量的再增加机器进来的时候少移动一些数据,顺便提一下当新机器进来的时候也是不需要我们手动去迁移数据的,cluster正常情况下 如 set name wsq 这样 会把name哈希16383 分配到某个槽中,然后在get name的时候客户端是无感的 其实cluster内部是又hash了一下name 找到了对应的槽位 对客户端发送move命令 也就是让客户端去对应的槽位去get数据,那么在增加机器的时候cluster也自动的重新hash这些,那如果是刚加了机器就有人get 数据还没有转移完呢?cluster首先会hash这个key 到对应的机器上发现数据不在了 会启动另一个模式叫ask命令 大概意思就是说槽位还在转移中,而之前说的move命令 是已经转移好了的意思,所以可以告诉客户端直接去对应槽位找
Redis主从和集群的搭建_第7张图片
move模式
Redis主从和集群的搭建_第8张图片
最后是启动 和单机的启动方式略有出入
./redis-cli -h 127.0.0.1 -p 7001 -c

你可能感兴趣的:(redis)