在ubuntu上,搭建Reids高可用集群环境

配置

{

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 的新节点的详细步骤:

  1. 在终端里创建一个新的标签页。

  2. 进入 redis-cluster 文件夹。

  3. 创建并进入 7007 文件夹。

  4. 将 redis.conf 文件复制到 7007文件夹里面,然后将配置中的端口号选项改为 7007 。

  5. 使用命令 ../../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 可以继续正常运行。

Redis 备份、容灾及高可用实战,一文看齐~

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值