Redis三种集群搭建

目录

搭建单机环境

搭建主从集群

集群结构

准备

启动

配置

测试

搭建哨兵集群

集群结构

准备实例和配置

启动

测试

搭建分片集群

集群结构

准备实例和配置

启动

创建集群

测试


搭建单机环境

首先需要安装Redis所需要的依赖:

 yum install -y gcc tcl

然后将课前资料提供的Redis安装包上传到虚拟机的/usr/local/src目录:

然后进入到目录中进行解压缩:

 cd /usr/local/src
 tar -zxvf redis-6.2.4.tar.gz

进入redis目录,运行编译安装命令,将程序安装到/usr/local下:

 cd redis-6.2.4
 make & make PREFIX=/usr/local/redis install
如果没有出错,应该就安装成功了,接下来将redis的命令文件配置到环境变量中
 # 修改/etc/profile
 vim /etc/profile
 ​
 # 在文件最后追加redis的命令
 export PATH=$PATH:/usr/local/redis/bin
 ​
 # 更新配置文件
 source /etc/profile
接下来修改下配置文件:
 # 启动单节点的redis
 mkdir /usr/local/redis/single
 cd /usr/local/redis/single
 ​
 # 复制redis.conf文件到当前目录
 cp /usr/local/src/redis-6.2.4/redis.conf ./
 ​
 # 修改配置
 vim redis.conf
配置内容
 # 所有主机都可以访问 75行
 bind 127.0.0.1 --> bind 0.0.0.0
 # 端口 98行
 port 6379
 # 是否以守护线程方式执行(后台运行) 257行
 daemonize no --> daemonize yes
 # pid 文件存储位置 用来锁定写操作只有获得该锁的进程才有写入权限 289行
 pidfile /var/run/redis_6379.pid
 # 日志文件存储位置 302行
 logfile ""
 # 数据存储的名字 431行
 dbfilename 6379.rdb
 # 数据存储的路径,当前运行的目录 454行
 dir ./
启动Redis:
 redis-server redis.conf
查看redis进程
 ps -ef|grep redis
通过Redis客户端连接
redis-cli -h IP或者主机名 -p 端口
关闭redis服务
redis-cli shutdown
 

搭建主从集群

集群结构

我们搭建的主从集群结构如图:

共包含三个节点,一个主节点,两个从节点。这里我们会在同一台虚拟机中开启3个redis实例,模拟主从集群,信息如下:

PORT角色
7001master
7002slave
7003slave

准备

要在同一台虚拟机开启3个实例,必须准备三份不同的配置文件

复制资料中的 master-slave 文件夹到虚拟机中

配置文件中修改了每个实例的端口、rdb文件保存位置

启动

使用资料中的 start-all.sh快速启动3个redis实例

# 切换目录
cd master-slave/

# 添加执行权限
chmod +x st*

# 运行启动脚本
./start-all.sh
 

它相当于同时执行了下面三个命令

redis-server redis-7001.conf
redis-server redis-7002.conf
redis-server redis-7003.conf
 

配置

现在三个实例还没有任何关系,要配置主从可以使用replicaof 或者slaveof(5.0以前)命令。

修改从节点配置文件,在redis.conf中添加一行配置:replicaof <masterip> <masterport>

也就是7002-redis.conf和7003-redis.conf的第477行,添加replicaof 127.0.0.1 7001

修改完毕重启redis,然后连接主(7001节点),查看集群状态:

# 连接 7001
redis-cli -p 7001
# 查看状态
info replication
 

结果:

测试

执行下列操作以测试:

  • 利用redis-cli连接7001,执行set num 123

  • 利用redis-cli连接7002,执行get num,再执行set num 666

  • 利用redis-cli连接7003,执行get num,再执行set num 888

可以发现,只有在7001这个master节点上可以执行写操作,7002和7003这两个slave节点只能执行读操作。

搭建哨兵集群

集群结构

这里我们搭建一个三节点形成的Sentinel集群,来监管之前的Redis主从集群。如图:

三个sentinel实例信息如下:

节点IPPORT
s1127.0.0.127001
s2127.0.0.127002
s3127.0.0.127003

准备实例和配置

要在同一台虚拟机开启3个实例,必须准备三份不同的配置文件:

复制资料中的sentinel 目录到虚拟机中,修改内容

# 修改哨兵配置文件
bind 0.0.0.0
port 27001
daemonize no
pidfile /var/run/redis-sentinel.pid
logfile ""
dir /tmp
# 配置监控数据节点  mymaster是主节点的别名 后面是主机地址 端口 
# 2表示判断主节点故障需要至少2个哨兵节点同意,超过半数同意及判断节点故障,所以一般情况下哨兵节点的个数设置为奇数 84行
sentinel monitor mymaster 127.0.0.1 7001 2
# 哨兵节点定期发送ping命令判断redis数据节点和其他哨兵节点是否可达,如果超过这个时间没有相应,则判断节点不可达,默认是30秒,单位为毫秒 125行
sentinel down-after-milliseconds mymaster 30000
# 故障转移完成后,每次向新的主节点发起复制操作的从节点个数 200行
sentinel parallel-syncs mymaster 1
# 故障转移超时时间,默认3分钟 225行
sentinel failover-timeout mymaster 180000
 

启动

启动3个redis实例,启动命令:

# 第1个
redis-sentinel sentinel-27001.conf
# 第2个
redis-sentinel sentinel-27002.conf
# 第3个
redis-sentinel sentinel-27003.conf
 

注意: 设置主从配置后reids会自动更改配置文件中的内容,确保重新复制master-slave中的配置到虚拟机中

测试

尝试让master节点7001宕机,查看sentinel日志:

查看7003的日志:

查看7002的日志:

搭建分片集群

集群结构

分片集群需要的节点数量较多,这里我们搭建一个最小的分片集群,包含3个master节点,每个master包含一个slave节点,结构如下:

这里我们会在同一台虚拟机中开启6个redis实例,模拟分片集群,信息如下:

角色IPport槽分配说明
master-1127.0.0.17001{0..5460}主节点
master-2127.0.0.17002{5461..10922}主节点
master-3127.0.0.17003{10923..16383}主节点
slave-1127.0.0.17004从节点
slave-2127.0.0.17005从节点
slave-3127.0.0.17006从节点

准备实例和配置

复制资料中的 cluster目录到虚拟机中,主要修改内容如下:

bind 0.0.0.0
port 7001
daemonize yes
pidfile /var/run/redis_cluster_7001.pid
dbfilename 7001.rdb
dir ./
# 开启集群功能
cluster-enabled yes
# 集群的配置文件名称,不需要我们创建,由redis自己维护
cluster-config-file nodes-7001.conf
# 节点心跳失败的超时时间
cluster-node-timeout 5000
 

启动

使用脚本开启集群

# 加权
cd /usr/local/redis/cluster
chmod +x st*

# 启动
./start-all.sh

# 通过客户端连接
redis-cli -p 7001

# 查看集群节点信息
cluster nodes
 

创建集群

虽然服务启动了,但是目前每个服务之间都是独立的,没有任何关联。

接下来,我们需要执行命令来创建集群

redis-cli --cluster create 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005 127.0.0.1:7006 --cluster-replicas 1
命令说明:
  • redis-cli --cluster代表集群操作命令

  • create:代表是创建集群

  • --replicas 1或者--cluster-replicas 1 :指定集群中每个master的副本个数为1,此时节点总数 ÷ (replicas + 1) 得到的就是master的数量。

    因此节点列表中的前n个就是master,其它节点都是slave节点,随机分配到不同master

# 输入yes

查看集群信息

redis-cli -p 7001 cluster nodes
 

测试

尝试连接7001节点,存储一个数据:

# 连接
redis-cli -p 7001
# 存储数据
set num 123
# 读取数据
get num
# 再次存储
set a 1
结果悲剧了:

集群操作时,需要给redis-cli加上-c参数才可以:

redis-cli -c -p 7001

这次可以了:

  • 12
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

啵啵薯条

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值