【图文教程】Redis主从集群安装
- Redis
- 时间:2023-01-03 14:25
- 3998人已阅读
🔔🔔🔔好消息!好消息!🔔🔔🔔
有需要的朋友👉:联系凯哥
我们在上一篇:《【图文教程】Centos单机安装Redis》讲解了怎么安装单机版的Redis。那么本文咱们就来讲讲,怎么安装一主多从的Redis集群
Redis集群结构:我们搭建的主从集群结构如下图:
共包含了三个节点:一个主节点,两个从节点。
这里我们会在同一台虚拟机中开启3个Redis实例,来模拟主从集群。信息如下图:
如果想要使用真实的3台Redis实例,建议使用docker来安装。关于使用docker安装三主三从的Redis可以详见凯哥写的docker系列教程中的《docker高级篇第二章-分布式存储之实战案例:3主3从redis集群扩容配置》这篇文章.好了,回到本篇,咱们使用一台虚拟机模拟集群的。
本文来源:凯哥Java(www.kaigejava) http://www.kaigejava.com/newuiarticle/detail/1233 个人公众号:凯哥Java(kaigejava) 。福利公众号:凯哥优惠淘
一:准备实例和配置信息
要在同一台虚拟机开启3个实例,必须准备三份不同的配置文件和目录,配置文件所在目录也就是工作目录。
1.1:创建目录
我们创建三个文件及,名字分别是:7001、7002、7003
创建命令如下:
# 进入/tmp目录 cd /tmp # 创建目录 mkdir 7001 7002 7003
创建完成后,如下图:
1.2:恢复原始配置
# 开启RDB # save "" save 3600 1 save 300 100 save 60 10000 # 关闭AOF appendonly no
1.3:拷贝文件到每个实例目录
# 方式一:逐个拷贝 cp redis-6.2.4/redis.conf 7001 cp redis-6.2.4/redis.conf 7002 cp redis-6.2.4/redis.conf 7003 # 方式二:管道组合命令,一键拷贝 echo 7001 7002 7003 | xargs -t -n 1 cp redis-6.2.4/redis.conf
1.4:修改每个实例端口、工作目录
修改每个文件夹内的配置文件,将端口分别修改为7001、7002、7003,将rdb文件保存位置都修改为自己所在目录(在/tmp目录执行下列命令):
sed -i -e 's/6379/7001/g' -e 's/dir .\//dir \/tmp\/7001\//g' 7001/redis.conf sed -i -e 's/6379/7002/g' -e 's/dir .\//dir \/tmp\/7002\//g' 7002/redis.conf sed -i -e 's/6379/7003/g' -e 's/dir .\//dir \/tmp\/7003\//g' 7003/redis.conf
1.5:修改每个实例的声明IP
虚拟机本身有多个IP,为了避免将来混乱,我们需要在redis.conf文件中指定每一个实例的绑定ip信息,格式如下:
# redis实例的声明 IP replica-announce-ip 192.168.150.101
每个目录都要修改,我们一键完成修改(在/tmp目录执行下面的命令):
# 逐一执行 sed -i '1a replica-announce-ip 192.168.150.101' 7001/redis.conf sed -i '1a replica-announce-ip 192.168.150.101' 7002/redis.conf sed -i '1a replica-announce-ip 192.168.150.101' 7003/redis.conf # 或者一键修改 printf '%s\n' 7001 7002 7003 | xargs -I{} -t sed -i '1a replica-announce-ip 192.168.150.101' {}/redis.conf
请注意:将ip修改成你们自己的ip !!!!
二:启动
本文来源:凯哥Java(www.kaigejava) http://www.kaigejava.com/newuiarticle/detail/1233 个人公众号:凯哥Java(kaigejava) 。福利公众号:凯哥优惠淘
为了方便查看日志,我们打开3个ssh的窗口,分别启动3个Redis实例。启动命令如下:
# 第1个 redis-server 7001/redis.conf # 第2个 redis-server 7002/redis.conf # 第3个 redis-server 7003/redis.conf
启动后:
如果要一键停止,可以允许如下命令:
printf '%s\n' 7001 7002 7003 | xargs -I{} -t redis-cli -p {} shutdown
三:开启主从关系
现在三个实例还没有任何关系,要配置主从可以使用replicaof或者slaveof(5.0版本之前的)命令。
有临时和永久两个模式:
永久生效模式:修改配置文件
在redis.conf中添加一行。如下:
slaveof <masterip> <masterport>
临时模式(重启后就失效):使用redis-cli客户端连接到Redis服务后,执行slaveof命令。如下:
slaveof <masterip> <masterport>
注意:在5.0以后新增命令replicaof,与salveof效果一致。
这里为了演示的方便,就使用第二种方案-临时的。
通过redis-cli命令连接到7002,执行下面的命令:
# 连接 7002 redis-cli -p 7002 # 执行slaveof slaveof 192.168.150.101 7001
通过redis-cli命令连接7003,执行下面命令:
# 连接 7003 redis-cli -p 7003 # 执行slaveof slaveof 192.168.150.101 7001
然后连接7001节点,查看集群状态:
# 连接 7001 redis-cli -p 7001 # 查看状态 info replication
查看结果如下图:
四:测试
执行下列操作测试:
利用redis-cli连接7002,执行
get num
,再执行set num 666
利用redis-cli连接7003,执行
get num
,再执行set num 888
可以发现,只有在7001这个master节点上可以执行写操作。7002和7003这两个slave节点只能执行读操作。
本文来源:凯哥Java(www.kaigejava) http://www.kaigejava.com/newuiarticle/detail/1233 个人公众号:凯哥Java(kaigejava) 。福利公众号:凯哥优惠淘