CentOS7单机线下搭建redis7集群(开机自启动)

CentOS7单机线下搭建redis7集群(开机自启动)

本文记述基于centos7下搭建redis7集群且开机自启动,建议阅读本篇文章前参考本博主的另一篇文章CentOS线下安装Redis

⚠️ 本文记述的集群搭建中并不记述如何搭建主从redis结构

规划:我使用一台主机搭建一个3个节点的redis集群,规划3个端口 6379,6380,6381

# 查看redis是否在运行
ps -ef | grep redis
# 若redis在运行,则停止redis服务
service redis stop
# 拷贝原来的6379.conf文件,拷贝2份redis.conf文件,分别命名为6380.conf,6381.conf
cp /usr/local/redis/6379.conf /usr/local/redis/6380.conf 
cp /usr/local/redis/6379.conf /usr/local/redis/6381.conf

修改6380.conf,6381.conf文件,注意修改数字,以下仅例举6379文件配置

修改约832行 cluster-enabled yes 
修改约841行 cluster-config-file nodes-6379.conf
修改约847行 cluster-node-timeout 5000

cluster-enabled yes 打开集群模式

cluster-config-file nodes-6379.conf 集群配置

cluster-node-timeout 5000 集群中节点超时时间

修改完成后,保存

# 修改redisc文件
vim /etc/init.d/redis

修改如下

#!/bin/bash
# 定义端口
REDISPORT_1=6379
REDISPORT_2=6380
REDISPORT_3=6381

EXEC=/usr/local/redis/bin/redis-server
CLIEXEC=/usr/local/redis/bin/redis-cli

PIDFILE=/var/run/redis_${REDISPORT_1}.pid
# 定义配置项
CONF1="/usr/local/redis/${REDISPORT_1}.conf"
CONF2="/usr/local/redis/${REDISPORT_2}.conf"
CONF3="/usr/local/redis/${REDISPORT_3}.conf"

case "$1" in
    start)
        if [ -f $PIDFILE ]
        then
                echo "$PIDFILE exists, process is already running or crashed"
        else
                echo "Starting Redis server..."
                # 配置启动命令
                $EXEC $CONF1 & $EXEC $CONF2 & $EXEC $CONF3 & echo "redis-cluster start success"
        fi
        ;;
    stop)
        if [ ! -f $PIDFILE ]
        then
                echo "$PIDFILE does not exist, process is not running"
        else
                PID=$(cat $PIDFILE)
                echo "Stopping ..."
                # 配置停止命令
                $CLIEXEC -p $REDISPORT_1 shutdown
                $CLIEXEC -p $REDISPORT_2 shutdown
                $CLIEXEC -p $REDISPORT_3 shutdown
                while [ -x /proc/${PID} ]
                do
                    echo "Waiting for Redis to shutdown ..."
                    sleep 1
                done
                echo "Redis stopped"
        fi
        ;;
    *)
        echo "Please use start or stop as first argument"
        ;;
esac

修改好后保存

# 重载配置
systemctl daemon-reload
# 启动redis集群节点(目前尚未创建集群)
service redis start
# 查看各节点启动情况
ps -ef | grep redis
打印下列信息则启动成功
root     28774     1  0 11:05 ?        00:00:03 /usr/local/redis/bin/redis-server *:6381 [cluster]
root     28775     1  0 11:05 ?        00:00:03 /usr/local/redis/bin/redis-server *:6379 [cluster]
root     28779     1  0 11:05 ?        00:00:03 /usr/local/redis/bin/redis-server *:6380 [cluster]
root     32391  1891  0 11:15 pts/0    00:00:00 grep --color=auto redis

# 创建集群
./redis-cli --cluster create 127.0.0.1:6379 127.0.0.1:6380 127.0.0.1:6381
# 验证
./redis-cli -p 6379 cluster info
./redis-cli -p 6380 cluster info
./redis-cli -p 6381 cluster info
均打印下列信息则启动成功
cluster_state:ok
cluster_slots_assigned:16384
cluster_slots_ok:16384
cluster_slots_pfail:0
cluster_slots_fail:0
cluster_known_nodes:3
cluster_size:3
cluster_current_epoch:3
cluster_my_epoch:2
cluster_stats_messages_ping_sent:1368
cluster_stats_messages_pong_sent:1382
cluster_stats_messages_meet_sent:1
cluster_stats_messages_sent:2751
cluster_stats_messages_ping_received:1381
cluster_stats_messages_pong_received:1369
cluster_stats_messages_meet_received:1
cluster_stats_messages_received:2751
posted @   勤匠  阅读(20)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示