您的位置:首页 > 数据库 > Redis

3主3从——redis集群搭建手册

2016-11-22 00:00 197 查看
分布式redis搭建手册

附件: redis-3.2.5.tar.gz,redis-3.3.1.gem

1. 解压压缩包,进入解压目录内,运行make【请以root角色进行】

(如出现make错误,则运行(make malloc=libc),redis默认的库选择了其他的 ,如果出现找不到则指定用c库)



2. 运行 make install PREFIX=/usr/local/redis3-master PREFIX表示将redis装在磁盘哪个位置.

3. 将解压目录下的redis.conf文件拷贝到redis的安装目录。注意:默认情况下,redis内置一套默认配置,故在redis安装目录下直接运行 ./redis-server就会以默认配置运行 端口6379,但是我们不这么做,我们执行: ./redis-server redis.conf 那么我们直接配置这个redis.conf即可

4. redis.conf的配置项(必填项)->配置说明详解

port 6379 端口配置默认6379

# bind 127.0.0.1 将此项注释掉,否则只能允许本地访问,外界无法访问

protected-mode no 此项默认为yes,保护模式关掉,否则同上

requirepass
访问密码,可以不设置


logfile
日志文件地址


daemonize yes 此项的作用是否以守护进程的方式运行,选择yes则控制台无提示,直接后台进行

cluster-enabled yes 集群启用,

cluster-config-file nodes.conf 节点配置文件,由redis自己维护读写

cluster-node-timeout 5000

appendonly yes

dir ./ 默认为执行命令的当前路径下,产生的数据存储和节点信息都会保存在这个目录下

5. 将参与集群的redis节点全部开启,注意:防火墙干扰 ,如果一次启动失败,将各个redis dir配置项所对应目录下的 :dump.rdb nodes.conf appendonly.aof 全部干掉,切记 大坑 否则启动必定失败

6. 在之前压缩包的src目录下有一个文件 redis-trib.rb :

此脚本由ruby编写所以需要安装 ruby环境:yum install ruby

同时需要安装ruby和redis的连接驱动:gem install redis(此方法非常慢,国外源,顶上已经提供redis-3.3.1.gem.我们采取离线安装 gem install ./ redis-3.3.1.gem)

7. ./redis-trib.rb create --replicas 1 192.168.0.201:6379 192.168.0.202:6379 192.168.0.203:6379 192.168.0.201:7000 192.168.0.202:7000 192.168.0.203:7000

将参与集群的ip端口信息往后追加 ->集群操作详解



当看到以上提示,恭喜你 ,集群搭建完毕,我们采取3主3从的方式进行构建

8.

我们 以集群模式(redis-cli -c即是以集群模式进行)进入命令行,可以看到 他通过计算槽值,根据槽值重定向到了192.168.0.203:6379上。

实际上redis集群的原理是:Redis 集群中内置了 16384 个哈希槽,根据实际redis节点数量进行分摊,每个节点只存储某个区间的数据,每次插入数据,会计算key的槽值,从而重定向到实际redis节点上。

9 在集群运作中,可能随时会出现添加节点或者删除节点的操作

./redis-trib.rb check 192.168.0.201:6379 命令可以查看当前集群中的各个节点情况 参数为集群中的任意一个节点



./redis-trib.rb add-node --slave 192.168.0.204:6379 192.168.0.201:6379 第一个参数是需要添加的节点 第二个参数是指定集群中的任意一个主节点 新加入的节点 存储数据需要删掉,参加第5,--slave参数表示将此节点作为后一个主节点的从节点,不加这个参数,则表示添加的为主节点

新加入的节点,redis不会帮你分配槽,故需要人为分配:

./redis-trib.rb reshard 192.168.0.201:6379 参数为需要被分割的主节点



他会提示你希望移动多少槽值。第9节图中可以看到每个主节点有多少个槽。5461为201号机器 6379的所有槽值,我们分配2000出去



输入完需要分配的槽,再输入接受节点的id

之后会选择 all还是done类型进行分配

All:从所有节点中随机取上面输入的指定数量的槽给接受的节点

Done:从命令参数中输入的指定的节点中取指定数量的槽给接受的节点



下图可以看到,新加入的节点已经分配到了槽值



./redis-trib.rb del-node 192.168.0.201:6379 'cbb01bdfdc265b190496956354d84aaae6

e7d54d' 第一个参数是指定集群中的任意一个主节点 第二个是节点id 通过 check即可查看得到



可以看到如果节点存在槽,则需要把节点的槽分配到其他主节点
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: