Linux下搭建Redis集群环境及测试集群 关闭redis
2018-03-25 16:33
585 查看
Redis集群环境
Redis集群相关概念
各redis节点彼此互联(PING-PONG机制),内部使用二进制协议优化传输速度和带宽,无主机,客户端随意连接一个节点都可以节点的fail是通过集群中超过半数的节点检测失效才生效
(1)领着投票过程是集群中所有master参与,如果半数以上master节点与master节点通信超过(cluster-node-timeout),认为当前master节点挂掉.
(2):什么时候整个集群不可用(cluster_state:fail)?
a:如果集群任意master挂掉,且当前master没有slave.集群进入fail状态,也可以理解成集群的slot映射[0-16383]不完成时进入fail状态. ps : redis-3.0.0.rc1加入cluster-require-full-coverage参数,默认关闭,打开集群兼容部分失败.
b:如果集群超过半数以上master挂掉,无论是否有slave集群进入fail状态.
ps:当集群不可用时,所有对集群的操作做都不可用,收到((error) CLUSTERDOWN The cluster is down)错误
Redis 集群中内置了 16384 个哈希槽,当需要在 Redis 集群中放置一个 key-value 时,redis 先对 key 使用 crc16 算法算出一个结果,然后把结果对 16384 求余数,这样每个 key 都会对应一个编号在 0-16383 之间的哈希槽,redis 会根据节点数量大致均等的将哈希槽映射到不同的节点
假设有server1存放0-5000的槽,server2存放5001-10000的槽,server3存放10001-16383的槽,那么有
Key:a
计算a的hash值,例如值为100,100这个槽在server1上,所以a应该放到server1.
Key:hello
Hash值:10032,此槽在server3上。hello可以应该存在server3.
服务器上槽越多,那么存放的key就越多,当多分配一个服务器时,挪动一些槽到这个服务器上时,key也会挪到该服务器上,一个槽上可以有多个key
接下来演示一下集群,我们的集群结构
集群中有三个节点的集群,每个节点有一主一备。需要6台虚拟机。(备是为了防止主机挂了导致整个redis集群不可用。)搭建一个伪分布式的集群,使用6个redis实例来模拟。
搭建集群需要使用到官方提供的ruby脚本。
需要安装ruby的环境。(只需要一句apt-get install ruby就可以了)
redis集群管理工具redis-trib.rb
脚本需要的ruby包:
需要上传到linux上
我们先将其放到和redis一起的路径,然后安装
root@VM-98-105-ubuntu:/usr/local/jae# gem install redis-3.2.2.gem
接着 ,为了启动6个redis服务,我们需要创建一个文件夹存放
root@VM-98-105-ubuntu:/usr/local/jae# mkdir redis-cluster
1. 复制6份redis配置文件,一直到redis06,删掉快照文件
root@VM-98-105-ubuntu:/usr/local/jae/redis/redisfirst# cp -r bin /usr/local/jae/redis-cluster/redis01
root@VM-98-105-ubuntu:/usr/local/jae/redis/redisfirst# cp -r bin /usr/local/jae/redis-cluster/redis02
root@VM-98-105-ubuntu:/usr/local/jae/redis/redisfirst# cp -r bin /usr/local/jae/redis-cluster/redis03……
root@VM-98-105-ubuntu:/usr/local/jae/redis-cluster/redis01# rm -f dump.rdb
2. 修改他们的redis.conf文件
端口号从7001~7006,打开cluster
3. 把创建集群的ruby脚本复制到redis-cluster目录下。
4. 创建一个脚本,启动6个redis实例,内容
5. 创建集群,在有redis-trib.rb的目录下执行命令
./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
此处127.0.0.1应是你在redis.conf中的host值。
到这里集群就配置完毕
测试集群
连接任接一个节点,执行一条命令,计算完槽后,如果redis能自动跳转说明集群成功root@VM-98-105-ubuntu:/usr/local/jae/redis-cluster# redis01/redis-cli -h 127.0.0.1 -p 7002 -c
127.0.0.1:7002> set a 100
-> Redirected to slot [15495] located at 127.0.0.1:7003
OK
127.0.0.1:7003>
正常关闭redis
直接在客户端执行命令shutdown或直接在命令行里执行redis-cli -p 7001 shutdown我们直接编写一个shutdown.sh
相关文章推荐
- Linux环境下配置搭建Redis分布式集群
- 【redis】 linux 下redis 集群环境搭建
- docker搭建linux集群,搭建mpi环境,并使用MTT benchmark测试集群性能
- Linux下Redis集群搭建与测试
- Linux redis集群环境搭建
- linux环境 redis 集群搭建(伪分布式)
- Linux环境redis集群搭建
- Linux环境redis集群搭建
- Linux环境redis集群搭建(二)集群维护
- linux搭建redis集群测试
- linux环境(CentOS-6.7)下redis集群的搭建全过程
- Linux下Redis集群环境的搭建
- CentOS完美搭建Redis3.0集群并附测试
- Linux下Redis集群的搭建
- Window平台搭建Redis分布式缓存集群 (一)服务器搭建及性能测试
- redis集群环境搭建以及java中jedis客户端集群代码实现
- Redis3.0集群搭建和测试(cluster)
- linux下一致性网关测试程序qt开发环境搭建
- linux 下 PHP 环境搭建(已测试)
- Linux开发环境搭建(三)--Centos7安装Redis及注意事项