redis 主从安装部署,redis主从加keepalived高可用安装部署

前言

一主多从
在这种架构模式下,Master 节点和Slave 节点的数据完全一致,Master 节支持数据的写入和读取等各项操作,而Slave 节点则只支持与Master 节点数据的同步和读取。也就是说,客户端将数据写入到Master 节点,由Master 节点自动将数据的写入操作同步到Slave 节点。(当主节点的数据发生变化时,会将变化的数据同步给从节点,这样从节点的数据就可以和主节点的数据保持一致了)。

主从模式很好的解决了数据备份问题,并且由于主从服务数据几乎是一致的,因而可以将写入数据的命令发送给主机执行,而读取数据的命令发送给不同的从机执行,从而达到读写分离的目的

环境信息

在这里插入图片描述

系统IP/PortServer
Centos7.6192.168.67.100VIP
Centos7.6192.168.67.130/6379redis-5.0.9、keepalived-1.3.5
Centos7.6192.168.67.131/6389redis-5.0.9、keepalived-1.3.5

一,redis主从部署

1.1下载安装redis master

yum -y install gcc
tar -zxf redis-5.0.7.tar.gz 
wget https://download.redis.io/releases/redis-5.0.7.tar.gz
make PREFIX=/usr/local/redis install 
mkdir /usr/local/redis/{etc,logs,data}
cd /usr/local/redis/
cp redis.conf /usr/local/redis/etc/

修改Master的redis.conf配置文件

bind 127.0.0.1                      # 正式部署请设为合适的 IP
port 6379                           #修改端口 根据节点修改
protected-mode no 				    #关闭保护模式(开启要设置bind和密码)
daemonize yes						#以独立进程启动
pidfile /var/run/redis_6379.pid  #服务ID文件名称及地址更改防止冲突
dir /tmp/redis-ms             # Redis 的工作目录(若不存在需手建否则无法启动),logfile 与 dbfilename 受其影响
logfile "/usrlocal/redis/logs/redis-6389.log"  #Redis 日志名称(默认不配置,表示输出到 stdout),正式部署请设置为合适的名称
appendonly yes       			//开启AOF持
appendfilename "appendonly.aof"   #配置AOF持久化文件名
dbfilename no        #RDB持久化
dbfilename dump-6379.rdb      # Redis 数据持久化时的存储位置,正式部署请设置为合适的名称
masterauth password 		# 密码一样
requirepass password 	# 密码

启动redis

./bin/redis-server /etc/redis.conf

设置systemctl启动

vim /usr/lib/systemd/system/redis.service

[Unit]
Description=redis
After=network.target
[Service]
Type=forking
PIDFile=/var/run/redis_6379.pid  #自行变更
ExecStartPost=/bin/sleep 0.1
ExecStart=/usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf  #自行变更
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true

[Install]
WantedBy=multi-user.target

1.2 按照2.1安装redis slave

修改slave的redis.conf配置文件

bind 127.0.0.1                      # 正式部署请设为合适的 IP
port 6379                           #修改端口 根据节点修改
protected-mode no 				    #关闭保护模式(开启要设置bind和密码)
daemonize yes						#以独立进程启动
pidfile /var/run/redis_6379.pid  #服务ID文件名称及地址更改防止冲突
dir /tmp/redis-ms             # Redis 的工作目录(若不存在需手建否则无法启动),logfile 与 dbfilename 受其影响
logfile "/usrlocal/redis/logs/redis-6379.log"  #Redis 日志名称(默认不配置,表示输出到 stdout),正式部署请设置为合适的名称
appendonly yes       			//开启AOF持
appendfilename "appendonly.aof"   #配置AOF持久化文件名
dbfilename no        #RDB持久化
dbfilename dump-6379.rdb      # Redis 数据持久化时的存储位置,正式部署请设置为合适的名称
masterauth password 		# 密码一样
requirepass password 	# 密码
slaveof 127.0.0.1 6379      # 标注所从属的主机,一般不建议写配置文件

1.3 做redis主从

登录从机器,是当前服务器对130机器同步

redis-cli -h 192.168.67.131 -p 6389   # 连接到 Redis 从机
slaveof 192.168.67.130 6379 #
或
replicaof 192.168.67.130 6379 

info replication #查看主从

1.4 测试

登录master服务器

redis-cli -h 192.168.67.130 -p 6389   # 连接到 Redis 主机

现在在 Redis Master 的客户端写入数据(执行set 命令,为键 name设置数据)
192.168.67.130:6389> set name1 ap
OK

登录从机器查看数据是否同步过去

info replication #查看状态
192.168.67.131:6389> get name1
"ap"

在从机器能获取到刚刚在master写入的key,完成主从部署。

1.5 知识点

1.5.1 Redis实现主从同步可以有两种方式

  • 配置命令的方式
./redis-server --slaveof 192.168.1.10 6379 #启动从节点时,通过参数--slaveof指定主节点是谁。
slaveof <Redis主库IP> <Redis主库端口> #通过redis-cli的命令行执行slaveof
replicaof <Redis主库IP> <Redis主库端口>
  • 配置文件方式
vim redis.conf
slaveof 127.0.0.1 6379      # 标注所从属的主机,一般不建议写配置文件

1.5.2 主从同步相关参数

1、slave-serve-stale-data
在Redis主从同步中,当Redis从服务器发现Redis主服务器不可用时,无法判断自己的数据是否已经过期,如果此时Redis从服务器收到读的请求,则可以会响应过期的数据。如果此参数为yes,则表示Redis从服务器仍然会以可能过期的数据进行响应,但是如果此参数为no,则表示Redis从服务器不会响应读请求。
2、slave-read-only
当此参数为yes时,则此Redis服务器将只会响应读请求,该参数默认关闭,在Redis从库上回默认开启。
3、repl-diskless-sync
该参数表示是否开去无磁盘交互模式,默认为no,即不开启,也可以手动更改为yes,表示开启。所谓无磁盘交互模式,就是指Redis主和Redis从在进行主从同步时,Redis主同步给Redis从的数据文件不会被写入磁盘中,Redis从服务器会直接将该数据文件读取处理后放入内存,而如果该参数不开启,则Redis从库会将数据文件放入磁盘中,然后再读入内存。
4、repl-diskless-sync-delay
该参数表示在进行无磁盘交互模式下Redis从库的延迟时间,该参数默认单位为秒,默认为5.
5、slave-priority
该参数指定Redis从库的优先级,通常用于主从同步结合Redis sentinel进行高可用配置时使用,该优先级数值越小,表示优先级越高,在默认情况下,该参数值为100.
6、min-slaves-to-write
该参数表示在Redis主从同步过程中,一个Redis主库所对应的最少的从库数量,当少于该参数指定的数量时,Redis主库将拒绝从库读取数据的请求。该参数在默认情况下处于关闭状态。
7、min-slaves-max-lag
表示Redis主库与Redis从库之间的最大时差,当时差超过该值时,就无法进行主从同步。该参数在默认情况下处于关闭状态。

参数 protected-mode no
我们想要其他机连接我们的Redis服务,有三种方式:

  • 想办法让Redis运行在protected-mode为no的模式,
  • 如果protected-mode为yes,那么我们可以在Redis服务上设置bind,也就是我们的一台机器有几个ip,指定我们的服务绑定监听本机的哪个ip。
  • 如果protected-mode为yes,除了设置bind外,亦可通过设置密码的形式,也即是设置参数requirepass,从而达到可以从其他机器访问的目标。

二,Keepalived吧部署

2.1 下载keepalived-1.3.5.tar.gz ,上传到/home/

keeplived 下载链接

tar zxf keepalived-1.3.5.tar.gz 
cd keepalived-1.3.5
./configure u --prefix=/usr/local/keepalived
make && make install
mkdir -p /etc/keepalived/scripts
mkdir -p /etc/keepalived/log
cp /usr/local/keepalived/sbin/keepalived   /usr/sbin/
cp /usr/local/keepalived/etc/sysconfig/keepalived   /etc/sysconfig/
cp /usr/local/keepalived/etc/keepalived/keepalived.conf  /etc/keepalived/
cp /home/keepalived-1.3.5/keepalived/etc/init.d/keepalived /etc/init.d/

2.2 修改配置文件

redis-master

vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived

global_defs {
   notification_email {
     acassen@firewall.loc
     failover@firewall.loc
     sysadmin@firewall.loc
   }
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 192.168.200.1
   smtp_connect_timeout 30
   router_id redis01
}

vrrp_script chk_redis {
    script "/etc/keepalived/script/redis_check.sh"
    interval 2
}

vrrp_instance VI_1 {
    state MASTER
    interface ens33
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_s33
    }

    track_script {
        chk_redis
    }
    virtual_ipaddress {
        192.168.67.100
    }

    notify_master /etc/keepalived/script/redis_master.sh
    notify_backup /etc/keepalived/script/redis_backup.sh
    notify_fault  /etc/keepalived/script/redis_fault.sh
    notify_stop   /etc/keepalived/script/redis_stop.sh
}

redis-slave

! Configuration File for keepalived

global_defs {
   notification_email {
     acassen@firewall.loc
     failover@firewall.loc
     sysadmin@firewall.loc
   }
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 192.168.200.1
   smtp_connect_timeout 30
   router_id redis02 ##更改
}

vrrp_script chk_redis {
    script "/etc/keepalived/script/redis_check.sh"
    interval 2
}

vrrp_instance VI_1 {
    state BACKUP
    interface ens33   ##更改
    virtual_router_id 51
    priority 99   ##更改
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }

    track_script {
        chk_redis
    }
    virtual_ipaddress {
        192.168.67.100    ##更改VIP
    }

    notify_master /etc/keepalived/script/redis_master.sh
    notify_backup /etc/keepalived/script/redis_backup.sh
    notify_fault  /etc/keepalived/script/redis_fault.sh
    notify_stop  /etc/keepalived/script/redis_stop.sh
}

2.3 设置systemctl启动

增加系统服务

chkconfig --add keepalived

正在将请求转发到“systemctl enable keepalived.service”

chkconfig keepalived on

修改启动文件

vim /usr/lib/systemd/system/keepalived.service 
PIDFile=/var/run/keepalived.pid

启动
systemctl start keepalived

2.4 模拟故障VIP漂移测试

主130关闭redis
在这里插入图片描述

查看131上有无vip
在这里插入图片描述

新master节点131插入数据
在这里插入图片描述

启动130节点
在这里插入图片描述
131变成Slave节点,130变回了Master。
在130上能查看到刚刚在131上插入的数据。

总结:Maste(130)节点宕机,VIP漂到Slave(131)节点,Slave(131)节点变成新Master(131)节点。新Master(131)节点插入数据,130节点启动后,130变回Master(130)节点,可以查到在131插入的数据。

链接: Redis 全套 安装部署、迁移、参数详解

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Redis主从分片部署是一种分布式部署方案,将Redis数据库分为主服务器和从服务器,并将数据按照一定规则进行分片存储。 主从分片部署的优势主要体现在以下几个方面: 首先,通过主从分片,可以将数据库的读写操作分散到多台服务器上,提高了系统的并发处理能力和整体性能。主服务器负责接收客户端的写操作,并将写操作同步到从服务器上,而从服务器则负责处理读操作,实现了读写分离。 其次,主从分片部署还增了系统的可用性和容错性。当主服务器出现故障或者宕机时,可以自动切换到从服务器上,提供持续的服务。同时,当系统的读写负载较大时,可以通过增从服务器的数量来进行横向扩展,提高了系统的承载能力。 此外,主从分片部署还有助于提高系统的数据安全性。主服务器在接收到客户端的写操作后,会将写操作同步到从服务器上,保证数据的一致性。而从服务器则可以作为数据的备份,当主服务器出现故障时,可以将从服务器提升为主服务器,保证数据的持久性。 总结来说,Redis主从分片部署是一种有效提高系统性能、可用性和数据安全性的分布式部署方案。通过将数据库按照一定规则进行分片存储,并通过主从同步机制实现读写分离和故障转移,可以提高系统的并发处理能力、容错性和数据一致性,适用于大规模数据存储和高并发访问的场景。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值