配置
{
System:Ubuntu
Redis:Redis-4.0.8
}
准备工作:
1.安装C语言的编译环境
命令:sudo apt-get install gcc
2.下载Redis解压安装
命令:wget http://download.redis.io/releases/redis-4.0.8.tar.gz
命令:tar -zxvf redis-4.0.8.tar.gz
命令:cd redis-4.0.8
命令:make
命令:make install,可能会报下面的错,需要sudo 提高权限
2.安装ruby环境
命令:sudo apt-get insyall ruby
命令:gem install redis
3.在redis-4.0.8下创建redis-cluster
再创建六个目录
4.将redis.conf 复制到前面创建的六个目录中
5.进入目录的redis.conf文件做修改,vim 基础操作https://www.cnblogs.com/SmartNing/p/6539095.html
最少选项的集群配置文件参数:
port 7000 //端口号
cluster-enabled yes // 开启集群模式
cluster-config-file nodes.conf //保存节点配置文件的路径
cluster-node-timeout 5000 //redis超时时间
appendonly yes
1)修改daemonize yes 后台启动
2)修改端口号对应目录的端口号
3)绑定服务器IP
4)数据位置
5)开启集群,和配置文件修改为目录号
6)开启
六个目录都修改。
6.修改完启动server
启动完,可以输入命令:ps -ef |grep redis-server 查询是否启动成功
7.接下来创建集群
使用Redis集群工具
命令: ./redis-trib.rb create --replicas 1 192.168.147.128:7001 ...
给定 redis-trib.rb 程序命令是create,表示希望创建一个新的集群。
选项 --replicas 1 表示希望为集群中的每个主节点创建一个从节点,创建三主三从
集群构建完成,表示集群中的16384个槽都有至少一个主节点在处理。
8.测试Redis集群,使用Redis-cli
redis-cli 对集群的支持是非常基本的, 所以它总是依靠 Redis 集群节点来将它转向(redirect)至正确的节点。
一个真正的(serious)集群客户端应该做得比这更好: 它应该用缓存记录起哈希槽与节点地址之间的映射(map), 从而直接将命令发送到正确的节点上面。
这种映射只会在集群的配置出现某些修改时变化, 比如说, 在一次故障转移(failover)之后, 或者系统管理员通过添加节点或移除节点来修改了集群的布局(layout)之后, 诸如此类。
如果需要新增节点:
以下是启动端口号为 7006 的新节点的详细步骤:
-
在终端里创建一个新的标签页。
-
进入 redis-cluster 文件夹。
-
创建并进入 7007 文件夹。
-
将 redis.conf 文件复制到 7007文件夹里面,然后将配置中的端口号选项改为 7007 。
-
使用命令 ../../redis-server redis.conf 启动节点。
接下来, 执行以下命令, 将这个新节点添加到集群里面:
add-node
命令: ./redis-trib.rb add-node 192.168.147.128:7007 192.168.147.128:7001
将一个新节点转变为某个主节点的复制品(也即是从节点)的方法。
命令:cluster replicate 3c3a0c74aae0b56170ccb03a76b60cfe7dc1912e
对集群进行重新分片
命令:./redis-trib.rb reshard 192.168.147.128:7001
我们将打算移动的槽数量设置为 1000 个, 如果 example.rb 程序一直运行着的话, 现在 1000 个槽里面应该有不少键了。
除了移动的哈希槽数量之外, redis-trib 还需要知道重新分片的目标(target node), 也即是, 负责接收这 1000 个哈希槽的节点。
指定目标需要使用节点的 ID , 而不是 IP 地址和端口。 比如说, 我们打算使用集群的第一个主节点来作为目标, 它的 IP 地址和端口是 192.168.147.128:7000 , 而节点 ID 则是f70d9c07132fd6b55e29d55d4f9fe824dacbc0a4, 那么我们应该向 redis-trib 提供节点的 ID :
接着, redis-trib 会向你询问重新分片的源节点(source node), 也即是, 要从哪个节点中取出 1000 个哈希槽, 并将这些槽移动到目标节点上面。
如果我们不打算从特定的节点上取出指定数量的哈希槽, 那么可以向 redis-trib 输入 all , 这样的话, 集群中的所有主节点都会成为源节点, redis-trib 将从各个源节点中各取出一部分哈希槽, 凑够 1000 个, 然后移动到目标节点上面:
输入 all 并按下回车之后, redis-trib 将打印出哈希槽的移动计划, 如果你觉得没问题的话, 就可以输入 yes 并再次按下回车:
分片过程中,example.rb 可以继续正常运行。