Redis组建哨兵模式

主172.17.60.131

从172.17.60.130、172.17.60.129

redis部署

[root@localhost app]# tar xf redis-6.2.9.tar.gz

[root@localhost app]# cd redis-6.2.9/

[root@localhost redis-6.2.9]# make MALLOC=libc

[root@localhost redis-6.2.9]# make install PREFIX=/usr/local/redis

# 进入 Redis 的主目录
cd /usr/local/redis/

# 创建工作目录 tmp
mkdir tmp

# 创建日志目录 log
mkdir log

# 编辑 Redis 配置
vim redis.conf

# 编辑哨兵配置
vim sentinel.conf

主节点131-redis.conf:

# 表示redis允许所有地址连接。默认127.0.0.1,仅允许本地连接。
bind 0.0.0.0

# 允许redis后台运行
daemonize yes

# 设置redis日志存放路径
logfile "/usr/local/redis/log/redis.log"

# 设置为no,允许外部网络访问
protected-mode no

# 修改redis监听端口(可以自定义)
port 6379

# pid存放目录
pidfile "/var/run/redis_6379.pid"

# 工作目录,需要创建好目录,可自定义
dir "/usr/local/redis/tmp"

# 设置redis密码
requirepass "password"

# 主从同步master的密码
masterauth "password"

从节点129和130-redis.conf:

# 表示redis允许所有地址连接。默认127.0.0.1,仅允许本地连接。
bind 0.0.0.0

# 允许redis后台运行
daemonize yes

# 设置redis日志存放路径
logfile "/usr/local/redis/log/redis.log"

# 设置为no,允许外部网络访问
protected-mode no

# 修改redis监听端口(可以自定义)
port 6379

# pid存放目录
pidfile "/var/run/redis_6379.pid"

# 工作目录,需要创建好目录,可自定义
dir "/usr/local/redis/tmp"

# 设置redis密码
requirepass "password"

# 主从同步master的密码
masterauth "password"

# 多了这一行,用于追随某个节点的redis,被追随的节点为主节点,追随的为从节点,Redis5.0前版本可使用slaveof
replicaof 172.17.60.131 6379

所有节点-sentinel.conf:

# 修改Sentinel监听端口
port 26379

# 允许Sentinel后台运行
daemonize yes

# 设置Sentinel日志存放路径
logfile "/usr/local/redis/log/sentinel.log"

# 工作目录,需要创建好目录,可自定义
dir "/usr/local/redis/tmp"

# Sentinel 监听 redis 主节点, mymaster:master名称可自定义,127.0.0.1 6379 :redis主节点IP和端口,2 :表示多少个Sentinel认为redis主节点失效时,才算真正失效
sentinel monitor mymaster 172.17.60.131 6379 2

# 配置失效时间,master会被这个sentinel主观地认为是不可用的,单位毫秒
sentinel down-after-milliseconds mymaster 10000

# 若sentinel在该配置值内未能完成master/slave自动切换,则认为本次failover失败。
sentinel failover-timeout mymaster 60000

# 在发生failover主备切换时最多可以有多少个slave同时对新的master进行同步。
sentinel parallel-syncs mymaster 2

# 设置连接master和slave时的密码,注意的是sentinel不能分别为master和slave设置不同的密码,因此master和slave的密码应该设置相同
sentinel auth-pass mymaster password

先启动redis-server,主->从:

[root@localhost bin]# ./redis-server redis.conf

[root@localhost bin]# ./redis-cli

127.0.0.1:6379> auth password

OK

127.0.0.1:6379> info replication

# Replication

role:master

connected_slaves:2

slave0:ip=172.17.60.130,port=6379,state=online,offset=453292,lag=0

slave1:ip=172.17.60.129,port=6379,state=online,offset=453151,lag=1

master_failover_state:no-failover

master_replid:925019c35af42325afa5e3a1bd38957ad1bf7432

master_replid2:f090ed5937de77bc74d32ef37e38ba0aefd4b797

master_repl_offset:453292

second_repl_offset:279938

repl_backlog_active:1

repl_backlog_size:1048576

repl_backlog_first_byte_offset:253944

repl_backlog_histlen:199349

再启动redis-sentinel:

[root@localhost bin]# ./redis-sentinel sentinel.conf

[root@localhost bin]# ./redis-cli -h 172.17.60.131 -p 26379 info sentinel

# Sentinel

sentinel_masters:1

sentinel_tilt:0

sentinel_running_scripts:0

sentinel_scripts_queue_length:0

sentinel_simulate_failure_flags:0

master0:name=mymaster,status=ok,address=172.17.60.131:6379,slaves=2,sentinels=3

主节点宕机测试

先模拟一下挂掉 redis 主节点。

  1. 使用 ps -ef | grep redis 找到 redis 主节点对应的进程 id
  2. 使用 kill -9 xxx 杀掉 redis 主节点 id

master地址发生了改变:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值