Linux环境 Redis-6.2.6集群部署

本文详细介绍如何在Linux环境下部署Redis 6.2.6集群,包括基础安装步骤、配置文件调整、防火墙设置及端口开放等关键环节,并提供开机自启方案。

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

Linux环境 Redis-6.2.6集群部署

基础安装

  1. redis-6.2.6下载地址,上传redis至服务器/usr/local
  • /usr/local类似于windows上安装软件时的自定义安装目录,可根据实际情况自己选择。
  • 安装时各种操作尽量使用非root用户去操作。
  1. 解压 tar -zxvf /usr/local/redis-6.2.6.tar.gz,重命名mv redis-6.2.6 redis

  2. 安装redis

    cd /usr/local/redis
    make
    
  3. 修改配置redis.conf,仅供参考,不同场景,配置不同。

    # 端口号
    port 6379
    # 是否是后台运行
    daemonize yes
    # 注释掉IP这一行
    # bind XXX.XXX.XXX.XXX 
    # 开启AOF模式
    appendonly yes
    # 为了可以远程链接,关闭保护模式
    protected-mode no
    # 设置密码
    requirepass 123456
    
  4. 验证redis安装

    # 启动redis
    ./src/redis-server redis.conf
    # 查看redis 是否开启
    ps -ef|grep redis|grep -v grep
    # 杀死进程
    kill -9 pid
    

附:
单机修改密码步骤

redis/src/redis-cli -c -h 127.0.0.1 -p 6379
auth 123456
config set requirepass Carry@213
auth Carry@213

集群部署

  1. 创建集群文件夹

    mkdir /usr/local/redis_cluster
    cd /usr/local/redis_cluster
    mkdir -p 6380/data 6381/data 6382/data 6383/data 6384/data 6385/data
    
  2. 复制集群可执行文件

    mkdir /usr/local/redis_cluster/bin
    cd /usr/local/redis/src
    cp mkreleasehdr.sh redis-benchmark redis-check-aof redis-cli redis-server redis-trib.rb /usr/local/redis_cluster/bin
    
  3. 复制集群配置文件 cp /usr/local/redis/redis.conf /usr/local/redis_cluster/6380

    修改配置vi 6380/redis.conf,参考如下

    # 每个节点的端口号
    port 6380
    # 是否是后台运行
    daemonize yes
    # 注释掉IP这一行
    # bind XXX.XXX.XXX.XXX 
    # 数据文件存放位置
    dir /usr/local/redis_cluster/6380/data/
    # 防止启动多个进程副本的pid文件,主要文件名要与端口号对应
    pidfile /var/run/redis_6380.pid
    # 集群模式配置 cluster-config-file要与port对应
    cluster-enabled yes
    cluster-config-file nodes6380.conf
    cluster-node-timeout 15000
    # 开启AOF模式
    appendonly yes
    # 为了可以远程链接,关闭保护模式
    protected-mode no
    

    修改完成之后将6380的配置文件,拷贝到文件6381-6385的文件下面,并且替换里面内容端口

    cp -rf /usr/local/redis_cluster/6380/redis.conf /usr/local/redis_cluster/6381
    cp -rf /usr/local/redis_cluster/6380/redis.conf /usr/local/redis_cluster/6382
    cp -rf /usr/local/redis_cluster/6380/redis.conf /usr/local/redis_cluster/6383
    cp -rf /usr/local/redis_cluster/6380/redis.conf /usr/local/redis_cluster/6384
    cp -rf /usr/local/redis_cluster/6380/redis.conf /usr/local/redis_cluster/6385
    
    vim /usr/local/redis_cluster/6381/redis.conf
    :%s/6380/6381/g
    
    vim /usr/local/redis_cluster/6382/redis.conf
    :%s/6380/6382/g
    
    vim /usr/local/redis_cluster/6383/redis.conf
    :%s/6380/6383/g
    
    vim /usr/local/redis_cluster/6384/redis.conf
    :%s/6380/6384/g
    
    vim /usr/local/redis_cluster/6385/redis.conf
    :%s/6380/6385/g
    

    注:redis的集群配置的前期是不能设置密码的!

  4. 使用root用户,开启防火墙端口
    此时要开启所有端口,否则会出现Waiting for the cluster to join…

    是因为集群总线的端口没有开放

    集群总线
    每个Redis集群中的节点都需要打开两个TCP连接。一个连接用于正常的给Client提供服务,比如6379,还有一个额外的端口(通过在这个端口号上加10000)作为数据端口,例如:redis的端口为6379,那么另外一个需要开通的端口是:6379 + 10000, 即需要开启 16379。16379端口用于集群总线,这是一个用二进制协议的点对点通信信道。这个集群总线(Cluster bus)用于节点的失败侦测、配置更新、故障转移授权,等等。

    # 查看状态
    systemctl status firewalld
    # 开启防火墙
    systemctl start firewalld
    # 开放6380、6381、6382、6383、6384、8385、16380、16381、16382、16383、16384、16385
    firewall-cmd --permanent --add-port=6380/tcp
    firewall-cmd --permanent --add-port=16380/tcp
    firewall-cmd --permanent --add-port=6381/tcp
    firewall-cmd --permanent --add-port=16381/tcp
    firewall-cmd --permanent --add-port=6382/tcp
    firewall-cmd --permanent --add-port=16382/tcp
    firewall-cmd --permanent --add-port=6383/tcp
    firewall-cmd --permanent --add-port=16383/tcp
    firewall-cmd --permanent --add-port=6384/tcp
    firewall-cmd --permanent --add-port=16384/tcp
    firewall-cmd --permanent --add-port=6385/tcp
    firewall-cmd --permanent --add-port=16385/tcp
    # 重启防火墙(修改配置后要重启防火墙)
    firewall-cmd --reload
    # 查看开放端口
    firewall-cmd --list-ports
    # 关闭防火墙
    systemctl stop firewalld
    
  5. 启动各个节点

    cd /usr/local/redis_cluster
    bin/redis-server 6380/redis.conf
    bin/redis-server 6381/redis.conf
    bin/redis-server 6382/redis.conf
    bin/redis-server 6383/redis.conf
    bin/redis-server 6384/redis.conf
    bin/redis-server 6385/redis.conf
    

    查看redis启动情况:ps -ef|grep redis|grep -v grep

  6. 配置集群

    ./bin/redis-cli --cluster create --cluster-replicas 1 127.0.0.1:6380 127.0.0.1:6381 127.0.0.1:6382 127.0.0.1:6383 127.0.0.1:6384 127.0.0.1:6385
    
  7. 密码设置

    cd /usr/local/redis_cluster
    ./bin/redis-cli -c -h 127.0.0.1 -p 6380
    # 执行以下命令 密码:123456(推荐强密码)
    config set masterauth 123456
    config set requirepass 123456
    # 上面的密码改完就会立刻生效,所以需要你马上输入一次密码
    auth  123456
    config rewrite
    

    然后重复操作6381-6385节点

开机自启

  1. 使用root用户创建文件vi /etc/init.d/redis

  2. 填写内容

    #!/bin/sh
    #
    # Simple Redis init.d script conceived to work on Linux systems
    # as it does use of the /proc filesystem.
    # chkconfig: 2345 80 90
    # description: Redis is a persistent key-value database
    
    REDISPORT0=5380
    REDISPORT1=5381
    REDISPORT2=5382
    REDISPORT3=6380
    REDISPORT4=6381
    REDISPORT5=6382
    EXEC=/usr/local/redis_cluster/bin/redis-server
    CLIEXEC=/usr/local/redis_cluster/bin/redis-cli
    
    case "$1" in
        start)
            CONF="/usr/local/redis_cluster/${REDISPORT0}/redis.conf"    
            echo "Starting Redis server on $REDISPORT0..."
            $EXEC $CONF &
    !
            CONF="/usr/local/redis_cluster/${REDISPORT1}/redis.conf"    
            echo "Starting Redis server on $REDISPORT1..."
            $EXEC $CONF &
    !
            CONF="/usr/local/redis_cluster/${REDISPORT2}/redis.conf"    
            echo "Starting Redis server on $REDISPORT2..."
            $EXEC $CONF &
    !
            CONF="/usr/local/redis_cluster/${REDISPORT3}/redis.conf"    
            echo "Starting Redis server on $REDISPORT3..."
            $EXEC $CONF &
    !
            CONF="/usr/local/redis_cluster/${REDISPORT4}/redis.conf"    
            echo "Starting Redis server on $REDISPORT4..."
            $EXEC $CONF &
    !
            CONF="/usr/local/redis_cluster/${REDISPORT5}/redis.conf"    
            echo "Starting Redis server on $REDISPORT5..."
            $EXEC $CONF &
    !
            ;;
    stop)
        es_pid=`ps -aux|grep redis|grep ${REDISPORT0}|grep -v grep|awk '{print $2}'`
        kill -9 $es_pid
        echo "$REDISPORT0 stopped"
        es_pid=`ps -aux|grep redis|grep ${REDISPORT1}|grep -v grep|awk '{print $2}'`
        kill -9 $es_pid
        echo "$REDISPORT1 stopped"
        es_pid=`ps -aux|grep redis|grep ${REDISPORT2}|grep -v grep|awk '{print $2}'`
        kill -9 $es_pid
        echo "$REDISPORT2 stopped"
        es_pid=`ps -aux|grep redis|grep ${REDISPORT3}|grep -v grep|awk '{print $2}'`
        kill -9 $es_pid
        echo "$REDISPORT3 stopped"
        es_pid=`ps -aux|grep redis|grep ${REDISPORT4}|grep -v grep|awk '{print $2}'`
        kill -9 $es_pid
        echo "$REDISPORT4 stopped"
        es_pid=`ps -aux|grep redis|grep ${REDISPORT5}|grep -v grep|awk '{print $2}'`
        kill -9 $es_pid
        echo "$REDISPORT5 stopped"
        ;;         
    *)
        echo "start|stop"
        ;;
    esac
    
    exit $?
    
  3. 添加执行权限chmod +x /etc/init.d/redis

  4. 设置开机自启chkconfig --add redis

异常情况

问题1:设置机器时出现,Sorry, can’t connect to node或者Node is not empty
解决方法:

  1. 关闭集群的所有实例
  2. 删除掉每个节点文件下的 xx.rdb 和 xx.conf文件
  3. 重启redis各个节点

参考链接:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值