2024广东省职业技能大赛云计算赛项实战——Redis主从架构

Redis主从架构

前言

Redis是一个开源的内存数据结构存储系统,一般用于作为数据库、缓存和消息代理使用,而主从架构是许多分布式系统中常见的设计模式,用来提高系统的性能、可靠性和扩展性。

虚拟机使用的是自行创建的CentOS7,如果你不会,那虚拟机创建的流程可以参考我这篇文章:职业技能大赛云计算赛项实战------OpenStack搭建-CSDN博客

使用镜像为CentOS-7-x86_64-DVD-2009.iso,可从阿里镜像站下载:https://mirrors.aliyun.com/centos/7/isos/x86_64/

两台机子可以创好一台再克隆一台,这样会比较省时。

需要用到的redis软件源压缩包:https://pan.baidu.com/s/1ZnZoD_hdBywwFy3Q6GZFSA?pwd=tk9h

提取码:tk9h

同时,这个实验中两节点打得命令很多都是一样的,一样推荐使用Xshell,可以同时控制两个会话。

节点规划如下

主机名 IP/24 节点
redis1 192.168.100.100 主节点
redis2 192.168.100.200 从节点

操作过程

关闭防火墙和Selinux

shell 复制代码
#两个节点均关闭防火墙并禁止其开机自启
[root@localhost ~]# systemctl stop firewalld && systemctl disable firewalld
[root@localhost ~]# systemctl stop firewalld && systemctl disable firewalld
#临时关闭Selinux
[root@localhost ~]# setenforce 0
[root@localhost ~]# setenforce 0

修改主机名

shell 复制代码
#修改两台机子的主机名
[root@localhost ~]# hostnamectl set-hostname redis1
[root@localhost ~]# bash
[root@redis1 ~]# 

[root@localhost ~]# hostnamectl set-hostname redis2
[root@localhost ~]# bash
[root@redis2 ~]# 

上传redis软件源

上传我提供的软件包(使用远程连接软件,SecureFX、XShell都行)

大小才707K,两个节点都要上传

然后将软件包解压至opt目录

shell 复制代码
[root@redis1 ~]# tar -zxf redis-3.2.12.tar.gz -C /opt
[root@redis2 ~]# tar -zxf redis-3.2.12.tar.gz -C /opt

配置YUM源

shell 复制代码
#这里两个节点都要配置
#创建挂载目录
[root@redis1 ~]# mkdir /opt/centos
#挂载
[root@redis1 ~]# mount -o loop /dev/sr0 /mnt/
[root@redis1 ~]# cp -rf /mnt/* /opt/centos/
[root@redis1 ~]# umount /mnt/
#redis1:
#删除系统自带的默认源
[root@redis1 ~]# rm -rf /etc/yum.repos.d/*
#创建新的仓库文件
[root@redis1 ~]# vi /etc/yum.repos.d/local.repo
[centos]
name=centos
baseurl=file:///opt/centos
enabled=1
gpgcheck=0
[redis]
name=redis
baseurl=file:///opt/redis
enabled=1
gpgcheck=0
#检查可用性
[root@redis1 ~]# yum clean all && yum repolist
...
源标识                                       源名称                                       状态
centos                                       centos                                       4,070
redis                                        redis                                            3
repolist: 4,073
...
#redis2:
#创建挂载目录
[root@redis2 ~]# mkdir /opt/centos
#挂载
[root@redis2 ~]# mount -o loop /dev/sr0 /mnt/
[root@redis2 ~]# cp -rf /mnt/* /opt/centos/
[root@redis2 ~]# umount /mnt/
#删除系统自带的默认源
[root@redis2 ~]# rm -rf /etc/yum.repos.d/*
#创建新的仓库文件,你也可以从redis1通过scp命令把文件传过来
[root@redis2 ~]# vi /etc/yum.repos.d/local.repo
[centos]
name=centos
baseurl=file:///opt/centos
enabled=1
gpgcheck=0
[redis]
name=redis
baseurl=file:///opt/redis
enabled=1
gpgcheck=0
[root@redis2 ~]# yum clean all && yum repolist
...
源标识                                       源名称                                       状态
centos                                       centos                                       4,070
redis                                        redis                                            3
repolist: 4,073
...

安装redis服务

shell 复制代码
#redis1/redis2:
[root@redis1/2 ~]# yum -y install redis
#启动并设置服务开机自启
[root@redis1/2 ~]# systemctl start redis && systemctl enable redis
...

修改redis服务配置文件

shell 复制代码
#修改配置文件redis.conf
#具体修改内容如下:
#修改前的配置项:
[root@redis1/2 ~]# sed -n '61p;80p;128p;265p;272p;480p;593p' /etc/redis.conf
61 bind 127.0.0.1
80 protected-mode yes
128 daemonize no
265 # slaveof <masterip> <masterport>
272 # masterauth <master-password>
480 # requirepass foobared
593 appendonly no

#redis1:
[root@redis1 ~]# vi /etc/redis.conf									
61 #bind 127.0.0.1		#原来是生效的,将其注释
80 protected-mode no 	#原先是yes,改为no。这是允许外部网络进行访问
128 daemonize yes 		#原先是no,改为yes。这是开启守护进程
272 masterauth "123456"#去掉注释符,并设置主库密码
480 requirepass "123456" #去掉注释符,并设置访问密码
593 appendonly yes		#原先是no,改为yes。设置AOF持久化支持
#修改完后重启服务
[root@redis1 ~]# systemctl restart redis
#redis2:
[root@redis2 ~]# vi /etc/redis.conf
61 #bind 127.0.0.1		#原来是生效的,将其注释
80 protected-mode no 	#原先是yes,改为no。这是允许外部网络进行访问
128 daemonize yes 		#原先是no,改为yes。这是开启守护进程
265 slaveof 192.168.100.100 6379 #设置主节点IP和端口
272 masterauth "123456" #去掉注释符,并设置主库密码
480 requirepass "123456" #去掉注释符,并设置访问密码
593 appendonly yes		#原先是no,改为yes。设置AOF持久化支持
#修改完后重启服务
[root@redis2 ~]# systemctl restart redis

测试服务

shell 复制代码
#使用命令行客户端工具,指定连接的Redis服务器的地址、端口号和密码,查看当前Redis实例的复制状态信息
[root@redis1 ~]# redis-cli -h 192.168.100.100 -p 6379 -a 123456 info replication
# Replication
role:master		#当前角色是主节点
connected_slaves:1	#连接的从节点数量为1
slave0:ip=192.168.100.200,port=6379,state=online,offset=267,lag=1
#从节点的详细信息
#offset是从节点的复制偏移量,表示从节点已成功接收并复制的字节数
#lag是复制延迟,表示从节点落后于主节点的时间量/s
master_repl_offset:267	#主节点复制偏移量,这是主节点已发送给所有从节点的字节数。
repl_backlog_active:1	#复制回放缓冲区,为1说明在活跃,它用于保存主节点发送给从节点的命令和数据
repl_backlog_size:1048576	#复制回放缓冲区大小/byte
repl_backlog_first_byte_offset:2	#复制回放缓冲区的第一个字节的偏移量
repl_backlog_histlen:266	#复制回放缓冲区的历史长度/byte
[root@redis2 ~]# redis-cli -h 192.168.100.200 -p 6379 -a 123456 info replication 
# Replication
role:slave		#当前角色是主节点
master_host:192.168.100.100	#主节点IP
master_port:6379			#主节点端口
master_link_status:up		#与#主节点的连接状态,up说明正常
master_last_io_seconds_ago:3#上次与主节点进行I/O操作间隔/s
master_sync_in_progress:0	#是否正在进行同步操作
slave_repl_offset:281		#从节点的复制偏移量
slave_priority:100			#从节点优先级,选举新的主节点时使用,数值越小优先级越高
slave_read_only:1			#从节点是否只读,一般从节点是只读的,防止数据不一致
connected_slaves:0			#连接的从节点,一般从节点不会有自己的从节点
master_repl_offset:0		#主节点的复制偏移量
repl_backlog_active:0		#复制回放缓冲区
repl_backlog_size:1048576	#复制回放缓冲区大小/byte
repl_backlog_first_byte_offset:0	#复制回放缓冲区的第一个字节的偏移量
repl_backlog_histlen:0	#复制回放缓冲区的历史长度/byte

后语

没啥可说了,会持续更新的

相关推荐
CoderJia程序员甲3 小时前
重学SpringBoot3-集成Redis(一)
java·redis·缓存·springboot
speop3 小时前
408笔记|随笔记录|自用|2
java·redis·笔记
王维诗里的代码i4 小时前
Redis基础二(spring整合redis)
java·数据库·redis·spring
技术卷4 小时前
Redis数据库与GO完结篇:redis操作总结与GO使用redis
数据库·redis·golang
盒马盒马4 小时前
Redis:list类型
数据库·redis
神一样的老师5 小时前
构建5G-TSN测试平台:架构与挑战
5g·架构
huaqianzkh5 小时前
付费计量系统通用功能(13)
网络·安全·架构
wclass-zhengge5 小时前
Redis篇(Redis原理 - 网络模型)
网络·数据库·redis
周周写不完的代码5 小时前
redis-数据类型
数据库·redis·缓存
2402_857583496 小时前
新闻推荐系统:Spring Boot的架构优势
数据库·spring boot·架构