Redis集群搭建并不麻烦,只是步骤较多,跟着步骤走,就简单了。
环境以及搭建说明:
说明:本人只有三台虚拟机,所以本人将三个master分别放在三台虚拟机上;本人同时又考虑了主备模式,所以又
需要搭建三个slave,同时又不想将成对的主备放在同一台机器上(因为如果某一台Linux崩了,那岂不是该
Redis的主和备都崩了),所以这里将Redis的主与备相互错开放置进三个Linux里,若某一台机器崩了,那么
仍然有三个“有效的”Redis节点。
追注:若果机器有6个的话,就不需要考虑这个问题,一个机器上一个节点就完事了。
注:由于redis在创建集群时,需要考虑到单点故障以及高可用。所以需要采用主备模式。同时redis在管理集群判断
节点是否健康采用的是投票策略,所以主节点的数量一定是单数的。
如:创建redis的最小的集群,应该是三个实例,在加上主备模式,那么一共应该是6个redis实例;如果不考虑主备的
话,3个实例就能搭建最简单的Redis集群了。
CentOS7上搭建Redis集群
第一步:准备Redis节点
提示:可以挨个挨个安装6个单机版的Redis,也可以在安装完一个Redis后进行拷贝。本人就是安装完一个
Redis后进行的拷贝,具体的操作步骤是:
第一小步:按照https://blog.csdn.net/justry_deng/article/details/89157721,先搭建一个单机版的Redis。
第二小步:修改rendis安装目录下的redis.conf配置文件。
提示:本人这里为了方便,是直接将bind给注释掉了,如果觉得不安全的话,可以不注释掉,只需在bind后面指
定允许哪些ip连接即可,如果有多个ip的话,ip之间使用空格分隔。
注:上述截图只是截了改动部分的图,redis.conf的其余地方不变。
注:密码建议设置复杂一点。
第三小步:删除redis安装目录redis-5.0.4目录下的.rdb文件。
示例:
说明:.rdb是Redis的数据(备份)文件,因为是拷贝的同一个Redis,所以需要删除此文件,否则创建集群时会出问题。
第四小步:通过scp指令,将10.8.109.36上的redis-5.0.4文件夹递归拷贝至10.8.109.24以及10.8.109.49上的/opt目录下。
-
# 将redis-5.0.4文件夹递归拷贝至10.8.109.24下的opt目录下
-
scp -r redis-5.0.4 root@10.8.109.24:/opt
执行效果如图:
-
# 将redis-5.0.4文件夹递归拷贝至10.8.109.49下的opt目录下
-
scp -r redis-5.0.4 root@10.8.109.49:/opt
执行效果如图:
第五小步:将10.8.109.36上的redis-5.0.4文件夹重命名为redis-two-master,并拷贝一份命名为redis-three-slave。
相关指令为:
-
# 通过mv来重命名
-
mv redis-5.0.4 redis-two-master
-
# 拷贝文件夹
-
cp -r redis-two-master/ ./redis-three-slave
执行效果为:
注:同样的操作,在10.8.109.24上生成redis-one-master和redis-two-slave;
在10.8.109.49上生成redis-three-master和redis-one-slave。
第六小步:修改三个slave的端口号、设置连接master的密码。分别编辑redis-one-slave、redis-two-slave、
redis-three-slave的配置文件redis.conf,将端口由6379改为6380;同时设置连接master的密码。
注:三个master就位于不同的机器上,就采用默认端口就行了。
注:redis.conf的其余地方不变。
到此为止,6个Redis节点就都已经安装准备好了,他们分别是:
第二步:完成集群的配置搭建
第一小步:开放6个Redis节点所涉及到的端口。
说明:类似zookeeper集群,Redis集群中的每个节点不仅需要对客户端提供一个端口,还需要额外对其他节点
提供一个端口,用于节点间信息交流,如群首选举等。
相关指令为:
-
# CentOS7开放端口
-
firewall-cmd --zone=public --add-port=6379/tcp --permanent
-
firewall-cmd --zone=public --add-port=16379/tcp --permanent
-
-
firewall-cmd --zone=public --add-port=6380/tcp --permanent
-
firewall-cmd --zone=public --add-port=16380/tcp --permanent
-
-
# CentOS7重新加载防火墙
-
firewall-cmd --reload
-
-
#(CentOS)查看所有开放的端口
-
firewall-cmd --zone=public --list-ports
执行效果如图:
注:三台机器上都要进行上述操作,开放相应的端口。
第二小步:分别切换至这6个Redis的安装目录下,使用src/redis-server redis.conf指令,后台启动这6个Redis;启动
后使用ps -ef|grep redis指令查看redis进程:
10.8.109.24:
10.8.109.36:
10.8.109.49:
第三小步:在6个节点中的任意一个节点的安装目录下,执行集群搭建指令,完成集群搭建
指令:
src/redis-cli -a ds123 --cluster create 10.8.109.24:6379 10.8.109.36:6379 10.8.109.49:6379 10.8.109.49:6380 10.8.109.24:6380 10.8.109.36:6380 --cluster-replicas 1
注:因为我们开启了Redis密码认证,所以需要在这里-a ds123指明密码,其中ds123就是本人设置的密码。
注:--cluster-replicas 1中,1代表的是一个master有一个slave;前三个ip是master,后三个ip是对应的slave。
执行效果如图:
说明:高版本的Redis不需要再安装ruby,直接使用redis-cli可完成集群的搭建(应该是Redis内部集成对
了Ruby的支持,此处本人尚未去探索)。
测试一下:
测试原理:
在6个节点中的任意一个节点添加、修改、删除数据,其余节点都能同步。
测试一:
在10.8.109.49上,使用redis客户端连接进redis-three-master中,向redis中存入数据:
然后在10.8.109.24上,使用redis客户端连接进redis-two-slave中,从redis中读取数据:
可看见,从节点redis-three-master存入的数据,能从节点redis-two-slave中读取,可见Redis集群搭建成功!
测试二:
在10.8.109.36上,使用redis客户端连接进redis-two-master中,修改测试一中“test-key”的value值为“abc”:
然后在10.8.109.49上,使用redis客户端连接进redis-three-master中,从redis中读取“test-key”的value值:
可看见,在节点redis-two-master修改(存入)的数据,能从节点redis-three-master中读取,可见Redis集群搭建成功!