redis 集群

哨兵机制配置的主从复制默认,每台机器上都存在所有数据的备份。水平扩展不太方便。

redis 集群不光实现了主从复制,还实现了数据的分开存储。一个集群中可以有多个主从复制模式。一个主从复制模式就存储一块数据,另外一个主从复制存储另外的数据。

redis 集群配置的要求 一个集群中最少要有三队主从复制复制模式。一对主从复制模式需要一主一备,最小的一个redis集群需要几台主机?6台。

查看当前进程

image.png

杀死之前的进程

[root@localhost ~]# kill -9 1576 1581 1586 1591 1596 1601 1779

再查看下当前进程

[root@localhost zhucong]# ps -ef|grep redis

image.png

进入到 /opt 目录下,创建文件夹 cluster,并创建子文件夹 7001 , 7002 , 7003 , 7004 , 7005 ,7006

[root@localhost zhucong]# cd ../../
[root@localhost opt]# mkdir cluster
[root@localhost opt]# ls
cluster  containerd  nginx-1.19.0.tar.gz  redis-5.0.4  redis-5.0.4.tar.gz
[root@localhost opt]# cd cluster
[root@localhost cluster]# mkdir 7001 7002 7003 7004 7005 7006
[root@localhost cluster]# ls
7001  7002  7003  7004  7005  7006
[root@localhost cluster]#

这几个子文件加复制配置文件。

port 7001
cluster-enabled yes
cluster-config-file nodes7001.conf
cluster-node-timeout 5000
appendonly yes
daemonize yes
protected-mode no
pidfile /var/run/redis_7001.pid
属性名说明
port端口号
cluster-enabled是否开启redis集群模式
cluster-config-file当前节点的集群的配置文件名称,这个文件不需要我们往文件中写东西,他的作用是在集群启动之后记录记录集群的一些信息,以便当前节点挂了重启之后能把原先的集群信息读回来。
cluster-node-timeout集群节点的超时时间
appendonly开启AOF日志模式
daemonize配置后台启动
pidfile记录当前节点运行起来的进程号

配置7001的配置文件

[root@localhost cluster]# vim 7001/redis.conf

输入i , 粘贴上面的配置信息

image.png

配置7002的配置文件

[root@localhost cluster]# vim 7002/redis.conf

按esc,:%s/7001/7002/g 把端口号改为 7002

:wq 保存退出

image.png

配置7003的配置文件

[root@localhost cluster]# vim 7003/redis.conf

按esc,:%s/7001/7003/g 把端口号改为 7003

:wq 保存退出

image.png

依次把7004、7005、7006的进行配置,操作都是把配置信息复制,把端口号改为对应的端口号,保存退出。

配置完成之后。

启动7001到7006所有的redis服务:

image.png

查看下当前进程

image.png

每个服务进程后面都有 [cluster] , 这就是以集群模式开启redis服务。现在这6个命令还没有形成一个整体。

查看集群管理的命令

image.png

执行创建集群的命令

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

image.png

redis中 集群中插槽slot的意思:

redis 集群中共有16384个插槽。这些插槽你可以自己分配到不同的主从复制模式中 ,来达到把数据分

开存储的目的。

image.png

上面最后一行的 Can I set the above configuration? (type ‘yes’ to accept): yes 我能使用上面的配置吗?yes就是接受

image.png

现在集群已经创建好了。

集群管理的命令

查看集群的状态

以集群的方式连接集群的节点

比如连接7001节点

[root@localhost cluster]# redis-cli -c -h 192.168.25.10 -p 7001

重定向到7002的5798的插槽上了

image.png

查看集群的状态

cluster info

image.png

cluster_state:ok 集群正常

cluster_slots_assigned:16384 集群的插槽数量

查看集群节点信息

cluster nodes

image.png

这里停掉 7001主机的服务,重启7001的客户端,重启7006的客户端

image.png

查看集群状态

image.png

查看集群节点信息

image.png

添加集群节点

拷贝 7006到7007中

[root@localhost cluster]# cp -r 7006 7007
[root@localhost cluster]# vim 7007/redis.conf

image.png

启动7007的服务

image.png

添加一个主机 192.168.25.10:7007 添加为主机:

redis-cli --cluster add-node 192.168.25.10:7007 192.168.25.10:7001

image.png

新节点被正确添加了

主机创建之后,需要分配插槽才能存储数据。

分配插槽命令:

redis-cli --cluster reshard 192.168.25.10:7004

image.png

image.png

可以看到7007有插槽了

image.png

测试一下

image.png

添加备机也可以

redis-cli --cluster add-node 192.168.25.10:7008 192.168.25.10:7002 --cluster-master-id f64c83e30c6751fe443b3da2148936ca5cda3ca1 #复制的是7007的id
[root@localhost 7008]# cd ../7007
[root@localhost 7007]# ls
appendonly.aof  nodes7007.conf  redis.conf
[root@localhost 7007]# clear
[root@localhost 7007]# cd ../7008
[root@localhost 7008]# ls
redis.conf
[root@localhost 7008]# vim redis.conf
[root@localhost 7008]# redis-server redis.conf
91273:C 21 Mar 2021 03:01:20.927 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
91273:C 21 Mar 2021 03:01:20.927 # Redis version=5.0.4, bits=64, commit=00000000, modified=0, pid=91273, just started
91273:C 21 Mar 2021 03:01:20.927 # Configuration loaded
[root@localhost 7008]# ps -ef|grep redis
root      82389      1  0 00:04 ?        00:01:30 redis-server *:7002 [cluster]
root      82399      1  0 00:04 ?        00:01:30 redis-server *:7003 [cluster]
root      82408      1  0 00:05 ?        00:01:28 redis-server *:7004 [cluster]
root      82417      1  0 00:05 ?        00:01:28 redis-server *:7005 [cluster]
root      83514      1  0 00:26 ?        00:01:21 redis-server *:7006 [cluster]
root      85571      1  0 01:08 ?        00:00:58 redis-server *:7001 [cluster]
root      86647      1  0 01:29 ?        00:00:48 redis-server *:7007 [cluster]
root      91274      1  0 03:01 ?        00:00:00 redis-server *:7008 [cluster]
root      91285  91086  0 03:01 pts/0    00:00:00 grep --color=auto redis
[root@localhost 7008]# redis-cli --cluster help


[root@localhost 7008]# redis-cli -c -h 192.168.25.10 -p 7005

[root@localhost 7008]# redis-cli --cluster add-node 192.168.25.10:7008 192.168.25.10:7002 --cluster-slave --cluster-master-id f64c83e30c6751fe443b3da2148936ca5cda3ca1

[root@localhost 7008]# redis-cli -c -h 192.168.25.10 -p 7005
192.168.25.10:7005> cluster nodes
dcb403413167205fe555041f7050dccb381aef77 :0@0 master,fail,noaddr - 1616266331987 1616266330945 0 disconnected
4a30d80d3693d21429643ac18f8140008efc5d5f 192.168.25.10:7001@17001 slave 48e51281061027ccf52fafbdd4084dc0110993b8 0 1616267373789 7 connected
aae5f453bc049c67c73040551674ef9a66486f61 192.168.25.10:7003@17003 master - 0 1616267373696 3 connected 11073-16383
35ddfc2a0097c82637ca281e9d29bfce98d2846d 192.168.25.10:7005@17005 myself,slave aae5f453bc049c67c73040551674ef9a66486f61 0 1616267371000 5 connected
ed43781efc73f601ab31882ff84ad2364bdc4d0f 192.168.25.10:7008@17008 slave f64c83e30c6751fe443b3da2148936ca5cda3ca1 0 1616267373000 8 connected
f64c83e30c6751fe443b3da2148936ca5cda3ca1 192.168.25.10:7007@17007 master - 0 1616267373611 8 connected 0-149 10923-11072
48e51281061027ccf52fafbdd4084dc0110993b8 192.168.25.10:7006@17006 master - 0 1616267373618 7 connected 150-5460
ca40cc0b0b4c534baa8119bbf882739901de482f 192.168.25.10:7004@17004 slave 640b6258f2dc610defe5588090c8acbc646711d4 0 1616267371604 4 connected
640b6258f2dc610defe5588090c8acbc646711d4 192.168.25.10:7002@17002 master - 0 1616267371706 2 connected 5461-10922
192.168.25.10:7005> quit

结束 7002 7004的进程

修复集群命令

redis-cli --cluster fix 192.168.25.10:7005
f84ad2364bdc4d0f 192.168.25.10:7008@17008 slave f64c83e30c6751fe443b3da2148936ca5cda3ca1 0 1616267373000 8 connected
f64c83e30c6751fe443b3da2148936ca5cda3ca1 192.168.25.10:7007@17007 master - 0 1616267373611 8 connected 0-149 10923-11072
48e51281061027ccf52fafbdd4084dc0110993b8 192.168.25.10:7006@17006 master - 0 1616267373618 7 connected 150-5460
ca40cc0b0b4c534baa8119bbf882739901de482f 192.168.25.10:7004@17004 slave 640b6258f2dc610defe5588090c8acbc646711d4 0 1616267371604 4 connected
640b6258f2dc610defe5588090c8acbc646711d4 192.168.25.10:7002@17002 master - 0 1616267371706 2 connected 5461-10922
192.168.25.10:7005> quit

结束 7002 7004的进程

修复集群命令

redis-cli --cluster fix 192.168.25.10:7005
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值