单台虚拟机配置redis集群一主两从
关闭防火墙与SELinux
#防火墙
systemctl stop firewalld.service
systemctl disable firewalld.service
#seslinux
sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
setenforce 0
#查看防火墙和selinux状态
systemctl status firewalld
getenforce
可以使用iaas的源或者上传软件包来安装redis服务
上传redis安装包 下载redis官网 https://redis.io/
安装C 语言的编译环境
yum install -y gcc
解压
tar -zxvf redis-6.2.1.tar.gz
cd redis-6.2.1
在redis-6.2.1目录下再次执行make命令
make #(只是编译好)
make install #安装
#安装后在/usr/local/bin目录下回出现脚本文件
修改配置文件,使redis后台启动
daemonize no #修改前
daemonize yes #修改后
创建/myredis文件
mkdir /myredis
复制redis配置文件
cp /opt/redis-6.2.1/redis.conf /myredis
配置一主两从,创建三个配置文件
touch /myredis/redis6379.conf #主
redis6379.conf #从
redis6379.conf #从
引入配置文件公共部分
vim redis6379.conf
include /myredis/redis.conf
pidfile /var/run/redis_6379.pid
port 6379
dbfilename dump6379.rdb
cp redis6379.conf redis6380.conf
#修改配置文件内容为6380
redis6380.conf 文件同上
启动服务
redis-server redis6379.conf
redis-server redis6380.conf
redis-server redis6381.conf
ps -ef | grep redis
#开三个窗口
redis-cli -p 6379
redis-cli -p 6380
redis-cli -p 6381
#打印主从复制的相关信息
info replication
配从不陪主
在从redis上执行
slaveof <ip><port>
#成为某个实例的从服务器
slaveof 127.0.0.1 6379
拓展
从服务器挂
当从服务器挂掉之后,再重启后会独立出来不会在作为主服务器的从服务器
要使它变为从服务器要重设
slaveof 127.0.0.1 6379
重新变为从服务器后会,还未重设前主机新增记录也会记录
主服务器挂
当主服务器挂掉之后,从服务器不做任何改变,主服务器重启后正常工作
薪火相传
上一个Slave可以是下一个slave的Master,Slave同样可以接收其他 slaves的连接和同步请求,那么该slave作为了链条中下一个的master, 可以有效减轻master的写压力,去中心化降低风险。
主——>从(主)——>从
反客为主
当一个master宕机后,后面的slave可以立刻升为master,其后面的slave不用做任何修改。
手动
#在从机上操作
slaveof no one
哨兵模式(主动反客为主)
自定义的/myredis目录下新建sentinel.conf文件 名字绝不能错
vi /myredis/sentinel.conf
配置哨兵 填写内容
sentinel monitor mymaster 127.0.0.1 6379 1
#mymaster为监控对象起的服务器名称, 1 为至少有多少个哨兵同意迁移的数量
启动哨兵
redis-sentinel /myredis/sentinel.conf
当主机挂掉,从机选举中产生新的主机
大概10秒左右可以看到哨兵窗口日志,切换了新的主机
优先级在redis.conf中默认,根据优先级别:replica-priority 值越小优先级越高
偏移量是指获得原主机数据最全的
每个redis实例启动后都会随机生成一个40位的runid
原主机重启后会变为从机
缺点:复制延时
由于所有的写操作都是先在Master上操作,然后同步更新到Slave上,所以从Master同步到Slave机器有一定的延迟,当系统很繁忙的时候,延迟问题会更加严重,Slave机器数量的增加也会使这个问题更加严重。