CentOS7部署哨兵Redis(带架构图,清晰易懂)

1 缘起

要从上一篇文章如何正确使用Vertx操作Redis(3.9.4带源码分析)说起,
这篇文章分享了Vert.x连接并操作Redis,其中介绍了单体Redis和集群rRedis的连接和操作,
由于单体Redis和集群Redis之前做实验的时候都已经完成搭建(Ubuntu20.04),可以直接用,但是,哨兵的Redis没有搭建,因此,只能给出连接和操作代码,没有给出测试,
于是,周末(下雨,台风“暹芭”[xiān bā]来袭)在实验机器搭建哨兵方式的Redis集群,
测试哨兵方式下Vert.x连接和操作Redis,完善前面的文章,
由于实验机器是CentOS7的系统,
部署哨兵式Redis花了些时间,还是有参考价值的,
特分享如下文。

2 准备

整体架构如下图所示,由图可知,哨兵3个,组成哨兵集群;节点3个,一个主节点和两个从节点。哨兵监视节点集群的运行状态,并即时切换服务,保证Redis正常运转。
在这里插入图片描述

2.1 编译环境

CentOS7默认的gcc版本为4.8.5,查看gcc命令:gcc -v,结果如下图所示:
在这里插入图片描述
该版本的gcc无法编译Redis6.0.6,因此需要升级gcc,使用如下命令:

# 软件集(Software collections)
yum -y install centos-release-scl
# gcc及工具集
sudo yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils
# 启用gcc
scl enable devtoolset-9 bash

安装后的gcc版本,如下图所示:

在这里插入图片描述

2.2 Redis准备

本文使用Redis6.0.6,该版本的Redis可以实现哨兵和集群部署。

下载地址:http://download.redis.io/releases/redis-6.0.6.tar.gz

2.3 编译Redis

解压Redis到目录,如:/home/xindaqi/install/redis

tar -zxvf redis-6.0.6.tar.gz -C /home/xindaqi/install/redis

进入redis-6.0.6文件夹,编译Redis,命令:make
如下图所示:
在这里插入图片描述
在这里插入图片描述

至此,完成Redis编译,
环境准备完成。

3 配置

哨兵模式下,配置三个Redis节点(虚拟节点),因此,由一台主节点和两台从节点构成,
将上述编译Redis复制三份,存储到路径:/home/xindaqi/install/redis/sentinel,
命名为9001,9002,9003,长这样:
在这里插入图片描述
其中,9001作为主节点,9002和9003作为从节点。
节点信息如下:

序号节点IP端口描述
1192.168.1.129001主节点
2192.168.1.129002从节点
3192.168.1.129003从节点

哨兵信息如下:

序号节点IP端口描述
1192.168.1.1226379哨兵1
2192.168.1.1226380哨兵2
3192.168.1.1226381哨兵3

3.1 节点配置

3.1.1 主节点

主节点中修改Redis配置:redis.conf,
修改的地方如下:

# 注释IP绑定,Redis服务对所有IP开放
# bind 127.0.0.1 ::1
# 关闭保护模式,所有IP可访问Redis服务端
protected-mode no
# Redis服务端口
port 9001
# 守护进程运行Redis服务端
daemonize yes
# pid文件:9001
pidfile /var/run/redis_9006.pid
# 日志文件:9001
logfile /home/xindaqi/project/logs/redis-9001.log

3.1.2 从节点

从节点配置信息如下:redis.conf,
于主节点不同的是,从节点需要配置主节点分片信息(replicaof),用于同步数据和传递消息。

  • 从节点1
    端口使用9002。
# 注释IP绑定,Redis服务对所有IP开放
# bind 127.0.0.1 ::1
# 关闭保护模式,所有IP可访问Redis服务端
protected-mode no
# Redis服务端口
port 9002
# 守护进程运行Redis服务端
daemonize yes
# pid文件:9001
pidfile /var/run/redis_9006.pid
# 日志文件:9001
logfile /home/xindaqi/project/logs/redis-9002.log
# 主节点副本:同步主节点的数据到从节点
replicaof 192.168.1.12 9001
  • 从节点2
    端口使用9003。
# 注释IP绑定,Redis服务对所有IP开放
# bind 127.0.0.1 ::1
# 关闭保护模式,所有IP可访问Redis服务端
protected-mode no
# Redis服务端口
port 9003
# 守护进程运行Redis服务端
daemonize yes
# pid文件:9001
pidfile /var/run/redis_9006.pid
# 日志文件:9001
logfile /home/xindaqi/project/logs/redis-9003.log
# 主节点副本:同步主节点的数据到从节点
replicaof 192.168.1.12 9001

3.1.3 启动主从服务

完成配置后,下面可以先启动主从服务,查看相关信息。
使用Shell脚本启动服务,文件名:run_master_slave.sh
内容如下:

echo "Starting Redis master and slave"
cd /home/xindaqi/install/redis/sentinel
9001/src/redis-server 9001/redis.conf
9002/src/redis-server 9002/redis.conf
9003/src/redis-server 9003/redis.conf
echo "Redis master and slave is started!!!"

3.1.4 节点信息

  • 进入Redis主节点:
src/redis-cli -h 192.168.1.12 -p 9001
  • 查看节点信息
    节点信息有从节点数量、从节点IP和Port等。
info replication

在这里插入图片描述

  • 进入从节点
src/redis-cli -h 192.168.1.12 -p 9002
  • 查看从节点信息
    从节点中查看主节点信息,如IP和Port以及主节点工作状态:UP或者DOWN。
info replication

在这里插入图片描述

3.2 哨兵配置

完成节点配置后,接下来需要配置哨兵,
本文,哨兵同样使用集群(虚拟)方式,
配置三个哨兵节点,由前文可知,Redis6.0.6支持哨兵和集群配置,因此,
可以直接修改哨兵的配置文件:sentinel.conf。

3.2.1 sentinel

哨兵的配置中,最核心的是配置哨兵的端口和监视的主节点,
通过sentinel monitor mymaster 192.168.1.12 9001 2监控主节点,并为主节点命名,
是的,主节点的名称实在哨兵中配置的,
因为,客户端连接是通过哨兵进行的。

  • 哨兵-1
# 哨兵运行的端口
port 26379
# 守护进程运行
daemonize yes
# 进程文件
pidfile "/var/run/redis-sentinel-26379.pid"
# 日志位置
logfile "/home/xindaqi/project/logs/sentinel-26379.log"
# 哨兵监控的主节点信息
# mymaster:主节点名称
# 192.168.1.12:主节点IP
# 9001:主节点Port
# 2:认定主节点哨兵的数量,如果达到该数量的哨兵认定主节点失联,则判定主节点客观失联
sentinel monitor mymaster 192.168.1.12 9001 2
  • 哨兵-2
# 哨兵运行的端口
port 26380
# 守护进程运行
daemonize yes
# 进程文件
pidfile "/var/run/redis-sentinel-26380.pid"
# 日志位置
logfile "/home/xindaqi/project/logs/sentinel-26380.log"
# 哨兵监控的主节点信息
# mymaster:主节点名称
# 192.168.1.12:主节点IP
# 9001:主节点Port
# 2:认定主节点哨兵的数量,如果达到该数量的哨兵认定主节点失联,则判定主节点客观失联
sentinel monitor mymaster 192.168.1.12 9001 2
  • 哨兵-3
# 哨兵运行的端口
port 26381
# 守护进程运行
daemonize yes
# 进程文件
pidfile "/var/run/redis-sentinel-26381.pid"
# 日志位置
logfile "/home/xindaqi/project/logs/sentinel-26381.log"
# 哨兵监控的主节点信息
# mymaster:主节点名称
# 192.168.1.12:主节点IP
# 9001:主节点Port
# 2:认定主节点哨兵的数量,如果达到该数量的哨兵认定主节点失联,则判定主节点客观失联
sentinel monitor mymaster 192.168.1.12 9001 2

3.2.2 启动哨兵

完成哨兵配置后,接下来启动哨兵,同样使用Shell执行,
文件名:run_sentinel.sh
Shell脚本如下:

echo "Starting Redis sentinel"
cd /home/xindaqi/install/redis/sentinel
9001/src/redis-sentinel 9001/sentinel.conf
9002/src/redis-sentinel 9002/sentinel.conf
9003/src/redis-sentinel 9003/sentinel.conf
echo "Redis sentinel is started!!!"

3.2.3 查看哨兵信息

  • 进入哨兵
src/redis-cli -h 192.168.1.12 -p 26379
  • 查看信息
    通过哨兵查看当前集群中的主节点信息、从节点数量和哨兵数量,如下图所示。
info sentinel

在这里插入图片描述

3.3 端口配置

由于CentOS7默认防火墙开启,默认情况下所有端口都不对外开放,
因此,部署的服务需要对外暴露端口,需要一一开放端口,
这里需要开放的端口由:26379、26380、26381、9001、9002和9003。
以26379端口为例:

# 开启端口
sudo firewall-cmd --zone=public --add-port=26379/tcp --permanent
# 端口生效
sudo firewall-cmd --reload

4 小结

核心:
(1)环境准备:gcc升级,Redis编译;
(2)配置节点:主节点和从节点;
(3)配置哨兵:监听主节点,配置主节点名称;
(4)开放端口:CentOS7默认关闭端口,因此,需要开放哨兵和节点的所有端口。

Q&A

error: ‘struct redisServer’ has no member named ‘aof_rewrite_perc’
CentOS7默认

gcc -v

提高gcc版本,安装如下插件:

# 软件集(Software collections)
yum -y install centos-release-scl
# gcc及工具集
sudo yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils
# 启用gcc
scl enable devtoolset-9 bash
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
在CentOS 7上部署Redis集群需要以下步骤: 1. 更新yum:使用命令`yum update`来更新yum软件包管理器。 2. 安装Docker:使用命令`yum install docker`来安装Docker。 3. 启动Docker服务:使用命令`systemctl start docker`来启动Docker服务,并使用命令`systemctl enable docker`将其设置为开机启动。 4. 创建Redis集群的文件夹:使用命令`mkdir /usr/local/src/redis-cluster`来创建存放Redis集群配置文件和数据的文件夹。 5. 下载Redis配置文件:使用命令`wget https://raw.githubusercontent.com/antirez/redis/4.0/redis.conf`来下载Redis配置文件。 6. 修改Redis配置文件:使用命令`vi redis.conf`打开Redis配置文件,并进行以下修改: - 将`bind 127.0.0.1`修改为`bind 0.0.0.0`,允许外部访问Redis。 - 将`protected-mode yes`修改为`protected-mode no`,关闭保护模式。 - 将`cluster-enabled no`修改为`cluster-enabled yes`,启用集群模式。 - 将`cluster-config-file nodes-6379.conf`修改为`cluster-config-file nodes.conf`。 - 将`appendonly no`修改为`appendonly yes`,开启AOF持久化。 - 将`requirepass foobared`修改为`requirepass yourpassword`,设置Redis密码。 - 保存并退出配置文件。 7. 创建Redis集群容器:使用下面的命令来创建6个Redis容器,并启动集群: ``` for port in `seq 6000 6005`; do docker run -d -ti -p ${port}:${port} -p 1${port}:1${port} -v /usr/local/src/redis-cluster/${port}/conf/redis.conf:/usr/local/etc/redis/redis.conf -v /usr/local/src/redis-cluster/${port}/data:/data --restart always --name redis-${port} --net redis-net --sysctl net.core.somaxconn=1024 redis redis-server /usr/local/etc/redis/redis.conf; done ``` 8. 构建Redis集群:进入其中一个Redis容器,使用下面的命令来创建Redis集群: ``` docker exec -it <container_id> /bin/bash redis-cli --cluster create ip:6000 ip:6001 ip:6002 ip:6003 ip:6004 ip:6005 --cluster-replicas 1 ``` 注意替换`<container_id>`为任意一个创建的Redis容器的ID。 9. 配置每个Redis的密码:进入每个Redis容器,使用下面的命令来设置密码: ``` docker exec -it <container_id> /bin/bash redis-cli -a yourpassword config set requirepass yourpassword ``` 注意替换`<container_id>`为每个Redis容器的ID和`yourpassword`为你想设置的密码。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

天然玩家

坚持才能做到极致

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

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

打赏作者

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

抵扣说明:

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

余额充值