Redis Cluster集群实验

Redis集群搭建的方式有多种,例如使用zookeeper(以前的redis经常配合zookeeper来做集群,因为原来没有官方的支持)等,但从redis 3.0之后版本支持redis-cluster集群,Redis-Cluster采用无中心结构(又叫分布式结构),每个节点保存数据和整个集群状态,每个节点都和其他所有节点连接。

redis-cluster的优势

1、官方推荐
2、去中心化,集群最大可增加1000个节点,性能随节点增加而线性扩展。
3、管理方便,后续可自行增加或摘除节点,移动分槽等等。
4、简单,易上手。

实验准备

准备全新的三台机器,一台机器两个角色,六个节点的集群。正常在公司应该是一个节点,一个redis。

现在是3个节点,6个redis。

6个redis怎么做?

把端口分开就行了,每一个端口代表一个redis,3个master,3个slave,并且要求3个master节点不能全部跑到同一台服务器上,保证节点安全,3台服务器的配置相同。

操作

环境为三台服务器:centos7.9

(一)在安装集群之前,需要在服务器上安装ruby环境(三台机器相同操作)。

yum install centos-release-scl-rh     安装ruby yum源

[root@redis1 src]# yum search ruby  查看ruby的主包

 [root@redis1 src]# yum install -y rh-ruby26-ruby

[root@redis1 src]# scl  enable  rh-ruby26 bash 刷新环境

[root@redis1 src]# ruby -v   查看ruby版本

 [root@redis1 src]# gem install redis   安装redis的库

三台机器相同操作

(二)安装redis (三台机器相同操作)

(三)创建节点目录(三台机器相同操作,注意端口号的不一样)

[root@redis1 redis-6.2.6]# mkdir data在redis的安装目录下,创建一个date的目录(存放数据的目录)

[root@redis1 redis-6.2.6]# mkdir cluster创建一个cluster的目录,存放不同节点的配置文件的目录

cd cluster/    注意下面这三行不一样

[root@redis1 cluster]# mkdir 7000 7001

[root@redis2 cluster]# mkdir 7001 7002

[root@redis3 cluster]# mkdir 7002 7000
systemctl stop redis  先关掉服务

(四)拷贝配置文件    控制节点操作,把这个配置文件分别拷到上面创建的六个目录里面

1

[root@redis1 cluster]# cd ..
[root@redis1 redis-6.2.6]# cp redis.conf cluster/7000
[root@redis1 redis-6.2.6]# cp redis.conf cluster/7001

2

[root@redis2 cluster]# cd ..
[root@redis2 redis-6.2.6]# cp redis.conf cluster/7001
[root@redis2 redis-6.2.6]# cp redis.conf cluster/7002

3

[root@redis3 cluster]# cd ..
[root@redis3 redis-6.2.6]# cp redis.conf cluster/7002
[root@redis3 redis-6.2.6]# cp redis.conf cluster/7000

(五)修改集群配置文件(主要是端口和ip,三台机器相同操作)

bind 192.168.22.156      改成自己的ip    # **绑定局域网ip,使得三台服务器可相互访问 daemonize yes     // redis后台运行,原来是用的&,修改为yes

pidfile /var/run/redis_7000.pid // pid文件,运行多个实例时,需要指定不同的pid文件,一共6个端口,先改7000

port 7000 // 监听端口,运行多个实例时,需要指定不同的端口

tcp-backlog 511 日志服务器的端口

tcp-keepalive 0 长链接

loglevel notice // 日志等级

logfile /var/log/redis_7000.log // 日志文件位置 运行多实例时,需要修改不同的端口

databases 16 // 可用数据库数

dir /root/redis-6.2.6/data //存放数据的目录

appendonly yes // redis会把所接收到的每一次写操作请求都追加到appendonly.aof文件中,当redis重新启动时,会从该文件恢复出之前的状态。

appendfilename "appendonly.aof" // AOF文件名称

appendfsync everysec // 表示对写操作进行累积,每秒同步一次

no-appendfsync-on-rewrite yes // AOF 自动重写

auto-aof-rewrite-percentage 80-100 // 重写百分比

auto-aof-rewrite-min-size 64mb

打开注释并修改的如下:

先看看有没有默认配置,没有把它打开

#如下为集群配置 cluster-enabled yes #启用集群

 cluster-config-file nodes-7000.conf #集群配置文件,由redis自动更新,不需要手动配置,运行多实例时请注修改为对应端口

 cluster-node-timeout 5000  #集群节点超时时间,即集群中主从节点断开连接时间阈值,超过该值则认为主节点不可以,从节点将有可能转为master

 cluster-slave-validity-factor 10  #在进行故障转移的时候全部slave都会请求申请为master,但是有些slave可能与master断开连接一段时间了导致数据过于陈旧,不应该被提升为master。该参数就是用来判断slave节点与master断线的时间是否过长,注意新版本此选项为:cluster-replica-validity-factor

 #cluster-migration-barrier 1

cluster-require-full-coverage yes #集群中的所有slot(16384个)全部覆盖,才能提供服务

提示 可以在一台服务器上面修改好了scp到每台服务器对应的目录下面,然后修改ip和端口还有pid号日志存放文件和配置文件中的cluster-config-file nodes-7000.conf对应不同的端口!

[root@redis1 7000]# vim redis.conf 
[root@redis1 7000]# cp redis.conf  ../7001/
cp:是否覆盖"../7001/redis.conf"? yes 

[root@redis1 7000]# scp redis.conf 192.168.22.169:/root/redis-6.2.6/cluster/7001
[root@redis1 7000]# scp redis.conf 192.168.22.169:/root/redis-6.2.6/cluster/7002
[root@redis1 7000]# scp redis.conf  192.168.22.170:/root/redis-6.2.6/cluster/7000
[root@redis1 7000]# scp redis.conf  192.168.22.170:/root/redis-6.2.6/cluster/7002
[root@redis1 cluster]# cd 7001
[root@redis1 7001]# vim redis.conf 

[root@redis2 7002]# vim redis.conf 
 

[root@redis2 7001]# vim redis.conf

[root@redis3 7000]# vim redis.conf

  [root@redis3 7002]# vim redis.conf

 

(六)启动三台机器上面的每个节点(三台机器相同操作)

[root@redis1 redis-6.2.6]# cd src/
[root@redis1 src]# ./redis-server ../cluster/7000/redis.conf
[root@redis1 src]# ./redis-server ../cluster/7001/redis.conf

 [root@redis2 redis-6.2.6]# cd src/
[root@redis2 src]# ./redis-server ../cluster/7001/redis.conf
[root@redis2 src]# ./redis-server ../cluster/7002/redis.conf

 [root@redis3 redis-6.2.6]# cd src/
[root@redis3 src]# ./redis-server ../cluster/7000/redis.conf
[root@redis3 src]# ./redis-server ../cluster/7002/redis.conf

(七)创建集群(在控制节点上面操作即可,剩余机器不用操作)

Redis是根据IP和Port的顺序,确定master和slave的,所以要排好序,再执行。

在第一台机器执行。

[root@redis1 src]#  ./redis-cli --cluster create 192.168.22.156:7000 192.168.22.156:7001 192.168.22.169:7001 192.168.22.169:7002 192.168.22.170:7002 192.168.22.170:7000 --cluster-replicas 1

 已经好了。去查看验证一下。

(八)查看集群状态可连接集群中的任一节点,此处连接了集群中的节点

 登录集群客户端,-c标识以集群方式登录。 cluster info //查看集群信息

 设置lisi,他把东西存在5798这个槽了,到了169的7001节点上,不管它到哪,都可以get,也可以在其他机器查。

 不管在哪查,它都能帮你去真正存储数据的那台机器上查询数据。

检查集群状态:任意服务器都可以检查

 实验成功。

【注意】少熬夜,多看书

猜你喜欢

转载自blog.csdn.net/weixin_53150440/article/details/127374408