虽然疫情很严重,但是也不要忘记自己充能哦,今日,又是元气满满的一天!
多的不说,少的不唠,开整
咱们这里搭建的是哨兵的标准模式 -> 1 主 + 2 从 + 3 哨兵
Mac m1 部署 Redis Sentinel 微集群
一、安装 Redis
1、安装
这里很简单,只要一行命令即可
brew install redis
2、启动
brew services restart redis
3、验证
ps -ef|grep redis
4、说明
Mac m1 芯片,使用 brew 命令安装软件的默认配置文件位置如下
二、创建目录并启动主从节点
首先规划下目录结构
cd /Users/xiaolige/app
## 创建 redis master 节点配置文件目录
mkdir -p redis/redisSentinel/master
## 创建 redis slave 节点配置文件目录
mkdir -p redis/redisSentinel/slave
## 创建 redis sentinel 节点配置文件目录
mkdir -p redis/redisSentinel/sentinel
## 创建 redis 启动相关脚本目录
mkdir -p redis/redisSentinel/script
## 创建 redis 日志目录
mkdir -p redis/redisSentinel/logs
1、主节点
执行如下命令
cp /opt/homebrew/etc/redis.conf /Users/xiaolige/app/redis/redisSentinel/master/redis.conf
此时,主节点配置文件就创建好了,然后,修改主节点配置文件
port 8000
daemonize yes
就简单修改这两个配置吧
创建主节点启停脚本(为后续方便,咱们自己写个启动脚本),如下
cd /Users/xiaolige/app/redis/redisSentinel/script
## 启动脚本
touch start_master_8000.sh
## 停止脚本
touch stop_master_8000.sh
vi start_master_8000.sh ,然后再文件中输入启动命令
#!/bin/sh
redis-server /Users/xiaolige/app/redis/redisSentinel/master/redis.conf &
vi stop_master_8000.sh ,然后再文件中输入停止命令
#!/bin/sh
ps -ef | grep 8000 | grep -v grep | awk '{print$2}' | xargs kill
启动主节点:
## cd /Users/xiaolige/app/redis/redisSentinel/script
sh ./start_master_8000.sh
检查主节点启动情况,输入如下命令
redis-cli -p 8000 ping
出现 PONG,则证明主节点启动成功
主节点就好了,接下来创建从节点
2、从节点
执行如下命令
cp /Users/xiaolige/app/redis/redisSentinel/master/redis.conf /Users/xiaolige/app/redis/redisSentinel/slave/redis-slave-8001.conf
cp /Users/xiaolige/app/redis/redisSentinel/master/redis.conf /Users/xiaolige/app/redis/redisSentinel/slave/redis-slave-8002.conf
这里我们将两个从节点的端口定为 8001 和 8002,然后修改配置
redis-slave-8001.conf
port 8001
damonnize yes
slaveof 127.0.0.1 8000
redis-slave-8002.conf
port 8002
damonnize yes
slaveof 127.0.0.1 8000
加入了一个 slaveof 配置,表明该节点的主节点是 127.0.0.1:8000
创建从节点启停脚本,如下
cd /Users/xiaolige/app/redis/redisSentinel/script
## 启动脚本
touch start_slave_8001.sh
touch start_slave_8002.sh
## 停止脚本
touch stop_slave_8001.sh
touch stop_slave_8002.sh
vi start_slave_8001.sh ,然后再文件中输入启动命令
#!/bin/sh
redis-server /Users/xiaolige/app/redis/redisSentinel/slave/redis-slave-8001.conf &
vi stop_slave_8001.sh ,然后再文件中输入停止命令
#!/bin/sh
ps -ef | grep 8001 | grep -v grep | awk '{print$2}' | xargs kill
vi start_slave_8002.sh ,然后再文件中输入启动命令
#!/bin/sh
redis-server /Users/xiaolige/app/redis/redisSentinel/slave/redis-slave-8002.conf &
vi stop_slave_8002.sh ,然后再文件中输入停止命令
#!/bin/sh
ps -ef | grep 8002 | grep -v grep | awk '{print$2}' | xargs kill
启动 8001 从节点:
## cd /Users/xiaolige/app/redis/redisSentinel/script
sh ./start_slave_8001.sh
检查 8001 从节点启动情况,输入如下命令
redis-cli -p 8001 ping
启动 8002 从节点:
## cd /Users/xiaolige/app/redis/redisSentinel/script
sh ./start_slave_8002.sh
检查 8002 从节点启动情况,输入如下命令
redis-cli -p 8002 ping
现在主从节点已经关联好了,现在通过 info 命令看看是否成功
redis-cli -p 8000 info replication
出现如下界面
进入了 8000 主节点中查看,看见 role 是 master,并且有 2 个从节点,8001 和 8002 成功!
接着开始部署哨兵节点
三、部署哨兵节点
执行如下命令
cp /opt/homebrew/etc/redis.conf /Users/xiaolige/app/redis/redisSentinel/sentinel/redis-sentinel-26379.conf
cp /opt/homebrew/etc/redis.conf /Users/xiaolige/app/redis/redisSentinel/sentinel/redis-sentinel-26380.conf
cp /opt/homebrew/etc/redis.conf /Users/xiaolige/app/redis/redisSentinel/sentinel/redis-sentinel-26381.conf
然后修改配置文件:
redis-sentinel-26379.conf
port 26379
daemonize yes
sentinel monitor mymaster 127.0.0.1 8000 2
sentinel down-after-milliseconds mymaster 10000
sentinel failover-timeout mymaster 60000
redis-sentinel-26380.conf
port 26380
daemonize yes
sentinel monitor mymaster 127.0.0.1 8000 2
sentinel down-after-milliseconds mymaster 10000
sentinel failover-timeout mymaster 60000
redis-sentinel-26381.conf
port 26381
daemonize yes
sentinel monitor mymaster 127.0.0.1 8000 2
sentinel down-after-milliseconds mymaster 10000
sentinel failover-timeout mymaster 60000
这里比较关键的是:
1、sentinel monitor mymaster 127.0.0.1 8000 2,这个配置表示该哨兵节点需要监控 8000 这个主节点, 2 代表着判断主节点失败至少需要 2 个 Sentinel 节点同意。
2、sentinel down-after-milliseconds mymaster 10000,down-after-milliseconds 选项指定了 Sentinel 判断实例进入主观下线所需的时间长度:如果一个实例在 down-after-milliseconds毫秒内,连续向 Sentinel 返回无效回复,那么 Sentinel 会修改这个实例所对应的实例结构,在结构的flags 属性中打开 SRI_S_DOWN 标识,以此来表示这个实例已经进入主观下线状态。
3、sentinel failover-timeout mymaster 60000,failover 过期时间,当 failover 开始后,在此时间内仍然没有触发任何 failover 操作,当前 Sentinel 将会认为此次 failoer 失败。
创建 Sentinel 节点启停脚本,如下
cd /Users/xiaolige/app/redis/redisSentinel/script
## 启动脚本
touch start_sentinel_26379_26380_26381.sh
## 停止脚本
touch stop_sentinel_26379_26380_26381.sh
vi start_sentinel_26379_26380_26381.sh ,然后再文件中输入启动命令
#!/bin/sh
redis-sentinel /Users/xiaolige/app/redis/redisSentinel/sentinel/redis-sentinel-26379.conf &
redis-sentinel /Users/xiaolige/app/redis/redisSentinel/sentinel/redis-sentinel-26380.conf &
redis-sentinel /Users/xiaolige/app/redis/redisSentinel/sentinel/redis-sentinel-26381.conf &
vi stop_sentinel_26379_26380_26381.sh ,然后再文件中输入停止命令
#!/bin/sh
echo "将要停止的redis sentinel 进程 Id 如下..."
ps -ef | grep sentinel | grep -v grep | grep -v stop_sentinel_26379_26380_26381 | awk '{print$2}'
echo "将要停止redis sentinel......"
#date;sleep 60;date
ps -ef | grep sentinel | grep -v grep | awk '{print "kill "$2}' | sh
启动 Sentinel 节点:
## cd /Users/xiaolige/app/redis/redisSentinel/script
sh ./start_sentinel_26379_26380_26381.sh
启动后,看看哨兵的相关信息:
redis-cli -p 26379 info sentinel
通过进入 26379 节点,使用 info Sentinel 命令,看到有个 master 节点,名称是 mymaster,地址是我们刚刚配置的 8000, 从节点有 2 个,哨兵有 3 个。
此时一个高可用的 Redis 集群就搭建好了。
成品目录结构如下:
当然如果是生产环境,所有实例建议部署在不同的机器上。
拓扑图如下:
欢迎大家关注,点赞,收藏
知乎搜索:搬砖小李哥
微信公众号关注:peki