redis 集群搭建(离线)

本文介绍如何在离线环境中安装Redis并搭建一个包含六个节点的集群。涉及的内容包括Redis的离线安装步骤、Ruby环境的配置、集群的搭建流程及常见问题的解决方案。

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

一、项目背景:

最近接手的项目需要使用redis,经讨论为了高可用目的决定使用redis集群方式部署。于是着手研究搭建,因为项目环境为离线环境,所以依赖和搭建需要下载离线包进行搭建。另外因为本人申请的环境已经预装了redis 4.0,为了保证文档的完整性,所以离线安装redis的过程为网上查询整理。

系统:redhat 7.3

二、实施过程:

1、redis离线安装
  • 下载redis资源

     http://download.redis.io/releases/redis-4.0.8.tar.gz

  • 把下载的离线包上传至服务器,通过解压命令解压离线包。

tar xzvf redis-4.0.8.tar.gz
  • 离线安装redis

  打开至redis目录,使用make install 命令进行安装。

cd redis-4.0.8
make
cd src
make install PREFIX=/usr/local/redis
  • 启动redis
redis-server /usr/local/redis/redis.conf

    redis的默认端口是6379

    连接redis客户端使用

redis-cli

    如果连接报错如下:

Redis is running in protected mode because protected mode is enabled, no bind address was specified, no authentication password is requested to clients.

    需要更改redis.conf文件

# bind 127.0.0.1 --> 去掉注释,改为实际ip地址

    至此,redis安装成功。

2、redis集群搭建

    redis集群官方建议最小集群环境为 6 server,3主3从。

    因为redis从3.0开始支持集群部署,目前版本都支持,但是需要安装ruby环境,才能运行集群命令 redis-trib.rb,需要安装的资源如下,可自行搜索下载,需要说明的是ruby版本不得低于2.2.2,不然搭建集群会报错。

redis-4.0.1.gem
ruby-2.4.4.tar.gz
rubygems-2.7.6.tgz
    ruby官网下载最新的稳定版本:

    https://www.ruby-lang.org/en/downloads/

    rubygems:

    http://www.oschina.net/news/19237/rubygems-v-185

  • 把下载好的文件上传到服务器
  • 安装ruby环境
tar xzvf ruby-2.4.4.tar.gz
cd ruby-4.4.0
./configure –prefix=/usr/local/ruby
make && make instal

    -prefix是将ruby安装到指定目录,安装的时候开始没有使用root用户安装,出现问题,于是切换到root用户执行 make && make install,完成。

  • 添加ruby环境变量

    编辑/etc/profile文件

vim /etc/profile

    在最后添加环境变量配置

export RUBY_HOME=/usr/local/ruby2.4.4
export PATH=$RUBY_HOME/bin:$PATH

    其中$RUBY_HOME/bin:$PATH的作用是,把ruby环境变量添加到PATH的前面。

    保存环境变量

source /etc/profile
    确认ruby版本
ruby --version

  • 安装rubygems
tar xzvf rubygems-2.7.6.tgz
cd rubygems-2.7.6/
ruby setup.rb

gem –version
gem install redis-4.0.1.gem
  • 集群搭建
#创建集群文件夹,用于存在集群配置和数据
cd /app ;
mkdir rediscluster
#创建conf,data,logs文件
#192.168.100.1
mkdir /app/redis{7000/{conf,data,logs},7001/{conf,data,logs}}
#192.168.100.2
mkdir/app/redis{7002/{conf,data,logs},7003/{conf,logs,data}}
#192.168.100.3
mkdir/app/redis{7004/{conf,data,logs},7005/{conf,data,logs}}

    复制redis.conf文件到redis7000/conf文件下,每个集群文件夹都要复制一份。

    修改每个配置文件下的redis.conf文件

1.#bind 127.0.0.1
2.protected-mode no
3.port 7000
4.daemonize yes
5.pidfile /app/redis7000/data/redis7000.pid
6.logfile /app/redis7000/logs/redis7000.log
7.save ""
#save 900 1
#save 300 10
#save 60 10000
12.dir /app/redis7000/data
13.cluster-enabled yes
14.cluster-config-file /app/redis7000/conf/nodes7000.conf
15.cluster-node-timeout 15000

    使用命令启动每个redis服务

redis-server /app/redis7000/conf/redis.conf
    执行集群命令,搭建集群环境。
src/redis-trib.rb create --replicas 1 192.168.100.1:7000 192.168.100.1:7001 192.168.100.2:7002 192.168.100.2:7003 192.168.100.3:7004 192.168.100.3:7005

     replicas 1 代表每个主生成一个从,

  • 调整主从结构

    删除从节点

./redis-trib.rb del-node 192.168.100.3:7005 99d7c37c6b9d86bb2275895719e82115f4676752

    删除nodes.conf文件 dump.rdb文件

    重启redis

    执行添加命令

./redis-trib.rb add-node --slave --master-id a1006e659ccd59c002b35c4d7b4994e271d83f7d 192.168.100.1:7001 192.168.100.3:7004
3、问题总结:
  • 问题1:
client.rb:119:in `call': ERR Slot 14091 isalready busy
解决方法:all nodes did FLUSHALL and then CLUSTER RESET SOFT

    另外所有的操作中,报错服务有数据或者in user 都可以使用以上办法解决,其中从服务器(slave)在集群中是readonly状态,所以需要先执行cluster reset soft 才能执行刷新操作。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值