Loading... ## 节点信息 先看一下当前路径信息 ```bash[root@localhost [root@localhost sentinelRedis]# ll 总用量 8 drwxr-xr-x 2 root root 40 11月 9 17:48 7001 drwxr-xr-x 2 root root 40 11月 9 17:48 7002 drwxr-xr-x 2 root root 24 11月 3 13:21 7003 drwxrwxr-x 7 root root 4096 11月 3 11:44 redis-6.2.9 -rwxr-xr-x 1 root root 2656 11月 9 17:53 redis_sentinel.sh drwxr-xr-x 2 root root 79 11月 3 13:21 s1 drwxr-xr-x 2 root root 53 11月 3 13:21 s2 drwxr-xr-x 2 root root 53 11月 3 13:21 s3 ``` 共包含三个节点,一个主节点,两个从节点。 | IP | PORT | 角色 | | :-------------: | :--: | :----: | | 172.100.xxx.xxx | 7001 | master | | 172.100.xxx.xxx | 7002 | slave | | 172.100.xxx.xxx | 7003 | slave | 分别有设置密码都是:`123456` 在路径`/usr/local/sentinelRedis`中打开3个ssh窗口,分别启动3个redis实例,启动命令: ```sh # 第1个 redis-server 7001/redis.conf # 第2个 redis-server 7002/redis.conf # 第3个 redis-server 7003/redis.conf ``` - 停止 ```bash printf '%s\n' 7001 7002 7003 | xargs -I{} -t redis-cli -a 123456 -p {} shutdown ``` 三个sentinel实例信息如下: | 节点 | IP | PORT | | ---- | :-------------: | :---: | | s1 | 172.100.xxx.xxx | 27001 | | s2 | 172.100.xxx.xxx | 27002 | | s3 | 172.100.xxx.xxx | 27003 | 在路径`/usr/local/sentinelRedis`中打开3个ssh窗口,分别启动3个redis实例,启动命令: ```sh # 第1个 redis-sentinel s1/sentinel.conf # 第2个 redis-sentinel s2/sentinel.conf # 第3个 redis-sentinel s3/sentinel.conf ``` ## 快捷启动和停止脚本 脚本位置:/usr/local/sentinelRedis/redis_sentinel.sh ```bash #!/bin/bash # 环境变量用于存储密码 export REDIS_PASSWORD="123456" export HOST="172.100.xxx.xxx" # 检查 Redis 和 Sentinel 实例的状态 check_status() { # 检查 Redis 实例状态 redis-cli -p 7001 ping > /dev/null 2>&1 if [ $? -eq 0 ]; then echo "Redis 实例 7001 正常运行。" else echo "Redis 实例 7001 未运行。" fi redis-cli -p 7002 ping > /dev/null 2>&1 if [ $? -eq 0 ]; then echo "Redis 实例 7002 正常运行。" else echo "Redis 实例 7002 未运行。" fi redis-cli -p 7003 ping > /dev/null 2>&1 if [ $? -eq 0 ]; then echo "Redis 实例 7003 正常运行。" else echo "Redis 实例 7003 未运行。" fi # 检查 Sentinel 实例状态 redis-cli -p 27001 ping > /dev/null 2>&1 if [ $? -eq 0 ]; then echo "Sentinel 实例 27001 正常运行。" else echo "Sentinel 实例 27001 未运行。" fi redis-cli -p 27002 ping > /dev/null 2>&1 if [ $? -eq 0 ]; then echo "Sentinel 实例 27002 正常运行。" else echo "Sentinel 实例 27002 未运行。" fi redis-cli -p 27003 ping > /dev/null 2>&1 if [ $? -eq 0 ]; then echo "Sentinel 实例 27003 正常运行。" else echo "Sentinel 实例 27003 未运行。" fi } # 启动 Redis 和 Sentinel 实例 start() { # 启动 Redis 实例 redis-server 7001/redis.conf > /dev/null 2>&1 & redis-server 7002/redis.conf > /dev/null 2>&1 & redis-server 7003/redis.conf > /dev/null 2>&1 & # 等待一段时间确保 Redis 实例已启动 sleep 5 # 启动 Sentinel 实例 redis-sentinel s1/sentinel.conf > /dev/null 2>&1 & redis-sentinel s2/sentinel.conf > /dev/null 2>&1 & redis-sentinel s3/sentinel.conf > /dev/null 2>&1 & } # 暂停 Redis 和 Sentinel 实例 stop() { # 停止 Redis 实例 printf '%s\n' 7001 7002 7003 | xargs -I{} -t sh -c 'redis-cli -h $HOST -p {} -a $REDIS_PASSWORD shutdown' # 停止 Sentinel 实例 printf '%s\n' 27001 27002 27003 | xargs -I{} -t sh -c 'redis-cli -p {} shutdown' } # 检查参数并执行相应操作 if [ "$1" = "start" ]; then start echo "Redis 和 Sentinel 实例已启动。" elif [ "$1" = "stop" ]; then stop echo "Redis 和 Sentinel 实例已暂停。" elif [ "$1" = "status" ]; then check_status else echo "用法: $0 {start|stop|status}" fi ``` 可以使用以下命令来启动和暂停 Redis 和 Sentinel 实例: - 启动:`./redis_sentinel.sh start` - 暂停:`./redis_sentinel.sh stop` - 查看状态:`./redis_sentinel.sh status` 在运行脚本之前,赋予它执行权限:`chmod +x redis_sentinel.sh` ## 使用效果 ```bash [root@localhost sentinelRedis]# ll 总用量 8 drwxr-xr-x 2 root root 40 11月 9 17:48 7001 drwxr-xr-x 2 root root 40 11月 9 17:48 7002 drwxr-xr-x 2 root root 24 11月 3 13:21 7003 drwxrwxr-x 7 root root 4096 11月 3 11:44 redis-6.2.9 -rwxr-xr-x 1 root root 2656 11月 9 17:53 redis_sentinel.sh drwxr-xr-x 2 root root 79 11月 3 13:21 s1 drwxr-xr-x 2 root root 53 11月 3 13:21 s2 drwxr-xr-x 2 root root 53 11月 3 13:21 s3 [root@localhost sentinelRedis]# ./redis_sentinel.sh status Redis 实例 7001 未运行。 Redis 实例 7002 未运行。 Redis 实例 7003 未运行。 Sentinel 实例 27001 未运行。 Sentinel 实例 27002 未运行。 Sentinel 实例 27003 未运行。 [root@localhost sentinelRedis]# ./redis_sentinel.sh start Redis 和 Sentinel 实例已启动。 [root@localhost sentinelRedis]# ./redis_sentinel.sh status Redis 实例 7001 正常运行。 Redis 实例 7002 正常运行。 Redis 实例 7003 正常运行。 Sentinel 实例 27001 正常运行。 Sentinel 实例 27002 正常运行。 Sentinel 实例 27003 正常运行。 [root@localhost sentinelRedis]# ./redis_sentinel.sh stop sh -c redis-cli -h $HOST -p 7001 -a $REDIS_PASSWORD shutdown > /dev/null 2>&1 & sh -c redis-cli -h $HOST -p 7002 -a $REDIS_PASSWORD shutdown > /dev/null 2>&1 & sh -c redis-cli -h $HOST -p 7003 -a $REDIS_PASSWORD shutdown > /dev/null 2>&1 & sh -c redis-cli -p 27001 shutdown sh -c redis-cli -p 27002 shutdown sh -c redis-cli -p 27003 shutdown Redis 和 Sentinel 实例已暂停。 [root@localhost sentinelRedis]# ./redis_sentinel.sh status Redis 实例 7001 未运行。 Redis 实例 7002 未运行。 Redis 实例 7003 未运行。 Sentinel 实例 27001 未运行。 Sentinel 实例 27002 未运行。 Sentinel 实例 27003 未运行。 [root@localhost sentinelRedis]# ``` 最后修改:2023 年 11 月 09 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 2 如果觉得我的文章对你有用,请随意赞赏