基于docker的高可用redis集群搭建

简介


sentinel可用于监控redis集群的状态,当redis主库不可用时,sentinel可通过选举,选择出新的主库,达到redis集群自动切换主库的一个高可用状态。

获取sentinel配置信息


wget http://download.redis.io/redis-stable/sentinel.conf
复制代码

redis集群启动


主库启动


#sh docker_restart.sh <库名称> <端口> 
sh docker_restart.sh redis-master 6300
# 进入容器 
docker exec -it redis-master bash
# 连接redis 
redis-cli -a lindj -p 6300
# 设置主库密码
config set masterauth lindj
复制代码

从库1启动


#sh docker_restart.sh <库名称> <端口> 
sh docker_restart.sh redis-slave1 6301
# 进入容器 
docker exec -it redis-slave1 bash
# 连接redis 
redis-cli -a lindj -p 6301
# 连接主库
slaveof 192.68.1.92 6300
# 设置主库密码
config set masterauth lindj
复制代码

同理按照从库1的启动流程 启动从库2 redis-slave2

具体集群的搭建可参考基于docker的redis集群搭建

sentinel配置


#lindj-master:自定义集群名
#<master-redis-ip>:主库ip
# <master-redis-port>:主库port 
#<quorum>:最小投票数,由于有三台redis-sentinel实例,所以可以设置成2
sentinel monitor lindj-master 192.168.1.92 6300 2

# redis集群密码
sentinel auth-pass lindj-master lindj

# 添加后台运行
daemonize yes
复制代码

启动sentinel


sh docker_restart.sh <sentinel名称>
# 进入容器 
docker exec -it sentinel-master bash
# 加载配置
redis-sentinel /usr/local/etc/redis/sentinel.conf
复制代码

docker_start.sh文件内容

#!/bin/sh
application_name=$1
echo "application=${application_name}"
echo "container is stoping and removing"

containerId=$(docker ps -a | grep -E "${application_name}" | awk '{print $1}')

if [ ! -z $containerId ]
  then docker stop $containerId && docker rm $containerId
fi

echo "container is running"

docker run -it --name ${application_name} \
           -v /data/redis/sentinel/${application_name}.conf:/usr/local/etc/redis/sentinel.conf \
           -d  redis /bin/bash

复制代码

依次按照这个步骤启动其他sentinel节点

测试


# 进入主容器 
docker exec -it redis-master bash
# 主容器休眠 
redis-cli -a lindj -p 6300 DEBUG sleep 60
复制代码

此时进入从容器执行 info Replication,可以看到master已经完成切换

60秒后原主redis恢复可以看到,已经切换到从库

参考

基于Docker的Redis高可用集群搭建(redis-sentinel)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值