Redis之集群环境搭建

redis集群

一,redis集群相关概念

Redis 集群是一个提供在多个Redis间节点间共享数据的程序集。

Redis集群并不支持处理多个keys的命令,因为这需要在不同的节点间移动数据,从而达不到像Redis那样的性能,在高负载的情况下可能会导致不可预料的错误.

Redis 集群通过分区来提供一定程度的可用性,在实际环境中当某个节点宕机或者不可达的情况下继续处理命令. Redis 集群的优势:
1.自动分割数据到不同的节点上。
2.整个集群的部分节点失败或者不可达的情况下能够继续处理命令

搭建集群环境准备

安装ruby

yum -y install ruby
yum -y install rubygems
gem install redis

错误处理

[[email protected] src]# gem install redis
ERROR:  Error installing redis:
	redis requires Ruby version >= 2.2.2.

解决方式参考此链接:https://blog.****.net/qq_38526573/article/details/87220510

解决完成后再次执行gem install redis命令

[[email protected] ~]# gem install redis
Fetching: redis-4.1.0.gem (100%)
Successfully installed redis-4.1.0
Parsing documentation for redis-4.1.0
Installing ri documentation for redis-4.1.0
Done installing documentation for redis after 1 seconds
1 gem installed

创建实例

在/opt目录下创建redis-cluster目录,并在该目录下创建6个redis实例
Redis之集群环境搭建

修改配置文件

修改端口号

Redis之集群环境搭建

打开cluster-enable前面的注释

Redis之集群环境搭建

注释掉绑定ip

Redis之集群环境搭建

保护模式修改为no

Redis之集群环境搭建

设置日志储存位置和dump的路径

Redis之集群环境搭建
Redis之集群环境搭建
注意重复修改6次

启动实例编写一个简单的脚本 start.sh

将每个节点下aof、rdb、nodes.conf本地备份文件删除;

cd /opt/redis-cluster/redis7001
rm -rf dump.rdb nodes.conf appendonly.aof
src/redis-server redis.conf

cd /opt/redis-cluster/redis7002
rm -rf dump.rdb nodes.conf appendonly.aof
src/redis-server redis.conf

cd /opt/redis-cluster/redis7003
rm -rf dump.rdb nodes.conf appendonly.aof
src/redis-server redis.conf

cd /opt/redis-cluster/redis7004
rm -rf dump.rdb nodes.conf appendonly.aof
src/redis-server redis.conf

cd /opt/redis-cluster/redis7005
rm -rf dump.rdb nodes.conf appendonly.aof
src/redis-server redis.conf

cd /opt/redis-cluster/redis7006
rm -rf dump.rdb nodes.conf appendonly.aof
src/redis-server redis.conf

改变脚本的权限模式

chmod 777 start.sh
然后启动./satrt.sh
Redis之集群环境搭建

创建集群

现在我们已经有了六个正在运行中的 Redis 实例, 接下来我们需要使用这些实例来创建集群, 并为每个节点编写配置文件

redis-cli --cluster create 192.168.119.12:7001 192.168.119.12:7002 192.168.119.12:7003 192.168.119.12:7004 192.168.119.12:7005  192.168.119.12:7006 --cluster-replicas 1

命令说明
选项–replicas 1 表示我们希望为集群中的每个主节点创建一个从节点
之后跟着的其他参数则是这个集群实例的地址列表,3个master3个slave
redis-cli --cluster 会打印出一份预想中的配置给你看, 如果你觉得没问题的话, 就可以输入 yes, redis-cli --cluster 就会将这份配置应用到集群当中,让各个节点开始互相通讯,
Redis之集群环境搭建

测试集群

登陆命令

redis7001/src/redis-cli -h 192.168.88.121 -p 7001 -c

Redis之集群环境搭建

查看集群环境的相关命令

命令 说明
cluster info 打印集群的信息
cluster nodes 列出集群当前已知的所有节点( node),以及这些节点的相关信息。节点
cluster meet 将 ip 和 port 所指定的节点添加到集群当中,让它成为集群的一份子。
cluster forget <node_id> 从集群中移除 node_id 指定的节点。
cluster replicate <node_id> 将当前节点设置为 node_id 指定的节点的从节点。
cluster saveconfig 将节点的配置文件保存到硬盘里面。槽(slot)
cluster addslots [slot …] 将一个或多个槽( slot)指派( assign)给当前节点。
cluster delslots [slot …] 移除一个或多个槽对当前节点的指派。
cluster flushslots 移除指派给当前节点的所有槽,让当前节点变成一个没有指派任何槽的节点。
cluster setslot node <node_id> 将槽 slot 指派给 node_id 指定的节点,如果槽已经指派给另一个节点,那么先让另一个节点删除该槽>,然后再进行指派。
cluster setslot migrating <node_id> 将本节点的槽 slot 迁移到 node_id 指定的节点中。
cluster setslot importing <node_id> 从 node_id 指定的节点中导入槽 slot 到本节点。
cluster setslot stable 取消对槽 slot 的导入( import)或者迁移( migrate)。键
cluster keyslot 计算键 key 应该被放置在哪个槽上。
cluster countkeysinslot 返回槽 slot 目前包含的键值对数量。
cluster getkeysinslot 返回 count 个 slot 槽中的键

cluster info命令

Redis之集群环境搭建

cluster nodes

Redis之集群环境搭建
至此集群搭建成功