Redis单点/主从/Sentinel架构/集群搭建完整版

搭建环境

Linux版本: Centos 3.10.0-862.el7.x86_64
Redis版本: redis-3.2.8
[wget http://download.redis.io/releases/redis-3.2.8.tar.gz]
C 程序运行环境:
yum -y install gcc-c++
需要安装较新版本tcl:

  • 在线安装:yum -y install tcl
  • 下载安装包安装:
    wget http://downloads.sourceforge.net/tcl/tcl8.6.1-src.tar.gz
    tar -zxvf tcl8.6.1-src.tar.gz -C …/servers/
    cd …/servers/tcl8.6.1/unix/
    ./configure
    make && make install

下载解压

在其中一台节点上:
我们这里是node01(目录结构自行创建)
cd /export/softwares
tar -zxvf redis-3.2.8.tar.gz -C …/servers/

单点安装-修改配置文件(重点)

#进入解压后的根目录
cd /export/servers/redis-3.2.8/
#创建两个文件夹,一个是logs,一个是redisdata,下面配置文件需要用到
mkdir -p /export/servers/redis-3.2.8/logs
mkdir -p /export/servers/redis-3.2.8/redisdata
#编辑配置文件
vim redis.conf

[root@node01 redis-3.2.8]# cat redis.conf | grep -v "#"
#绑定本机
bind node01
daemonize yes
pidfile /var/run/redis_6379.pid
logfile "/export/servers/redis-3.2.8/logs/redis.log"
dir /export/servers/redis-3.2.8/redisdata

启动/关闭

cd /export/servers/redis-3.2.8/src
redis-cli -h node01
在这里插入图片描述

主从配置

集群主从分配
node01:主节点
node02:从节点
node03:从节点

node02与node03执行以下命令安装依赖环境
yum -y install gcc-c++
上传解压编译,步骤跟单节点一样,也可以通过以下命令拷贝到另外两个节点:
scp -r /export/servers/redis-3.2.8 node02: P W D s c p − r / e x p o r t / s e r v e r s / r e d i s − 3.2.8 n o d e 03 : PWD scp -r /export/servers/redis-3.2.8 node03: PWDscpr/export/servers/redis3.2.8node03:PWD

修改配置文件(重点)

#绑定本机
bind node02
daemonize yes
pidfile /var/run/redis_6379.pid
logfile "/export/servers/redis-3.2.8/logs/redis.log"
dir /export/servers/redis-3.2.8/redisdata
#绑定主节点为node01
slaveof node01 6379
#绑定本机
bind node03
daemonize yes
pidfile /var/run/redis_6379.pid
logfile "/export/servers/redis-3.2.8/logs/redis.log"
dir /export/servers/redis-3.2.8/redisdata
#绑定主节点为node01
slaveof node01 6379

启动node02与node03机器的redis服务

node02执行以下命令启动redis服务
cd /export/servers/redis-3.2.8/src
redis-server …/redis.conf
node03执行以下命令启动redis服务
cd /export/servers/redis-3.2.8/src
redis-server …/redis.conf
启动成功便可以实现redis的主从复制,node01可以读写操作,node02与node03只支持读取操作

Sentinel架构搭建

三台机器执行以下命令修改redis的哨兵配置文件
cd /export/servers/redis-3.2.8
vim sentinel.conf

# 配置监听的主服务器,这里sentinel monitor代表监控,mymaster代表服务器的名称,可以自定义,192.168.11.128代表监控的主服务器,6379代表端口,2代表只有两个或两个以上的哨兵认为主服务器不可用的时候,才会进行failover操作。
#修改bind配置,每台机器修改为自己对应的主机名
bind node01  
#配置sentinel服务后台运行
daemonize yes
#修改三台机器监控的主节点,现在主节点是node01服务器
sentinel monitor mymaster node01 6379 2
# sentinel author-pass定义服务的密码,mymaster是服务名称,123456是Redis服务器密码
# sentinel auth-pass <master-name> <password>

启动哨兵

cd /export/servers/redis-3.2.8
src/redis-sentinel sentinel.conf
使用kill -9命令杀死redis服务进程,模拟redis故障宕机情况
过一段时间之后,就会在node02与node03服务器选择一台服务器来切换为主节点

redis集群搭建

由于redis集群当中最少需要三个主节点,每个主节点,最少需要一个对应的从节点,所以搭建redis集群最少需要三主三从的配置,所以redis集群最少需要6台redis的实例,我们这里使用三台机器,每台服务器上面运行两个redis的实例。我们这里使用node01服务器,通过配置不同的端口,实现redis集群的环境搭建

node01服务器解压redis压缩包

#node01执行以下命令重新解压redis压缩包到/export路径下(这里需要重新创建一个目录)
cd /export/softwares/
tar -zxf redis-3.2.8.tar.gz -C /export/
node01执行以下命令安装redis的依赖环境
yum -y install gcc-c++ tcl
对redis进行编译
cd /export/redis-3.2.8
make && make install

创建redis不同实例的配置文件夹

创建文件夹,并将redis的配置文件拷贝到以下这些目录
cd /export/redis-3.2.8
mkdir -p /export/redis-3.2.8/clusters/7001
mkdir -p /export/redis-3.2.8/clusters/7002
mkdir -p /export/redis-3.2.8/clusters/7003
mkdir -p /export/redis-3.2.8/clusters/7004
mkdir -p /export/redis-3.2.8/clusters/7005
mkdir -p /export/redis-3.2.8/clusters/7006

修改redis的六个配置文件

node01执行以下命令修改redis的配置文件
mkdir -p /export/redis-3.2.8/logs
mkdir -p /export/redis-3.2.8/redisdata/7001
mkdir -p /export/redis-3.2.8/redisdata/7002
mkdir -p /export/redis-3.2.8/redisdata/7003
mkdir -p /export/redis-3.2.8/redisdata/7004
mkdir -p /export/redis-3.2.8/redisdata/7005
mkdir -p /export/redis-3.2.8/redisdata/7006

第一个配置文件修改(其他节点配置端口修改即可),主要配置参数如下
vim /export/redis-3.2.8/redis.conf

bind node01
port 7001
cluster-enabled yes
cluster-config-file nodes-7001.conf
cluster-node-timeout 5000
appendonly yes
daemonize yes
pidfile /var/run/redis_7001.pid
logfile "/export/redis-3.2.8/logs/7001.log"
dir /export/redis-3.2.8/redisdata/7001
将修改后的文件拷贝到对应的文件夹下面去
cp /export/redis-3.2.8/redis.conf /export/redis-3.2.8/clusters/7001

启动redis进程

node01执行以下命令来启动redis集群
cd /export/redis-3.2.8
src/redis-server clusters/7001/redis.conf
src/redis-server clusters/7002/redis.conf
src/redis-server clusters/7003/redis.conf
src/redis-server clusters/7004/redis.conf
src/redis-server clusters/7005/redis.conf
src/redis-server clusters/7006/redis.conf

安装ruby运行环境

node01执行以下命令,安装ruby运行环境,因为redis集群的启动需要借助ruby的环境
yum install ruby
yum install rubygems
gem install redis

可能会出现下面的情况:
在这里插入图片描述解决方法:

这时,需要升级Ruby版本
node01执行以下命令升级ruby版本
cd /export/redis-3.2.8
gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB

curl -sSL https://get.rvm.io | bash -s stable
source /etc/profile.d/rvm.sh
rvm list known
rvm install 2.4.1

创建集群

node01执行以下命令创建redis集群
cd /export/redis-3.2.8
gem install redis
src/redis-trib.rb create --replicas 1 node01:7001 node01:7002 node01:7003 192.168.100.100:7004 node01:7005 node01:7006

连接redis客户端

node01执行以下命令连接redis客户端
cd /export/redis-3.2.8
src/redis-cli -h node01 -c -p 7001

redis集群管理

添加一个新节点作为主节点
启动新节点的redis服务,然后添加到集群当中去
启动服务
src/redis-server clusters/7007/redis.conf
src/redis-trib.rb add-node node01:7007 node01:7001

添加一个新节点作为副本

src/redis-server clusters/7008/redis.conf
src/redis-trib.rb add-node --slave node01:7008 node01:7001

删除一个节点
命令格式
src/redis-trib del-node 127.0.0.1:7000 <node-id>

src/redis-trib.rb del-node node01:7008 7c7b7f68bc56bf24cbb36b599d2e2d97b26c5540

重新分片
./redis-trib.rb reshard node01:7001
./redis-trib.rb reshard --from --to --slots --yes :

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值