redis集群创建
来源:互联网 发布:网络交通扣分处理 编辑:程序博客网 时间:2024/04/27 20:17
1. 集群原理
1.1. redis-cluster架构图
结构原理
⑴ 所有的redis节点彼此互联(PING-PONG机制),内部使用二进制协议优化传输速度和带宽。
⑵ 节点的fail是通过集群中超过半数的节点检测失效时才生效。
⑶ 客户端与redis节点直连,不需要中间proxy层.客户端不需要连接集群所有节点,连接集群中任何一个可用节点即可。
redis-cluster把所有的物理节点映射到[0-16383]slot上,cluster 负责维护node<->slot<->valueRedis 集群中内置了 16384 个哈希槽,当需要在 Redis 集群中放置一个 key-value 时,redis 先对 key 使用 crc16 算法算出一个结果,然后把结果对 16384 求余数,这样每个 key 都会对应一个编号在 0-16383 之间的哈希槽,redis 会根据节点数量大致均等的将哈希槽映射到不同的节点
2. redis-cluster投票:容错
⑴ 投票过程是集群中所有master参与,如果半数以上master节点与master节点通信超过(cluster-node-timeout),认为当前master节点挂掉。
⑵ 什么时候整个集群不可用(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)错误
3. ruby环境
redis集群管理工具redis-trib.rb依赖ruby环境,首先需要安装ruby环境:
安装ruby
yum install ruby
yum install rubygems
安装ruby和redis的接口程序
拷贝redis-3.0.0.gem至/usr/local下
执行:
gem install /usr/local/redis-3.0.0.gem
4. 创建集群
4.1. 集群结点规划
这里在同一台服务器用不同的端口表示不同的redis服务器,如下:
主节点:192.168.1.128:8881 192.168.1.128:8882192.168.1.128:8883
从节点:192.168.1.128:8884 192.168.1.128:8885 192.168.1.128:8886
在/usr/local下创建redis-cluster目录,其下创建8881、8882,、8883、8884、8885、8886目录,如下:将redis安装目录src下的文件拷贝到每个888X目录内,同时将redis源码目录src下的redis-trib.rb拷贝到redis-cluster目录下。
修改每个888X目录下的redis.conf配置文件:
port 888X
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes4.2. 启动节点
分别进入888X目录,执行:
./redis-server ./redis.conf
当然,如果怕麻烦,我们可创建一个sh可以执行文件,一次性开始
[root@bogon redis-cluster]# vi startup.sh
cd 8881
./src/redis-server ./redis.conf
cd ../
cd 8882
./src/redis-server ./redis.conf
cd ../
cd 8883
./src/redis-server ./redis.conf
cd ../
cd 8884
./src/redis-server ./redis.conf
cd ../
cd 8885
./src/redis-server ./redis.conf
cd ../
cd 8886
./src/redis-server ./redis.conf
创建完成之后保存退出,最后别忘了给这个文件赋予可执行的权限chmod +X startup.sh最后的目录如下
执行startup.sh,可以看到每个redis都启动成功了
4.3. 执行创建集群命令
执行redis-trib.rb,此脚本是ruby脚本,它依赖ruby环境。
./redis-trib.rb create --replicas 1 192.168.1.128:8881 192.168.1.128:8882 192.168.1.128:8883 192.168.1.128:8884 192.168.1.128:8885 192.168.1.128:8886
说明:
redis集群至少需要3个主节点,每个主节点有一个从节点总共6个节点
replicas指定为1表示每个主节点有一个从节点创建集群输出如下:
>>> Performing hash slotsallocation on 6 nodes...
Using 3 masters:
192.168.1.128:8881
192.168.1.128:8882
192.168.1.128:8883
Adding replica 192.168.1.128:8884 to192.168.1.128:8881
Adding replica 192.168.1.128:8885 to192.168.1.128:8882
Adding replica 192.168.1.128:8886 to192.168.1.128:8883
M: ea5507e120eba76959124c5bbf924ee06f6deb29192.168.1.128:8881
slots:0-5460 (5461 slots) master
M: 08f1da16e21450de7751993928d2641cdaab99b6192.168.1.128:8882
slots:5461-10922 (5462 slots) master
M: 4758d0f2886845e15f0cf40ec1dbd2dae066ab8d192.168.1.128:8883
slots:10923-16383(5461 slots) master
S: 9ba9bd643f994f7f3fe9844158641d82a488ec82192.168.1.128:8884
replicates ea5507e120eba76959124c5bbf924ee06f6deb29
S: 5cf6ec08bc52d0590b69b4485a5d2955f75a14f5192.168.1.128:8885
replicates 08f1da16e21450de7751993928d2641cdaab99b6
S: a38c2414c99111ef617d4de10221016c3e440ab3192.168.1.128:8886
replicates 4758d0f2886845e15f0cf40ec1dbd2dae066ab8d
Can I set the above configuration? (type'yes' to accept): yes
5. 查询集群信息
集群创建成功登陆任意redis结点查询集群中的节点情况。
客户端以集群方式登陆:
[root@bogon 8881]# ./src/redis-cli -c -h192.168.1.128 -p 8881
192.168.1.128:8881> cluster nodes
08f1da16e21450de7751993928d2641cdaab99b6192.168.1.128:8882@18882 master - 0 1505022112770 2 connected 5461-10922
4758d0f2886845e15f0cf40ec1dbd2dae066ab8d192.168.1.128:8883@18883 master - 0 1505022111758 3 connected 10923-16383
a38c2414c99111ef617d4de10221016c3e440ab3192.168.1.128:8886@18886 slave 4758d0f2886845e15f0cf40ec1dbd2dae066ab8d 01505022111000 6 connected
5cf6ec08bc52d0590b69b4485a5d2955f75a14f5192.168.1.128:8885@18885 slave 08f1da16e21450de7751993928d2641cdaab99b6 01505022111000 5 connected
ea5507e120eba76959124c5bbf924ee06f6deb29192.168.1.128:8881@18881 myself,master - 0 1505022107000 1 connected 0-5460
9ba9bd643f994f7f3fe9844158641d82a488ec82192.168.1.128:8884@18884 slave ea5507e120eba76959124c5bbf924ee06f6deb29 01505022111000 4 connected
说明:
./redis-cli -c -h192.168.101.3 -p 7001,其中-c表示以集群方式连接redis,-h指定ip地址,-p指定端口号
cluster nodes 查询集群结点信息
至此已经完成了redis集群的搭建并且启动了
- 集群redis创建
- 创建redis集群
- 简单创建redis集群
- 手工创建redis集群
- redis 集群创建命令行
- Redis 创建集群
- redis创建集群
- redis集群创建
- windows 创建redis集群
- redis-trib创建redis集群错误
- 【redis】关于集群创建遇到的问题
- 【redis】关于集群创建遇到的问题
- ubuntu下全自动创建Redis集群脚本
- ubuntu全自动创建Redis集群脚本slaveof
- 如何在linux环境创建redis集群
- Redis密码验证情况下创建集群
- 使用Elasticache创建多AZ的redis集群
- 【Docker】docker创建测试环境的伪分布式Redis集群
- ubuntu 16.04下搜狗输入法不能输入中文解决(linux下常见软件崩溃问题解决方案)
- 对JS中x==y类型转换方向的探究
- 第1章 基本概念 —— 1.1 引子:解决问题方法的效率
- 02-VTK编译安装
- mysql 数据库整理——配置
- redis集群创建
- 分治·减治·变治
- 作业调度与进程调度
- 加速计陀螺仪信息采集
- JAVA图书馆管理系统各个项目链接
- 【Flink系列2】时间窗口
- webpack 混淆压缩 javascript 后端代码
- 用JS制作一个信息管理平台
- PAT (Basic Level) Practise (中文) 1052. 卖个萌 (20)