Redis主从复制以及哨兵部署

1.环境准备

主机名ip角色
server51192.168.88.51Redis节点
server52192.168.88.52Redis节点
server53192.168.88.53Redis节点
sentinel54192.168.88.54Sentinel节点
sentinel55192.168.88.55Sentinel节点
sentinel56192.168.88.56Sentinel节点

2.主从复制原理

  1. 从节点向主节点发送SYNC命令,请求进行复制。
  2. 主节点收到请求后,执行BGSAVE命令生成RDB文件,并将该文件发送给从节点进行初步同步。
  3. 主节点将所有写命令记录到缓冲区中,等待同步给从节点。
  4. 从节点接收到主节点的RDB文件,并加载到自己的内存中,并通过与主节点的连接,获取缓冲区中的写命令。
  5. 从节点将缓冲区中的写命令应用到自己的数据集中,完成数据同步。
  6. 当新的写命令来到时,主节点会将这些写命令发送给所有连接的从节点,从节点再继续将新的写命令应用到自己的数据集中,完成数据同步。
  7. 在主从复制过程中,主节点通过RDB文件和AOF文件来实现数据的持久化,保证数据的可靠性和一致性。从节点可以通过主节点的缓冲区和AOF文件来获取最新的写命令,并实现与主节点的同步。同时,主节点和从节点之间采用了心跳机制来确保连接的稳定性和有效性

 3.准备环境redis节点部署(安装redis)

#编译安装Redis
[root@server51 ~]# ls redis-4.0.8.tar.gz   #将redis tar包上传
redis-4.0.8.tar.gz
[root@server51 ~]# yum -y install gcc
...
[root@server51 ~]# tar -xf redis-4.0.8.tar.gz 
[root@server51 ~]# cd redis-4.0.8/
[root@server51 redis-4.0.8]# make && make install 

[root@server51 redis-4.0.8]# ./utils/install_server.sh 		#一路回车
...
Installation successful!
#初始化Redis配置
[root@server51 redis-4.0.8]# vim /etc/redis/6379.conf 
[root@server51 redis-4.0.8]# sed -rn '70p;89p' /etc/redis/6379.conf 
bind 0.0.0.0		#监听所有网络
protected-mode no	#关闭保护模式
[root@server51 redis-4.0.8]# vim /etc/init.d/redis_6379 		#处理脚本bug
[root@server51 redis-4.0.8]# sed -rn '43,44p' /etc/init.d/redis_6379 
            #$CLIEXEC -p $REDISPORT shutdown
            pkill redis-server
[root@server51 redis-4.0.8]# /etc/init.d/redis_6379 restart

[root@server51 redis-4.0.8]# ss -pantul | grep redis
tcp    LISTEN     0      128       *:6379
#server52,server53做同样操作

4.redis的一主一从和主从从

#1.命令行设置主从结构

[root@server51 ~]# redis-cli info replication | grep role
role:master		#默认为主角色
#将server52设为51的从(临时)
[root@server52 ~]# redis-cli slaveof 192.168.88.51 6379
OK
[root@server52 ~]# redis-cli info replication | grep role
role:slave
#主从从结构 将server53加入到52的从  (此时52的角色还是slave)
[root@server53 ~]# redis-cli slaveof 192.168.88.52 6379	
OK

#Redis角色验证
[root@server53 ~]# redis-cli info replication 		#查看server53的Redis主从信息
# Replication
role:slave
master_host:192.168.88.52
master_port:6379
master_link_status:up

5.搭建一主多从‘

#还原各Redis节点为独立主节点
[root@server52 ~]# redis-cli slaveof no one					#命令行还原
OK
[root@server53 ~]# /etc/init.d/redis_6379 restart			#重启服务还原
#server51主节点配置
[root@server51 ~]# vim /etc/redis/6379.conf 
[root@server51 ~]# sed -rn '501p' /etc/redis/6379.conf 		#设置访问密码
requirepass 123456
[root@server51 ~]# /etc/init.d/redis_6379 restart			#重启使配置生效
[root@server51 ~]# redis-cli -a 123456 ping					#测试密码连接
PONG
#server52配置为server51的从
[root@server52 ~]# vim /etc/redis/6379.conf 
[root@server52 ~]# sed -rn '282p;289p' /etc/redis/6379.conf 
slaveof 192.168.88.51 6379
masterauth 123456
[root@server52 ~]# /etc/init.d/redis_6379 restart
#server53配置为server51的从
[root@server53 ~]# vim /etc/redis/6379.conf 
[root@server53 ~]# sed -rn '282p;289p' /etc/redis/6379.conf
slaveof 192.168.88.51 6379
masterauth 123456
[root@server53 ~]# /etc/init.d/redis_6379 restart
#最后查看各节点角色

6.Redis哨兵

#取消server51的密码配置
[root@server51 ~]# sed -rn '501p' /etc/redis/6379.conf 
# requirepass 123456
[root@server52 ~]# sed -rn '289p' /etc/redis/6379.conf 
# masterauth 123456
[root@server53 ~]# sed -rn '289p' /etc/redis/6379.conf 
# masterauth 123456
#编译安装Redis(54,55,56同样操作)
[root@server54 ~]# ls redis-4.0.8.tar.gz 
redis-4.0.8.tar.gz
[root@server54 ~]# yum -y install gcc
[root@server54 ~]# tar -xf redis-4.0.8.tar.gz 
[root@server54 ~]# cd redis-4.0.8/
[root@server54 redis-4.0.8]# make && make install

 7.编写哨兵主配置文件

[root@server54 ~]# vim /etc/sentinel.conf
[root@server54 ~]# cat /etc/sentinel.conf 
bind 0.0.0.0
port 26379
daemonize yes
sentinel monitor mymaster 192.168.88.51 6379 2    #3个哨兵2个即可
dir "/var/lib/redis/"
logfile "/var/log/sentinel.log"
loglevel notice
[root@server54 ~]# mkdir /var/lib/redis

#启动哨兵服务
[root@server54 ~]# redis-sentinel /etc/sentinel.conf 
[root@server54 ~]# ss -pantul | grep 26379
tcp    LISTEN     0      128       *:26379                 *:*                   users:(("redis-sentinel",pid=4323,fd=6))

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值