Linux(CentOS7)上搭建Redis-5.0.4集群(多台机器、密码验证)

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 [email protected]:/opt

执行效果如图:

 

# 将redis-5.0.4文件夹递归拷贝至10.8.109.49下的opt目录下
scp -r redis-5.0.4 [email protected]:/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集群搭建成功

 

^_^ 如有不当之处,欢迎指正

^_^ 本文已经被收录进《程序员成长笔记(一)》,笔者JustryDeng

猜你喜欢

转载自blog.csdn.net/justry_deng/article/details/89158668