redis哨兵集群部署
一、准备工作。
服务器
|
部署应用 |
10.159.62.213 | 主节点 |
10.159.62.214 | 从节点1 |
10.159.62.215 | 从节点2 |
二、下载解压
三台机子同样的操作。
https://www.cnblogs.com/qq1445496485/p/16111053.html
三、修改redis.conf文件
1 2 | mkdir -p /usr/local/redis/log # 日志文件 mkdir -p /usr/local/redis/6379 # 指定数据库存放路径 |
1、修改213 redis.conf配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | # 开启守护进程 daemonize yes # masterauth <master-password> masterauth 123456 # 确保有1个从节点写入,且延时不超过10s,否则主节点会停止写入请求(防止数据丢失) # redis版本5之前是 min-slaves-to-write 和 min-slaves-max-lag 10 # redis版本5开始是 min-replicas-to-write 和 min-replicas-max-lag 10 min-replicas-to-write 1 min-replicas-max-lag 10 # redis密码 requirepass 123456 # 开启AOF持久化功能 appendonly yes # 设定日志文件路径 logfile "/usr/local/redis/log/redis.log" |
2、修改214 215 的 redis.conf 配置
就多了一个 replicaof <masterip> <masterport> 配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | # 开启守护进程 daemonize yes # 修改IP和端口 replicaof <masterip> <masterport> replicaof 10.159.62.213 6379 # 主节点密码 masterauth <master-password> masterauth 123456 # 确保有1个从节点写入,且延时不超过10s,否则主节点会停止写入请求(防止数据丢失) # redis版本5之前是 min-slaves-to-write 和 min-slaves-max-lag 10 # redis版本5开始是 min-replicas-to-write 和 min-replicas-max-lag 10 min-replicas-to-write 1 min-replicas-max-lag 10 # redis密码 requirepass 123456 # 开启AOF持久化功能 appendonly yes # 设定日志文件路径 logfile "/usr/local/redis/log/redis.log" |
四、运行三台redis,查看主从信息
Redis 和 Sentinel,启动具体顺序为:Redis(主)-> Redis(从)->Redis(从)->Sentinel(1)->Sentinel(2)->Sentinel(3)
这里先运行redis,sentinel在下面
运行命令
1 2 | cd /usr/local/redis/bin/ . /redis-server redis.conf |
五、修改sentinel.conf文件
三台机子修改一样
1 | vi /usr/local/redis/bin/sentinel .conf |
1 2 3 4 5 6 7 8 9 | protected-mode no #关闭保护模式 daemonize yes #指定sentinel为后台启动 logfile "/usr/local/redis/log/sentinel.log" #指定日志存放路径 dir "/usr/local/redis/6379" #指定数据库存放路径 sentinel monitor mymaster 10.159.62.213 6379 2 #至少几个哨兵检测到主服务器故障了,才会进行故障迁移,全部指向masterIP sentinel down-after-milliseconds mymaster 30000 #判定服务器down掉的时间周期,默认30000毫秒(30秒) sentinel failover-timeout mymaster 180000 #故障转移的的最大超时时间为180000(180秒) sentinel parallel-syncs mymaster 1 #新的master切换之后,同时有几个slave被切换到去连接新master,重新做同步,数字越低,花费的时间越多 sentinel auth-pass mymaster 123456 #主节点密码 |
六、启动sentinel
1 2 | cd /usr/local/redis/bin/ . /redis-sentinel sentinel.conf |
七、查看哨兵信息
1 2 | cd /usr/local/redis/bin/ . /redis-cli -h 10.159.62.213 -p 26379 info Sentinel |
八、尝试在主节点上新增主键 并且在从节点上查看以及修改。
可以看见,在主节点上新增key之后,从节点是同步的。但是在从节点上不能新增、编辑、删除key。
九、故障模拟
1、把213的主节点停掉,查看sentinel.log日志。
2、首先214发现213下线,这是主观宕机(sdown);我们在sentinel.conf中设置了 sentinel monitor mymaster 10.159.62.213 6379 2 ,这里的2代表需要两个哨兵都认为主节点宕了才算是真正下线(客观宕机 odown),然后在进行选举。
接着215也发现了213下线,达到了2台,随后开始选举。
3、重新查看哨兵信息 发现现在215是主节点
1 2 | cd /usr/local/redis/bin/ redis-cli -p 26379 INFO Sentinel |
尝试去修改key对应的value值,发现213的机子已经不能修改了,而新的主节点 215是可以的。
分类:
Linux
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
2021-06-30 -bash: /usr/local/maven/apache-maven-3.8.1/bin/mvn: 权限不够
2021-06-30 复制docker容器中的nginx某个文件到linux中