Redis安装(单机版) https://lupf.cn/articles/2020/04/06/1586153137483.html 当主从所有机器都按上面的方式安装好Redis,且保证Redis本机下能正常启动之后,就可以按以下当时做主从配置了
// 1. 第一个参数 bind 就是redis绑定的ip,默认为127.0.0.1;意味着只能本机访问,其他机器访问不了
// 将本机的ip添加进去
bind 192.168.1.140 127.0.0.1
// 2. 第二个参数,从节点只读,默认就是打开的,确认一下
slave-read-only yes
// 3. redis的认证密码
requirepass
// 设置之后,客户端可以通过-a参数指定密码连接:redis-cli -a 123456789
// 或者进去之后通过指令:auth 123456789 进行认证
// 4. redis的master节点的连接口令
masterauth
// 从节点添加以上主节点的所有配置
// 额外添加项
// 设置主节点的ip端口
// slaveof <masterip> <masterport>
slaveof 192.168.1.140
// 第一种方式,将防火墙关了
// 第二种方式,添加端口开放;如果防火墙开着,又不配置端口开放,从节点将无法连接主节点
iptables -A INPUT -ptcp --dport -j ACCEPT
info replication
// 主节点修改,从节点查询
// redis自带提供了压测工具,位于:redis-4.0.1/src 下
redis-benchmark -h 192.168.1.140
哨兵模式
集群监控
;负责监控master和slave是否健康存在消息通知
;当存在节点不可用时,哨兵将消息通知给管理员故障迁移
;当master挂了之后,哨兵会选举一个slave替代master,实现故障迁移配置中心
;当slave提升为master,会将迁移之后的master节点地址通知给客户端(client)
// 创建用于保存哨兵配置文件的目录
mkdir -p /etc/sentinal
mkdir -p /var/sentinal/26379
// 拷贝哨兵
cp /usr/local/redis-4.0.1/sentinel.conf /etc/sentinal/26379.conf
vim /etc/sentinal/26379.conf
// 修改一下配置
// 以守护进程允许
daemonize yes
# 绑定的端口
port
# 绑定的ip 本机IP
bind 192.168.1.140
# 持久化的目录
dir /var/sentinal/26379/
# 这里需要注意的是 所有哨兵节点的IP都是填master的地址
sentinel monitor mymaster 192.168.1.142 6379 2
sentinel down-after-milliseconds mymaster 30000
sentinel failover-timeout mymaster 60000
sentinel parallel-syncs mymaster 1
sentinel auth-pass mymaster 123456789
// 在其他两台机器上采用以上相同的方式配置,除了IP配置成本机
mymaster 给监控的master设置一个别名;一个哨兵可以监控多个master
192.168.1.142 标识当前主节点
quorum
1. 至少达到多少个哨兵达成一致,认为master挂了,才做故障迁移
2. quorum只是作为一个故障识别,最终的选举还是有哨兵集群一起完成的
超过多久没连上master,哨兵就主观认为他挂了
故障迁移,切换新的master的超时时间
当新的master选出来之后,每次有多少个slaves去连接master做同步
redis-sentinel /etc/sentinal/.conf
// 或者
redis-server /etc/sentinal/.conf --sentinel
PING
sentinel回复PONG
SENTINEL masters
显示被监控的所有master以及它们的状态.SENTINEL master <master name>
显示指定master的信息和状态SENTINEL slaves <master name>
显示指定master的所有slave以及它们的状态SENTINEL get-master-addr-by-name <master name>
返回指定master的ip和端口,如果正在进行failover或者failover已经完成,将会显示被提升为master的slave的ip和端口SENTINEL reset <pattern>
重置名字匹配该正则表达式的所有的master的状态信息,清楚其之前的状态信息,以及slaves信息SENTINEL failover <master name>
强制sentinel执行failover,并且不需要得到其他sentinel的同意。但是failover后会将最新的配置发送给其他sentinel当前192.168.1.142为master节点,现在我们将其手动停掉,用来测试故障迁移
redis-cli -h 192.168.1.142 -a 123456789 shutdown
可以看到,master已经成功迁移到了新的节点;
min-slaves-to-write
min-slaves-max-lag
// 表示,至少有一个salve,数据复制和同步的延迟不能超过s,一旦超过,master就停止接受任何写请求