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节点
redis1192.168.100.100主节点
redis2192.168.100.200从节点

操作过程

关闭防火墙和Selinux

#两个节点均关闭防火墙并禁止其开机自启
[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

修改主机名

#修改两台机子的主机名
[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目录

[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源

#这里两个节点都要配置
#创建挂载目录
[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服务

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

修改redis服务配置文件

#修改配置文件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

测试服务

#使用命令行客户端工具,指定连接的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

后语

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

  • 7
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值