Redis高可用-集群环境搭建

本文介绍如何在CentOS系统上通过tar包方式部署Redis伪集群。包括安装包下载、编译、配置文件编写及集群创建过程。适用于希望了解Redis集群部署细节的技术人员。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本篇将在Centos系统中以tar包方式部署Redis(伪)集群

逐步创建

  1. 下载安装包并解压 ,再编译

    mkdir -p /tmp/redis_cluster
    cd redis_cluster
    https://repo.huaweicloud.com/redis/redis-5.0.0.tar.gz
    tar -zxvf redis-5.0.0.tar.gz
    mv redis-5.0.0 redis
    cd redis && make
    
  2. redis_cluster目录中创建每个节点的文件夹

    # 以7000-7005作为主节点端口
    # conf存储配置文件;data存储日志和数据
    for i in {7000..7005}; do
      mkdir -p /tmp/redis_cluster/conf &&
        mkdir -p /tmp/redis_cluster/data
    done
    
  3. 编写配置文件
    在每个节点conf目录下创建redis.conf文件,并修改变量为具体的值

    # 对外端口
    port ${port}
    # 关闭保护模式
    protected-mode no
    # 开启集群模式
    cluster-enabled yes
    # 集群配置文件
    cluster-config-file nodes_${port}.conf
    # 集群超时时间
    cluster-node-timeout 5000
    # 外网IP
    cluster-announce-ip ${ip}
    # 端口
    cluster-announce-port ${port}
    # 节点间通信端口
    cluster-announce-bus-port 1${port}
    # aof模式
    appendonly yes
    # 是否以后台方式运行
    daemonize yes
    # 日志级别
    loglevel debug
    # 日志存储路径
    logfile ${dataPath}/log.log
    # 主节点密码
    masterauth 123456
    # 节点密码
    requirepass 123456
    # 数据存储路径
    dir ${dataPath}
    # 访问控制
    bind 0.0.0.0
    
  4. 修改好配置文件,逐个启动即可

    cd /tmp/redis_cluster/redis/src
    ./redis-server /tmp/redis_cluster/redis_7000/conf/redis.conf
    ./redis-server /tmp/redis_cluster/redis_7001/conf/redis.conf
    ./redis-server /tmp/redis_cluster/redis_7002/conf/redis.conf
    ./redis-server /tmp/redis_cluster/redis_7003/conf/redis.conf
    ./redis-server /tmp/redis_cluster/redis_7004/conf/redis.conf
    ./redis-server /tmp/redis_cluster/redis_7005/conf/redis.conf
    

    通过ps -ef | grep redis 查看进程是否存在
    在这里插入图片描述

  5. 开启端口

    在创建集群的过程中,需要开启端口让外部访问

    对于部署在阿里云、腾讯云或华为云的,需要在安全组开启对应的端口

      for port in {7000...7005}; do
        firewall-cmd --add-port=$port/tcp --permanent
        firewall-cmd --add-port=1$port/tcp --permanent
      done
      firewall-cmd --reload &&
        firewall-cmd --list-ports
    
  6. 使用redis-cli创建集群

    /tmp/redis_cluster/redis/src/redis-cli --cluster create 外网IP:7000 外网IP:7001 外网IP:7002 外网IP:7003 外网IP:7004 外网IP:7005 -a 密码
    

在这里插入图片描述

至此,已将16384个slots分配给每个节点,通过外部访问即可

脚本创建

在以下脚本中,主要完成文件下载,动态生成配置文件等步骤,在脚本执行完后,再使用redis-cli创建集群即可

注意:在集群安装目录下需存在配置文件模板config.conf

port ${port}
protected-mode no
cluster-enabled yes
cluster-config-file nodes_${port}.conf
cluster-node-timeout 5000
cluster-announce-ip ${ip}
cluster-announce-port ${port}
cluster-announce-bus-port 1${port}
appendonly yes
daemonize yes
loglevel debug
logfile ${dataPath}/log.log
masterauth 123456
requirepass 123456
dir ${dataPath}
bind 0.0.0.0

脚本

#!/usr/bin/env bash
#auth 582895699@qq.com
#data 2022年1月24日

# 资源下载地址
TAR_FILE='https://repo.huaweicloud.com/redis/redis-5.0.0.tar.gz'
# 安装目录
TAR_SOURCE_DIR='/tmp/redis_cluster'
# redis文件名称
NEW_DIR_NAME='redis'
# redis节点端口
PORTS=(7000 7001 7002 7003 7004 7005)
# redis子子节点文件件前缀
DIR_PREFIX='redis_'
# 外网IP
IP=""

downloadFileAndCompile() {
  # 下载文件
  cd $TAR_SOURCE_DIR && wget $TAR_FILE
  echo 'download success!'
  # 解压文件
  tar -zxvf redis-5.0.0.tar.gz
  # 文件重命名
  mv redis-5.0.0 $NEW_DIR_NAME
  # 编译
  cd ./$NEW_DIR_NAME && make
}

configRedis() {
  for i in ${PORTS[*]}; do
    mkdir -p "$TAR_SOURCE_DIR/$DIR_PREFIX$i"/conf &&
      mkdir -p "$TAR_SOURCE_DIR/$DIR_PREFIX$i"/data &&
      port=${i} ip=${IP} dataPath="$TAR_SOURCE_DIR/$DIR_PREFIX$i/data" envsubst <"$TAR_SOURCE_DIR/config.conf" >"$TAR_SOURCE_DIR/$DIR_PREFIX$i/conf"/redis.conf &&
      "$TAR_SOURCE_DIR"/"$NEW_DIR_NAME"/src/redis-server "$TAR_SOURCE_DIR"/"redis_$i"/conf/redis.conf
  done
}

run() {
  if [ ! -d $TAR_SOURCE_DIR ]; then
    echo '文件夹不存在'
    exit 1
  fi
  if [ ! -e "$TAR_SOURCE_DIR/config.conf" ]; then
    echo "基础配置文件不存在"
    exit 1
  fi
  downloadFileAndCompile
  configRedis
}

run

在这里插入图片描述

阅读原文

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值