redis的集群部署

关于redis:
redis 是一个高性能的 key-value 数据库。 redis 的出现,很大程度补偿了
memcached 这类 keyvalue 存储的不足,在部分场合可以对关系数据库起到很
好的补充作用。它提供了 Python,Ruby,Erlang,PHP 客户端,使用很方便。
Redis 的所有数据都是保存在内存中,然后不定期的通过异步方式保存到磁盘上
(这称为“半持久化模式”);也可以把每一次数据变化都写入到一个 append
only file(aof)里面(这称为“全持久化模式”)。

[root@base2 ~]# sysctl vm.overcommit_memory=1
vm.overcommit_memory = 1
[root@base2 ~]# mkdir /usr/local/rediscluster
[root@base2 ~]# cd /usr/local/rediscluster
[root@base2 rediscluster]# mkdir 700{1..6}
[root@base2 rediscluster]# ls
7001  7002  7003  7004  7005  7006
[root@base2 rediscluster]# cd 7001
[root@base2 7001]# vim redis.conf
port 7001
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes   # 日志用的是aof
pidfile "/usr/local/rediscluster/7001/redis.pid"  # 不同的实例pid分别放在不同的文件
logfile "/usr/local/rediscluster/7001/redis.log"  # 不同的实例log分别放在不同的文件 
daemonize yes   # 允许打入后台
dir "/usr/local/rediscluster/7001"   # 数据目录

在这里插入图片描述

[root@base2 7001]# redis-server redis.conf
[root@base2 7001]# ls
appendonly.aof  nodes.conf  redis.conf  redis.log  redis.pid
[root@base2 7001]# cp redis.conf ../7002
[root@base2 7001]# cp redis.conf ../7003
[root@base2 7001]# cp redis.conf ../7004
[root@base2 7001]# cp redis.conf ../7005
[root@base2 7001]# cp redis.conf ../7006
[root@base2 7001]# cd ../7002
[root@base2 7002]# vim redis.conf 
port 7002
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes
pidfile "/usr/local/rediscluster/7002/redis.pid"
logfile "/usr/local/rediscluster/7002/redis.log"
daemonize yes
dir "/usr/local/rediscluster/7002"

在这里插入图片描述

[root@base2 7002]# redis-server redis.conf
[root@base2 7002]# ls
appendonly.aof  nodes.conf  redis.conf  redis.log  redis.pid
[root@base2 7002]# cd ../7003
[root@base2 7003]# vim redis.conf 
port 7003
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes
pidfile "/usr/local/rediscluster/7003/redis.pid"
logfile "/usr/local/rediscluster/7003/redis.log"
daemonize yes
dir "/usr/local/rediscluster/7003"

在这里插入图片描述

[root@base2 7003]# redis-server redis.conf     # 为节点分配空间
[root@base2 7003]# ls
appendonly.aof  nodes.conf  redis.conf  redis.log  redis.pid
[root@base2 7003]# cd ../7004
[root@base2 7004]# vim redis.conf 
port 7004
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes
pidfile "/usr/local/rediscluster/7004/redis.pid"
logfile "/usr/local/rediscluster/7004/redis.log"
daemonize yes
dir "/usr/local/rediscluster/7004"

在这里插入图片描述

[root@base2 7004]# redis-server redis.conf
[root@base2 7004]# ls
appendonly.aof  nodes.conf  redis.conf  redis.log  redis.pid
[root@base2 7004]# cd ../7005
[root@base2 7005]# vim redis.conf 
port 7005
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes
pidfile "/usr/local/rediscluster/7005/redis.pid"
logfile "/usr/local/rediscluster/7005/redis.log"
daemonize yes
dir "/usr/local/rediscluster/7005"

在这里插入图片描述

[root@base2 7005]# redis-server redis.conf
[root@base2 7005]# ls
appendonly.aof  nodes.conf  redis.conf  redis.log  redis.pid
[root@base2 7005]# cd ../7006
[root@base2 7006]# vim redis.conf 
port 7006
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes
pidfile "/usr/local/rediscluster/7006/redis.pid"
logfile "/usr/local/rediscluster/7006/redis.log"
daemonize yes
dir "/usr/local/rediscluster/7006"

在这里插入图片描述

[root@base2 7006]# redis-server redis.conf 
[root@base2 7006]# ls
appendonly.aof  nodes.conf  redis.conf  redis.log  redis.pid
[root@base2 7006]# ps ax | grep 700     # 端口全出现了

在这里插入图片描述

这些可执行文件的作用如下:
redis-server:   redis 服务主程序。
redis-cli:    redis 客户端命令行工具,也可以用telnet 来操作。
redis-benchmark:   Redis 性能测试工具,用于测试读写性能。
redis-check-aof:  检查 redis aof 文件完整性,aof 文件持久化记录服务器执行的所有写操作命令,用于还原数据。
redis-check-dump:  检查 redis rdb 文件的完性,rdb 就是快照存储, 即按照一定的策略周期性的将数据保存到磁盘,是默的持久化方式。
redis-sentinel:  redis-sentinel 是集群管理工具,主要负责主从切换。





[root@base2 ~]# redis-cli --cluster create --cluster-replicas 1  127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005 127.0.0.1:7006  #  开始创建节点,三个主节点分别分配一个slave,,1表示每个master有一个salve

在这里插入图片描述
在这里插入图片描述

[root@base2 ~]#  redis-cli --cluster info 127.0.0.1:7001

在这里插入图片描述

[root@base2 ~]#  redis-cli --cluster check 127.0.0.1:7001

在这里插入图片描述

[root@base2 ~]# redis-cli -c -p 7001
127.0.0.1:7001> set name lala
-> Redirected to slot [5798] located at 127.0.0.1:7002
OK
127.0.0.1:7002> info

在这里插入图片描述
在这里插入图片描述

[root@base2 ~]# redis-cli -c -p 7006  # 当任意登录一个节点时
127.0.0.1:7006> get name
-> Redirected to slot [5798] located at 127.0.0.1:7002   # 也跳转到了7002上,获取到了信息
"lala"
127.0.0.1:7002> 

在这里插入图片描述

127.0.0.1:7002> SHUTDOWN
not connected> QUIT
[root@base2 ~]# ps ax | grep 700   # 发现7002这个节点down掉了

在这里插入图片描述

[root@base2 ~]#  redis-cli --cluster info 127.0.0.1:7001  # 我们再查看集群信息时,发现7002的slave7005接管了7002的工作成为了master

在这里插入图片描述

[root@base2 ~]# redis-cli -c -p 7005
127.0.0.1:7005> SHUTDOWN    # 我们再down掉没有slave的节点
not connected> QUIT

在这里插入图片描述

[root@base2 ~]#  redis-cli --cluster info 127.0.0.1:7001   # 查看集群信息

在这里插入图片描述

注:
集群少了任何一部分,都会挂掉

[root@base2 ~]# redis-cli -c -p 7001   # 当我们再次使用集群的时候,集群已经坏掉了
127.0.0.1:7001> get name
(error) CLUSTERDOWN The cluster is down
127.0.0.1:7001> 
# 恢复集群节点
[root@base2 ~]# cd /usr/local/rediscluster/
[root@base2 rediscluster]# cd 7002/
[root@base2 7002]# redis-server redis.conf
[root@base2 7002]# cd ../7005
[root@base2 7005]# redis-server redis.conf
[root@base2 7005]# ps ax | grep 700    # 查看所有集群节点都恢复了

在这里插入图片描述

# 添加集群节点
[root@base2 rediscluster]# mkdir 7007
[root@base2 rediscluster]# mkdir 7008
[root@base2 rediscluster]# cd 7007
port 7007
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes
pidfile "/usr/local/rediscluster/7007/redis.pid"
logfile "/usr/local/rediscluster/7007/redis.log"
daemonize yes
dir "/usr/local/rediscluster/7007"
[root@base2 7007]# redis-server redis.conf
[root@base2 7007]# cd ../7008
[root@base2 7008]# vim redis.conf
port 7008
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes
pidfile "/usr/local/rediscluster/7008/redis.pid"
logfile "/usr/local/rediscluster/7008/redis.log"
daemonize yes
dir "/usr/local/rediscluster/7008"
[root@base2 7008]# redis-server redis.conf
[root@base2 7007]# redis-cli --cluster add-node 127.0.0.1:7007 127.0.0.1:7001   # 添加节点
[root@base2 7007]#  redis-cli --cluster info 127.0.0.1:7001    # 查看节点已经添加成功

在这里插入图片描述

[root@base2 7007]#  redis-cli --cluster check 127.0.0.1:7001   

在这里插入图片描述

# 给新master添加salve
[root@base2 7007]# redis-cli --cluster add-node --cluster-slave --cluster-master-id "570dc3ceeec624936a57b42769b66fb1eb189696" 127.0.0.1:7008 127.0.0.1:7001 
[root@base2 7007]#  redis-cli --cluster info 127.0.0.1:7001   # 查看添加成功

在这里插入图片描述

# 迁移数据槽(把其他节点的数据迁移到新节点上)
[root@base2 7007]# redis-cli --cluster reshard --cluster-from all --cluster-to 570dc3ceeec624936a57b42769b66fb1eb189696 --cluster-slots 300 --cluster-yes 127.0.0.1:7001

--cluster-from all  # 所有节点
--cluster-slots 300  # 迁移的个数
127.0.0.1:7001    # 进入集群的一个接口,集群中任意一个成员都可以

在这里插入图片描述

# 把所有节点上的数据重新进行均衡
[root@base2 7007]# redis-cli --cluster rebalance --cluster-threshold 1 --cluster-use-empty-masters 127.0.0.1:7001

rebalance         # 表示重新进行均衡
--cluster-use-empty-masters      # 如果master是空的,不进行均衡,在这条语句中的意思是忽略空master
[root@base2 7007]#  redis-cli --cluster check 127.0.0.1:7001

在这里插入图片描述

[root@base2 7007]# redis-cli -c -p 7001
127.0.0.1:7001> get name
-> Redirected to slot [5798] located at 127.0.0.1:7007
"lala"
127.0.0.1:7007> 

在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值