3主3从——redis集群搭建手册
分布式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即可查看得到
可以看到如果节点存在槽,则需要把节点的槽分配到其他主节点
转载于:https://my.oschina.net/hollowj/blog/792047