1.哨兵高可用
主从存在的问题:
主从复制,主节点发生鼓掌,可以手动转移,让其中一个slave变成master,这就是哨兵
主从复制,只能是主来写数据,所以写的能力和存储能力有限,需要做集群
哨兵:sentinel
哨兵就是一个redis进程
哨兵的工作原理:
1.多个sentinel发现并确认master有问题
2.选取出一个sentinel作为领导
3.选取一个slave作为新的master
4.通知其余slave成为新的master的salve
5.通知客户端主从变化
6.等待老的master复活成为新的master的slave
先搭建一主两从:
1.现将6379端口的配置文件复制一份到redis_6390.conf:
cp redis_6379.conf redis_6390.conf
2.配置从
daemonize yes
port 6390
dir "/root/redis-6.2.9/data2"
logfile "6390.log"
appendonly yes
appendfilename "appendonly.aof"
appendfsync everysec
no-appendfsync-on-rewrite yes
aof-use-rdb-preamble yes
slaveof 127.0.0.1 6379
slave-read-only yes
3.需要在redis目录下新建data2目录:
mkdir data2
4.然后我们启动从:
./src/redis-server ./redis_6381.conf &
5.再启动主:
./src/redis-server ./redis_6379.conf &
6.连接客户端:
# -p是指端口,不写默认连接6379
./src/redis-cli -p 6381
7.连接6379的服务端:
./src/redis-cli
info # info查看服务端信息
1.redis操作哨兵
高可用架构后,不能直接连接某一个主库了,因为主库可能会挂掉,后来它就不是主库了
之前的链接redis的操作(不能用了):
import redis
conn=redis.Redis(host='',port=6379)
conn.set()
conn.close()
新的连接哨兵的操作:
1.搭建哨兵:
vim sentinel_26379.conf # 配置26380,26381时将数字改掉
2.配置哨兵,配置三个端口的哨兵,分别是26379,26380,26381:
port 26379
daemonize yes
dir data
protected-mode no
bind 0.0.0.0
logfile "redis_sentinel.log"
sentinel monitor mymaster 127.0.0.1 6379 2
sentinel down-after-milliseconds mymaster 30000
sentinel parallel-syncs mymaster 1
sentinel failover-timeout mymaster 180000
哨兵26380:
port 26380
daemonize yes
dir data
protected-mode no
bind 0.0.0.0
sentinel monitor mymaster 127.0.0.1 6379 2
sentinel down-after-milliseconds mymaster 30000
sentinel parallel-syncs mymaster 1
sentinel failover-timeout mymaster 180000
哨兵26381:
port 26381
daemonize yes
dir data
protected-mode no
bind 0.0.0.0
sentinel monitor mymaster 127.0.0.1 6379 2
sentinel down-after-milliseconds mymaster 30000
sentinel parallel-syncs mymaster 1
sentinel failover-timeout mymaster 180000
3.配置一主两从:
首先配置主库:
vim redis_6379.conf
daemonize no
bind 0.0.0.0
protected-mode no
port 6379
timeout 0
dir /data
配置从库6380:
vim redis_6380.conf
daemonize no
bind 0.0.0.0
protected-mode no
port 6380
timeout 0
dir /data
slaveof 127.0.0.1 6379 # 是6379的从库
slave-read-only yes
配置从库6381:
daemonize no
bind 0.0.0.0
protected-mode no
port 6381
timeout 0
dir /data
slaveof 127.0.0.1 6379
slave-read-only yes
4.在redis根路径创建 data目录
mkdir /data
5.启动三个:
./src/redis-server ./redis_6379.conf & # 加&表示在后台运行
# 如果提示端口被占用,先用kill -9停止进程
./src/redis-server ./redis_6380.conf &
./src/redis-server ./redis_6381.conf &
6.查看进程:
ps aux |grep redis
7.连接主库6379,设置name:
./src/redis-cli -p 6379
set name max
8.退出,连接从库,查看name,发现有值:
exit
./src/redis-cli -p 6380
get name # max
标签:mymaster,0.0,redis,哨兵,6379,conf,sentinel
From: https://www.cnblogs.com/ERROR404Notfound/p/17347370.html