linux环境下Redis Cluster集群的搭建

简介: Redis3.0及以上版本实现,集群中至少应该有奇数个节点,所以至少有三个节点,官方推荐三主三从的配置方式。Redis 3.x和Redis4.x 搭建集群是需要手动安装ruby组件的,比较麻烦。
但是5.x版本推出了各种新特性, 所以我就基于Redis-5.0.8版本,在三台机器上搭建6个节点的Redis集群:三主三从架构。做一个详细的搭建.
在这里插入图片描述

1. 安装前下载redis编译环境
yum -y install gcc-c++ tcl
2. 上传和解压安装包
#我的解压包都在export/server/  目录
tar -zxvf redis-5.0.8.tar.gz -C /export/server/     
3. 编译
# node01, 编译、安装、创建软连接
# 进入源码目录
cd /export/server/redis-5.0.8
# 编译
make
# 安装至指定目录
make PREFIX=/export/server/redis-5.0.8-bin install

# 创建安装目录软连接
cd /export/server
ln -s redis-5.0.8-bin redis
4. 配置环境变量
# 配置环境变量
vim /etc/profile
# ======================== 添加如下内容 ========================
    # REDIS HOME
export REDIS_HOME=/export/server/redis
export PATH=:$PATH:$REDIS_HOME/bin

# 执行生效
source /etc/profile
5. 拷贝配置文件
从Redis-5.0.8源码目录下拷贝配置文件:redis.conf至Redis 安装目录。
# ====================== node01 上操作 ======================
# 拷贝配置文件
cd /export/server/redis-5.0.8
cp redis.conf /export/server/redis
6. 修改配置文件

每台机器上启动2个Redis服务,一个主节点服务:7001,一个从节点服务:7002
在这里插入图片描述

在Redis安装目录下创建7001和7002目录,分别存储Redis服务配置文件、日志及数据文件。

# 创建目录:7001和7002
cd /export/server/redis
mkdir -p 7001 7002

拷贝配置文件:redis.conf至7001目录,并重命名为redis_7001.conf
cd /export/server/redis
cp redis.conf 7001/redis_7001.conf

编辑配置文件:redis_7001.conf,内容如下:
cd /export/server/redis/7001
vim redis_7001.conf
## =========================== 修改内容说明如下 ===========================
## 69行,配置redis服务器接受链接的网卡
bind 0.0.0.0
## 88行,关闭保护模式
protected-mode no
## 92行,设置端口号
port 7001
## 136行,redis后台运行
daemonize yes
## 158行,Redis服务进程PID存储文件名称
pidfile /var/run/redis_7001.pid

## 171行,设置redis服务日志存储路径
logfile "/export/server/redis-5.0.8-bin/7001/log/redis.log"
## 263行,设置redis持久化数据存储目录
dir /export/server/redis-5.0.8-bin/7001/data/

## 699行,启动AOF方式持久化
appendonly yes

## 832行,启动Redis Cluster
cluster-enabled yes
## 840行,Redis服务配置保存文件名称
cluster-config-file nodes-7001.conf
## 847行,超时时间
cluster-node-timeout 15000

创建日志目录和数据目录:
mkdir -p /export/server/redis/7001/log
mkdir -p /export/server/redis/7001/data

配置7002端口号启动Redis服务,操作命令如下:
## 拷贝配置文件
cd /export/server/redis
cp 7001/redis_7001.conf 7002/redis_7002.conf

## 修改配置文件:redis_7002.conf
cd /export/server/redis/7002
vim redis_7002.conf
# 进入vim编辑之后,执行以下代码将7001全部替换成7002
:%s/7001/7002/g   # 表示:%s/old/new/g  g表示全部替换 

# 创建目录
mkdir -p /export/server/redis/7002/log
mkdir -p /export/server/redis/7002/data
7. 发送安装包
分别发送到另外两台主机上
# 发送安装包
cd /export/server
scp -r redis-5.0.8-bin root@node2.xxyl.cn:$PWD
scp -r redis-5.0.8-bin root@node3.xxyl.cn:$PWD

# 在node2和node3创建软连接
cd /export/server
ln -s redis-5.0.8-bin redis

# 配置环境变量
vim /etc/profile
# ======================== 添加如下内容 ========================
    # REDIS HOME
export REDIS_HOME=/export/server/redis
export PATH=:$PATH:$REDIS_HOME/bin
# 执行生效
source /etc/profile
8. 启动Redis服务

在三台机器node01、node02和node03,分别启动6个Redis服务,命令如下:

# 启动7001端口Redis服务
/export/server/redis/bin/redis-server /export/server/redis/7001/redis_7001.conf

# 启动7002端口Redis服务
/export/server/redis/bin/redis-server /export/server/redis/7002/redis_7002.conf

ps - ef |grep redis  可以查看是否启动
9. 初始化集群

Redis5.x版本之后,通过redis-cli客户端命令来进行创建集群,注意:Redis对主机名解析不友好,使用IP地址

# 任意选择一台机器执行如下命令,创建集群
/export/server/redis/bin/redis-cli --cluster create 192.168.52.150:7001 192.168.52.151:7002 192.168.52.152:7001 192.168.52.150:7002 192.168.52.151:7001 192.168.52.152:7002 --cluster-replicas 1

启动集群日志信息如下:

>>> Performing hash slots allocation on 6 nodes...
## ====== 进行Slot槽范文划分 ======
Master[0] -> Slots 0 - 5460
Master[1] -> Slots 5461 - 10922
Master[2] -> Slots 10923 – 16383
## ====== 主从分配,一主一从 ======
Adding replica 192.168.52.151:7001 to 192.168.52.150:7001
Adding replica 192.168.52.152:7002 to 192.168.52.151:7002
Adding replica 192.168.52.150:7002 to 192.168.52.152:7001
## ====== 主从节点配对信息 ======
M: 97e1d381d59561e075ac813e2df7fed00114687e 192.168.52.150:7001
   slots:[0-5460] (5461 slots) master
M: 6e0353e92377a71d691a853152673a8774d11dc2 192.168.52.151:7002
   slots:[5461-10922] (5462 slots) master
M: d9bf2ac8eec5637ed7ec50061419ff6b951eef0b 192.168.52.152:7001
   slots:[10923-16383] (5461 slots) master
S: b679ac2df0df7509ffd3a1d3b460cb9e13f9dbfa 192.168.52.150:7002
   replicates d9bf2ac8eec5637ed7ec50061419ff6b951eef0b
S: b8a76df88aafb19ce38232d0b4c1daf12370f257 192.168.52.151:7001
   replicates 97e1d381d59561e075ac813e2df7fed00114687e
S: c038b9e271f5b5dba47d6ef81c4f49548a9f3698 192.168.52.152:7002
   replicates 6e0353e92377a71d691a853152673a8774d11dc2
## ====== 是否同意上述划分,一般都是yes ======   
Can I set the above configuration? (type 'yes' to accept): yes
## ====== 节点配置更新,进入集群,主从节点,高可用 ======
>>> Nodes configuration updated
>>> Assign a different config epoch to each node
>>> Sending CLUSTER MEET messages to join the cluster
Waiting for the cluster to join
...
>>> Performing Cluster Check (using node 192.168.52.150:7001)
M: 97e1d381d59561e075ac813e2df7fed00114687e 192.168.52.150:7001
   slots:[0-5460] (5461 slots) master
   1 additional replica(s)
S: c038b9e271f5b5dba47d6ef81c4f49548a9f3698 192.168.52.152:7002
   slots: (0 slots) slave
   replicates 6e0353e92377a71d691a853152673a8774d11dc2
S: b8a76df88aafb19ce38232d0b4c1daf12370f257 192.168.52.151:7001
   slots: (0 slots) slave
   replicates 97e1d381d59561e075ac813e2df7fed00114687e
S: b679ac2df0df7509ffd3a1d3b460cb9e13f9dbfa 192.168.52.150:7002
   slots: (0 slots) slave
   replicates d9bf2ac8eec5637ed7ec50061419ff6b951eef0b
M: 6e0353e92377a71d691a853152673a8774d11dc2 192.168.52.151:7002
   slots:[5461-10922] (5462 slots) master
   1 additional replica(s)
M: d9bf2ac8eec5637ed7ec50061419ff6b951eef0b 192.168.52.152:7001
   slots:[10923-16383] (5461 slots) master
   1 additional replica(s)
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
10. 测试集群
在任意一台机器,使用redis-cli客户端命令连接Redis服务:
redis-cli -c -p 7001

输入命令:cluster nodes(查看集群信息)和info replication(主从信息):

127.0.0.1:7001> cluster nodes
c038b9e271f5b5dba47d6ef81c4f49548a9f3698 192.168.52.152:7002@17002 slave 6e0353e92377a71d691a853152673a8774d11dc2 0 1598239340178 6 connected
b8a76df88aafb19ce38232d0b4c1daf12370f257 192.168.52.151:7001@17001 slave 97e1d381d59561e075ac813e2df7fed00114687e 0 1598239338161 5 connected
b679ac2df0df7509ffd3a1d3b460cb9e13f9dbfa 192.168.52.150:7002@17002 slave d9bf2ac8eec5637ed7ec50061419ff6b951eef0b 0 1598239337000 4 connected
6e0353e92377a71d691a853152673a8774d11dc2 192.168.52.151:7002@17002 master - 0 1598239338000 2 connected 5461-10922
d9bf2ac8eec5637ed7ec50061419ff6b951eef0b 192.168.52.152:7001@17001 master - 0 1598239339170 3 connected 10923-16383
97e1d381d59561e075ac813e2df7fed00114687e 192.168.52.150:7001@17001 myself,master - 0 1598239338000 1 connected 0-5460 

127.0.0.1:7001> info replication
# Replication
role:master
connected_slaves:1
slave0:ip=192.168.52.151,port=7001,state=online,offset=840,lag=1
master_replid:e669abc55325a3ea3f4273aeed92c3370568fb34
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:854
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:854
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值