ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

虚拟机模拟redis集群

2021-07-26 22:05:15  阅读:179  来源: 互联网

标签:虚拟机 redis 12.128 cluster 集群 192.168 7001 slots


​  实践是检验真理的唯一标准,作为redis的初学者,在学习redis集群的时候,希望能够自己搭建一个redis集群,但只有一台电脑,所以想出使用虚拟机去模拟redis集群,相当于构建一个伪集群。

(伪)集群搭建步骤

1 搭建所需环境

VM虚拟机(这里操作系统选用的是CentOs7)

安装redies

注:为避免权限问题,后期操作均使用root账户

2 创建集群目录

为方便对文件的管理,新建一个集群目录

[root@centOSyangsensen redis]# mkdir redis-cluster/
[root@centOSyangsensen redis]# ls
redis  redis-cluster

3 将已经安装好的redis复制到集群目录下

至少3台主机才可以配置集群,如果每台主机再配置一台从机的话,那么就需要6台主机,这里创建6个redis实例来代替六台主机,每个实例使用不同的端口号,设计端口如下,黑色为主机,绿色为从机,端口号7001~7006

复制文件

[root@centOSyangsensen redis]# cp redis redis-cluster/7001 -r
[root@centOSyangsensen redis]# cd redis-cluster/7001/
[root@centOSyangsensen 7001]# ls
bin  dump.rdb  nodes.conf  redis.conf

4 如果存在持久化文件(只保留bin文件夹和redis.conf文件即可)

[root@centOSyangsensen 7001]# rm -rf dump.rdb nodes.conf 
[root@centOSyangsensen 7001]# ls
bin  redis.conf

5 修改redis.conf配置文件

需要修改三处,分别是是否接受集群(Cluster-enable),绑定ip(bind),端口号(port),以及一些文件目录

打开集群

在这里插入图片描述

设置IP,ip为虚拟机的IP

在这里插入图片描述

设置端口号

在这里插入图片描述

修改文件目录(这里不修改,待会可能打不开第二台机器)

在这里插入图片描述

保存退出

6 由7001复制出7002~7006机器

[root@centOSyangsensen redis-cluster]# cp 7001/ 7002 -r
[root@centOSyangsensen redis-cluster]# cp 7001/ 7003 -r
[root@centOSyangsensen redis-cluster]# cp 7001/ 7004 -r
[root@centOSyangsensen redis-cluster]# cp 7001/ 7005 -r
[root@centOSyangsensen redis-cluster]# cp 7001/ 7006 -r

7 修改7002~7006机器的端口号

修改7002~7006机器的端口号,并修改配置文件中对应的文件目录,与7001中配置一样的步骤

8 分别启动6台机器

9 创建集群(先关闭防火墙)

创建集群,无需在每一台机器都运行集群命令,只需在任一台机器执行redis-cli --cluster命令就够了

命令格式如下

 ./redis-cli --cluster create  ip:port ip:port --cluster-replicas 1

其中–cluster-replicas表示为每台主机配置的从机数量

命令及命令执行过程如下

[root@centOSyangsensen redis-cluster]# cd 7001
[root@centOSyangsensen 7001]# cd bin
[root@centOSyangsensen bin]# ./redis-cli --cluster create  192.168.12.128:7001 192.168.12.128:7002 192.168.12.128:7003 192.168.12.128:7004 192.168.12.128:7005 192.168.12.128:7006 --cluster-replicas 1
>>> Performing hash slots allocation on 6 nodes...
Master[0] -> Slots 0 - 5460
Master[1] -> Slots 5461 - 10922
Master[2] -> Slots 10923 - 16383
Adding replica 192.168.12.128:7005 to 192.168.12.128:7001
Adding replica 192.168.12.128:7006 to 192.168.12.128:7002
Adding replica 192.168.12.128:7004 to 192.168.12.128:7003
>>> Trying to optimize slaves allocation for anti-affinity
[WARNING] Some slaves are in the same host as their master
M: 63966329ebb2405f38fa03cb1901d8a9bdd0eedb 192.168.12.128:7001
   slots:[0-5460] (5461 slots) master
M: 0bec30bff33dc635608c7cf48e66eaed6c867d5d 192.168.12.128:7002
   slots:[5461-10922] (5462 slots) master
M: 65a2c0d143fa8d9be9be1a70da76744ddfbf9a59 192.168.12.128:7003
   slots:[10923-16383] (5461 slots) master
S: 460bd1fe2564b31c302fe5431a7560e1773798cc 192.168.12.128:7004
   replicates 65a2c0d143fa8d9be9be1a70da76744ddfbf9a59
S: e1cdf6e53ffef7361c0c722909b5bf37f36bb758 192.168.12.128:7005
   replicates 63966329ebb2405f38fa03cb1901d8a9bdd0eedb
S: 48df8c6d3e400a539614b6f418ba7a4004db2df6 192.168.12.128:7006
   replicates 0bec30bff33dc635608c7cf48e66eaed6c867d5d
Can I set the above configuration? (type 'yes' to accept): yes
>>> Nodes configuration updated
>>> Assign a different config epoch to each node
>>> Sending CLUSTER MEET messages to join the cluster
Waiting for the cluster to join
......
>>> Performing Cluster Check (using node 192.168.12.128:7001)
M: 63966329ebb2405f38fa03cb1901d8a9bdd0eedb 192.168.12.128:7001
   slots:[0-5460] (5461 slots) master
   1 additional replica(s)
M: 65a2c0d143fa8d9be9be1a70da76744ddfbf9a59 192.168.12.128:7003
   slots:[10923-16383] (5461 slots) master
   1 additional replica(s)
S: e1cdf6e53ffef7361c0c722909b5bf37f36bb758 192.168.12.128:7005
   slots: (0 slots) slave
   replicates 63966329ebb2405f38fa03cb1901d8a9bdd0eedb
S: 48df8c6d3e400a539614b6f418ba7a4004db2df6 192.168.12.128:7006
   slots: (0 slots) slave
   replicates 0bec30bff33dc635608c7cf48e66eaed6c867d5d
M: 0bec30bff33dc635608c7cf48e66eaed6c867d5d 192.168.12.128:7002
   slots:[5461-10922] (5462 slots) master
   1 additional replica(s)
S: 460bd1fe2564b31c302fe5431a7560e1773798cc 192.168.12.128:7004
   slots: (0 slots) slave
   replicates 65a2c0d143fa8d9be9be1a70da76744ddfbf9a59
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.

注:上面的信息可以看出有三台主机(7001,7002,7003),以及三台从机(7004,7005,7006),其中M表示主机,S表示从机。

10 连接集群

命令(任一连接一台主机):

[root@centOSyangsensen bin]# ./redis-cli -h 192.168.12.128 -p 7001 -c
192.168.12.128:7001> 

-c指的是集群连接

到这里redis集群就全部搭建完毕了,接下里可以存值测试,查看集群信息等等

存值测试

192.168.12.128:7001> set k1 k
-> Redirected to slot [12706] located at 192.168.12.128:7003
OK
192.168.12.128:7003> get k
-> Redirected to slot [7629] located at 192.168.12.128:7002
(nil)
192.168.12.128:7002> get k1
-> Redirected to slot [12706] located at 192.168.12.128:7003
"k"


可以看出虽然连接的是7001机器,当数据会根绝存储位置为你重新连接到其他机器。

标签:虚拟机,redis,12.128,cluster,集群,192.168,7001,slots
来源: https://blog.csdn.net/qq_45267848/article/details/119119271

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有