redis集群

redis集群

redis中 info 查看版本
编译集群配置文件 /etc/redis/cluster-redis-7001.conf, 添加如下内容:

bind 0.0.0.0
port 7001
daemonize yes

允许任何地址不使用密码访问我

protected-mode no
dir “/redis/data/”
logfile “cluster-7001.log”
dbfilename “cluster-dump-7001.log”
cluster-enabled yes
cluster-config-file cluster-redis-7001.conf

不需要集群的全部节点完好才提供服务

cluster-require-full-coverage no

再创建其他集群的配置文件
[root@s1 redis]# sed ‘s/7001/7002/g’ cluster-redis-7001.conf > cluster-redis-7002.conf
[root@s1 redis]# sed ‘s/7001/7003/g’ cluster-redis-7001.conf > cluster-redis-7003.conf
[root@s1 redis]# sed ‘s/7001/7011/g’ cluster-redis-7001.conf > cluster-redis-7011.conf
[root@s1 redis]# sed ‘s/7001/7012/g’ cluster-redis-7001.conf > cluster-redis-7012.conf
[root@s1 redis]# sed ‘s/7001/7013/g’ cluster-redis-7001.conf > cluster-redis-7013.conf
确定有/redis/data目录
然后启动主节点服务
[root@s1 ~]# redis-server /etc/redis/cluster-redis-7001.conf
[root@s1 ~]# redis-server /etc/redis/cluster-redis-7002.conf
[root@s1 ~]# redis-server /etc/redis/cluster-redis-7003.conf
之后,再启动从节点的服务进程
[root@s2 ~]# mkdir -p /redis/data
[root@s2 ~]# redis-server /etc/redis/cluster-redis-7011.conf
[root@s2 ~]# redis-server /etc/redis/cluster-redis-7012.conf
[root@s2 ~]# redis-server /etc/redis/cluster-redis-7013.conf

官方工具依赖于 Ruby

安装依赖包
yum install zlib-devel readline openssl-devel gcc gcc-c++
下载、编译、安装 Ruby
wget https://cache.ruby-lang.org/pub/ruby/2.6/ruby-2.6.1.tar.gz

./configure
make
make install

安装 rubygem redis
一个 ruby 语言实现的访问 Redis 集群的客户端

cd …
wget https://rubygems.org/rubygems/rubygems-3.0.2.tgz
tar -xf rubygems-3.0.2.tgz
cd rubygems-3.0.2/
ruby setup.rb
gem install redis
安装 redis-trib.rb
redis-trib 位于 Redis 源码的 src 文件夹中, 它是一个 Ruby 程序, 这个程序通过向实例发送特殊命令来完成创建新集群, 检查集群, 或者对集群进行重新分片(reshared)等工作。

cp ~/redis-4.0.10/src/redis-trib.rb /usr/local/bin/ 拷贝文件到bin目录下使普通用户可以使用命令

如果以前启动过 meet过就删除集群数据
rm -rf /redis/data/*
然后再启动使用工具meet 分配槽和分配主从
启动之后 使用如下命令创建集群
redis-trib.rb create --replicas 1 主节点1的IP:端口 主节点2的IP:端口 主节点3的IP:端口 从节点1的IP:端口 从节点2的IP:端口 从节点3的IP:端口
这里的1就是一主一从如果是2后面需要再写从节点的IP和端口 选项–replicas 1 表示我们希望为集群中的每个主节点创建一个从节点。
这个操作会自动把16384个槽给3个主节点进行平均分配 只需要yes就行
如果出现报错5798 看是哪台机器的报错
有这个警告时候参考如下连接
https://blog.csdn.net/qq_45610112/article/details/103814639
redis-cli -p 7003 cluster setslot 5798 stable
redis-cli -p 7011 cluster setslot 5798 stable
redis-trib.rb check 192.168.122.106:7003
不用重复操作因为他已经分配好槽了 如果再次执行还会报错
redis-cli -p 7001 cluster info 查看集群信息是不是ok
redis-cli -p7001 cliuster nodes 查看集群id和主从关系
观察集群的数据槽的分配情况
redis-cli -p 7001 cluster slots
最后用客户端登录集群的方式登录到集群中的任意一个节点,设置键值对进行测试
redis-cli -c -p 7001 set hello world
redis-cli -c -h 192.168.136.133 -p 7011 get hello
返回的结果应该是 “world”
-c 就是集群模式 set可以不加-c 获取信息必须是集群模式
17001 17002 17003是集群内部通信的端口

集群的伸缩 添加节点(扩容)

启动两个新的 redis 实例, 分别监听不同端口 比如 7004 和 7014
我这里是分别在两台主机上启动 redis 实例
[root@s1 redis]# cp cluster-redis-7001.conf cluster-redis-7004.conf
[root@s1 redis]# sed -i ‘s/7001/7004/g’ cluster-redis-7004.conf
[root@s1 redis]# redis-server cluster-redis-7004.conf

[root@s2 redis]# cp cluster-redis-7011.conf cluster-redis-7014.conf
[root@s2 redis]# sed -i ‘s/7011/7014/g’ cluster-redis-7014.conf
[root@s2 redis]# redis-server cluster-redis-7014.conf

然后加入集群中 添加一个新的节点为主节点
redis-trib.rb add-node new_host:new_port existing_host:existing_port
// new_host:new_port 为新添加的节点信息
// existing_host:existing_port 集群中任意节点的信息
例 redis-trib.rb add-node 192.168.136.130:7004 192.168.136.130:7001
添加一个新节点为一个主节点的从节点
redis-trib.rb add-node --slave --master-id 主节点的 ID new_host:new_port existing_host:existing_port
例 redis-trib.rb add-node --slave --master-id 643f9eb46b5b535d45d7f869eb1cc35222c3e9f8 192.168.136.133:7014 192.168.136.130:7001

主节点 ID 可以使用如下命令查看,此命令还同时输出了各个节点的角色
redis-trib.rb check host:port
// host:port 为集群中任意节点的信息
向新加入的主节点中分配槽 redis-trib.rb reshard 192.168.136.130:7001
然后就会出现(from 1 to 16384)? 这里输入你要迁移的槽数 一般都会以主节点进行除法的平均数 所以写4096
What is the receiving node ID?172d689c3ed7b3721afa7lalca20450ad0147ebb 谁接收 这里写7004的集群id号
Source node#1:al1 是否所有节点都参与迁移数据槽
完成后观察各主节点的数据槽的分配情况

减少节点(缩容)

缩容需要先把槽数转移到其他的主节点上 最好是平均分配
命令
redis-trib.rb reshard --from 下线节点 ID --to 集群中的任意主节点 ID --slots 迁移到槽数 目前集群中任意节点 IP:端口
多次执行命令分配完成观察槽号7004就不会有了
然后先删除从节点再删除主节点
redis-trib.rb del-node 集群任意的ip:端口 要删除的从节点的集群id
redis-trib.rb del-node 集群任意的ip:端口 要删除的主节点的集群id

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值