redis5集群构建

一、redis集群安装,注意redis使用版本5以上
redis安装参考https://blog.csdn.net/eakom/article/details/102976264,考虑到没有多个服务器,在一台服务器上模拟集群,使用的端口号为7001-7006
1.复制已安装的redis文件夹到redis-cluster

/usr/local
mkdir redis-cluster
cp -r -b redis-5.0.5 redis-cluster/redis1
cp -r -b redis-5.0.5 redis-cluster/redis2
cp -r -b redis-5.0.5 redis-cluster/redis3
cp -r -b redis-5.0.5 redis-cluster/redis4
cp -r -b redis-5.0.5 redis-cluster/redis5
cp -r -b redis-5.0.5 redis-cluster/redis6

2.修改各个redis中redis.conf配置

  • 修改端口port 分别是7001、7002…7006 后台运行修改daemonize为yes
  • 开启集群修改cluster-enabled为yes 绑定IP修改bind ip(必须要绑定当前机器的IP,不然会悲剧)
  • 修改数据存储路径dir dir /usr/local/redis-cluster/1(必须要指定不同的目录)
  • 修改集群通信配置文件cluster-config-file node*.conf(这里的*最好和端口对应上)
  • 修改集群通信超时cluster-node-timeout 5000 存储方式为AOF修
  • 改appendonly为yes
    3.编写启动命令 vi start-all.sh 并输入一下内容,按:wq保存
cd redis1/src
	./redis-server ../redis.conf
	cd ../../
	cd redis2/src
	./redis-server ../redis.conf
	cd ../../
	cd redis3/src
	./redis-server ../redis.conf
	cd ../../
	cd redis4/src
	./redis-server ../redis.conf
	cd ../../
	cd redis5/src
	./redis-server ../redis.conf
	cd ../../
	cd redis6/src
	./redis-server ../redis.conf
	cd ../../

4.修改start-all.sh权限 chmod +x start-all.sh
5.创建集群配置
负责redis-cli到当前目录 cp redis-5.0.5/src/redis-cli ./
启动

./redis-cli --cluster create 192.168.158.11:7000 192.168.158.11:7001 192.168.158.11:7002 192.168.158.11:7003 192.168.158.11:7004 192.168.158.11:7005 --cluster-replicas 1
#该选项--cluster-replicas 1意味着我们要为每个创建的主机都希望有一个从机,其他参数是我要用于创建新集群的实例的地址列表,该配置满足我们要求的唯一设置是创建具有3个主设备和3个从设备的集群,Redis-cli将为您提出配置,输入yes接受建议的配置。集群将被配置并加入,这意味着实例将被引导成彼此对话。

6.连接测试(命令./redis-cli -c -h -p 7001)

./redis-cli -c -p 7001 
#如果使用脚本创建集群,则节点可能会侦听不同的端口,默认情况下从30001开始,查找时Redis Cluster节点能够将客户端重定向到正确的节点

进行验证 cluster info(查看集群信息) cluster nodes(查看节点列表)

二、运维
1.新增节点
复制文件

cp -r -b redis-5.0.5 redis-cluster/redis7
cp -r -b redis-5.0.5 redis-cluster/redis8
修改配置
port 分别是7007、7008
# cluster-enabled yes注释这句话,开启集群
分别启动启动
cd redis7/src
	redis-server ../redis.conf
	cd ../../redis8/src
	redis-server ../redis.conf
	cd ../../
集群中加入节点7007(主节点)
redis-cli --cluster add-node 192.168.158.11:7007 192.168.158.11:7001
注:add-node后面的第二个参数为随便一个节点的host:port
集群中加入节点7008(7007的从节点)
redis-cli --cluster add-node 127.0.0.1:7008 127.0.0.1:7000 --cluster-slave --cluster-master-id 3c3a0c74aae0b56170ccb03a76b60cfe7dc1912e

注意:cluster-master-id 为node7的id
检查集群结果

redis-cli --cluster check 192.168.158.11:7008
会发现新增的节点的哈希槽为空(0 slots),哈希槽为空不能存储数据,需要重新分配
redis-cli --cluster reshard 127.0.0.1:7007
然后输入要移动的槽位,输入目标node的Id ,系统提示
Please enter all the source node IDs.
  Type 'all' to use all the nodes as source nodes for the hash slots.
  Type 'done' once you entered all the source nodes IDs.
如果将所有节点用作哈希槽的源节点,则输入all表示
否则输入一个一个源节点ID后,键入“ done”结束,按yes确定

另一个方式不需要交互

#示例
redis-cli --cluster reshard <host>:<port> --cluster-from <node-id> --cluster-to <node-id> --cluster-slots <number of slots> --cluster-yes
#配置
redis-cli --cluster reshard 127.0.0.1:7007 --cluster-from 918e6a811995e87dd9dbdf1c2cab096751ee08cd --cluster-to e66ed523614b9c299262d783c21c2dd11cf02f5e --cluster-slots 30 --cluster-yes

2.删除节点

#示例(第一个参数只是集群中的一个随机节点,第二个参数是您要删除的节点的ID)
redis-cli --cluster del-node 127.0.0.1:7000 `<node-id>`

您也可以用相同的方法删除主节点,但是要删除主节点,它必须为空。如果主节点不为空,则需要先将数据从其重新分片到所有其他主节点。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章