Linux部署Redis哨兵集群 一主两从三哨兵(这里使用Redis6,其它版本类似)

这篇具有很好参考价值的文章主要介绍了Linux部署Redis哨兵集群 一主两从三哨兵(这里使用Redis6,其它版本类似)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、哨兵集群架构介绍

      Redis-Sentinel是redis官方推荐的高可用性解决方案,sentinel哨兵是特殊的redis服务,不提供读写服务,主要用来监控redis实例节点,当用redis作master-slave的高可用时,如果master本身宕机,redis本身或者客户端都没有实现主从切换的功能,而redis-sentinel就是一个独立运行的进程,用于监控多个master-slave集群, 自动发现master宕机,进行自动切换slave > master,类似Java这类客户端会通过sentinel发现redis主节点并与其建立连接,也可以实现读写分离。

linux redis集群模式部署,redis,运维,1024程序员节,spring boot,redis,后端,运维,linux

PS:本文使用一台主机部署,会使用不同端口区分。

二、下载安装Redis

2.1、选择需要安装的Redis版本

在官网发行版中选择一个自己需要的版本,我这里使用Redis6.2.0,小版本区别不大。
Redis发行版本列表:https://download.redis.io/releases
linux redis集群模式部署,redis,运维,1024程序员节,spring boot,redis,后端,运维,linux

2.2、下载并解压Redis

  • 下载redis到/usr/local/redis目录中
wget -P /usr/local/redis http://download.redis.io/releases/redis-6.2.0.tar.gz
  • 进入/usr/local/redis目录解压redis
cd /usr/local/redis
tar -xzf redis-6.2.0.tar.gz

linux redis集群模式部署,redis,运维,1024程序员节,spring boot,redis,后端,运维,linux

2.3、编译安装Redis

  • 安装gcc
# redis是c语言编写的,编译Redis需要gcc环境
yum -y install gcc
# 安装好后查看gcc信息
gcc -v

linux redis集群模式部署,redis,运维,1024程序员节,spring boot,redis,后端,运维,linux

  • 编译
# 进入redis-6.2.0目录
cd redis-6.2.0
# 执行make开始编译 因为我们下载的是源码需要编译成可执行文件
make

linux redis集群模式部署,redis,运维,1024程序员节,spring boot,redis,后端,运维,linux

  • 安装
# 编译成功后,执行make PREFIX=/usr/local/redis/redis-6.2.0 install 安装redis
# 这里指定目录之后,方便后续卸载,直接rm -rf /usr/local/redis/redis-6.2.0 即可删除redis
make PREFIX=/usr/local/redis/redis-6.2.0 install
PREFIX 这个关键字的作用是安装的时候用于指定程序存放的路径,假设不添加该关键字Linux会将:
	可执行文件存放在/usr/local/bin目录;
	库文件会存放在/usr/local/lib目录;
	配置文件会存放在/usr/local/etc目录;
	其他的资源文件会存放在usr/local/share目录

linux redis集群模式部署,redis,运维,1024程序员节,spring boot,redis,后端,运维,linux

三、搭建Redis一主两从集群

本文使用一台主机部署,会使用不同端口区分,主节点6379、从节点分别使用6380和6381。

3.1、准备配置文件

先进入Redis解压目录,后续都在该目录下操作

cd /usr/local/redis/redis-6.2.0
3.1.1、准备主节点6379配置文件
  • 创建一个目录用来存放节点配置和其它信息
mkdir -p /usr/local/redis/redis-6.2.0/node/6379
  • 拷贝一份redis.conf到./node/6379目录中作为主节点配置文件。
cp redis.conf ./node/6379/redis.conf
  • 修改几个配置
# 编辑拷贝的配置文件,,修改几个配置信息
vi ./node/6379/redis.conf
# 绑定的主机地址,建议填redis安装服务器的业务私网地址
# 这里为了方便直接找到这个配置注释了
#bind 127.0.0.1 -::1

# redis进程的端口号 默认是6379
port 6379

# 是否开启保护模式,默认开启。要是配置里没有指定bind和密码,开启该参数后,redis只会本地进行访问,拒绝外部访问,这里关闭保护模式设置为no。
protected-mode no

# redis进程是否以守护进程的方式运行,yes为是(后台运行),no为否(不以守护进程的方式运行会占用一个终端,终端关闭redis服务也会关闭)。
daemonize yes

# 指定redis进程的PID文件存放位置
pidfile /var/run/redis_6379.pid

# log文件输出位置
logfile /usr/local/redis/redis-6.2.0/node/6379/redis.log

# 指定持久化存放目录(默认当前启动时所在目录),因为我这里是一台机器部署的要区分开每个节点持久化文件存放的目录
dir /usr/local/redis/redis-6.2.0/node/6379

# 设置redis连接密码,如果配置了连接密码,客户端在连接redis是需要通过AUTH<password>命令提供密码,默认关闭
requirepass 123456

# 当master设置了密码保护时,slave服务连接master的密码
# 主节点中也要配置,如果不配置在主节点宕机后,哨兵选择了其它从节点作为主节点,如果不配置主节点授权密码,那么在这个节点重新加入集群时无法同步新的主节点数据,因为没有主节点授权密码
masterauth 123456
3.1.2、准备从节点6380配置文件
  • 创建一个目录用来存放节点配置和其它信息
mkdir -p /usr/local/redis/redis-6.2.0/node/6380
  • 拷贝一份redis.conf到./node/6380目录中作为主节点配置文件。
cp redis.conf ./node/6380/redis.conf
  • 修改几个配置
# 编辑拷贝的配置文件,,修改几个配置信息
vi ./node/6380/redis.conf
# 绑定的主机地址,建议填redis安装服务器的业务私网地址
# 这里为了方便直接找到这个配置注释了
#bind 127.0.0.1 -::1

# redis进程的端口号 默认是6379
port 6380

# 是否开启保护模式,默认开启。要是配置里没有指定bind和密码,开启该参数后,redis只会本地进行访问,拒绝外部访问,这里关闭保护模式设置为no。
protected-mode no

# redis进程是否以守护进程的方式运行,yes为是(后台运行),no为否(不以守护进程的方式运行会占用一个终端,终端关闭redis服务也会关闭)。
daemonize yes

# 指定redis进程的PID文件存放位置
pidfile /var/run/redis_6380.pid

# log文件输出位置
logfile /usr/local/redis/redis-6.2.0/node/6380/redis.log

# 指定持久化存放目录(默认当前启动时所在目录),因为我这里是一台机器部署的要区分开每个节点持久化文件存放的目录
dir /usr/local/redis/redis-6.2.0/node/6380

# 设置redis连接密码,如果配置了连接密码,客户端在连接redis是需要通过AUTH<password>命令提供密码,默认关闭
requirepass 123456

# 当master设置了密码保护时,slave服务连接master的密码
masterauth 123456

# 设置主机的 ip+ 端口,来指明主机的redis
replicaof 10.0.20.13 6379

# 配置从节点读写权限,支持参数[yes,no],yes:只读 no:支持读写操作,从节点默认yes
replica-read-only yes
3.1.3、准备从节点6381配置文件
  • 创建一个目录用来存放节点配置和其它信息
mkdir -p /usr/local/redis/redis-6.2.0/node/6381
  • 拷贝一份redis.conf到./node/6381目录中作为主节点配置文件。
cp redis.conf ./node/6381/redis.conf
  • 修改几个配置
# 编辑拷贝的配置文件,,修改几个配置信息
vi ./node/6381/redis.conf
# 绑定的主机地址,建议填redis安装服务器的业务私网地址
# 这里为了方便直接找到这个配置注释了
#bind 127.0.0.1 -::1

# redis进程的端口号 默认是6379
port 6381

# 是否开启保护模式,默认开启。要是配置里没有指定bind和密码,开启该参数后,redis只会本地进行访问,拒绝外部访问,这里关闭保护模式设置为no。
protected-mode no

# redis进程是否以守护进程的方式运行,yes为是(后台运行),no为否(不以守护进程的方式运行会占用一个终端,终端关闭redis服务也会关闭)。
daemonize yes

# 指定redis进程的PID文件存放位置
pidfile /var/run/redis_6381.pid

# log文件输出位置
logfile /usr/local/redis/redis-6.2.0/node/6381/redis.log

# 指定持久化存放目录(默认当前启动时所在目录),因为我这里是一台机器部署的要区分开每个节点持久化文件存放的目录
dir /usr/local/redis/redis-6.2.0/node/6381

# 设置redis连接密码,如果配置了连接密码,客户端在连接redis是需要通过AUTH<password>命令提供密码,默认关闭
requirepass 123456

# 当master设置了密码保护时,slave服务连接master的密码
masterauth 123456

# 设置主机的 ip+ 端口,来指明主机的redis
replicaof 10.0.20.13 6379

# 配置从节点读写权限,支持参数[yes,no],yes:只读 no:支持读写操作,从节点默认yes
replica-read-only yes

3.2、启动Redis主从复制集群

  • 启动Redis
# 携带配置启动主节点6379
./bin/redis-server ./node/6379/redis.conf

# 携带配置启动从节点6380
./bin/redis-server ./node/6380/redis.conf
# 携带配置启动从节点6381
./bin/redis-server ./node/6381/redis.conf
  • 查看各节点启动状态
# 查看redis进程,这里可以看到启动了三个进程
# 如果有进程没有启动成功可以去每个节点信息存储目录查看日志,分析异常原因
ps -aux | grep redis

linux redis集群模式部署,redis,运维,1024程序员节,spring boot,redis,后端,运维,linux

3.3、查看Redis集群信息和主从复制效果

  • 1、使用Redis自带redis-cli工具连接主节点查看集群信息
# 使用密码连接本机端口号为6379的redis
./bin/redis-cli -p 6379 -a 123456

# 查看集群信息
127.0.0.1:6379> info replication

linux redis集群模式部署,redis,运维,1024程序员节,spring boot,redis,后端,运维,linux

  • 2、在主节点写入数据
127.0.0.1:6379> set names kerwin
127.0.0.1:6379> get names

linux redis集群模式部署,redis,运维,1024程序员节,spring boot,redis,后端,运维,linux

  • 3、登录从节点查看集群信息和主节点写入的数据
# 使用密码连接本机端口号为6379的redis
./bin/redis-cli -p 6380 -a 123456

# 查看集群信息
127.0.0.1:6380> info replication
# 获取key为names的数据
127.0.0.1:6380> get names

linux redis集群模式部署,redis,运维,1024程序员节,spring boot,redis,后端,运维,linux

3.4、关闭Redis

# 普通关闭,通过redis-cli的shutdown关闭
./bin/redis-cli -p 6379 -a 123456 shutdown

# 强制关闭
## 查看redis的进程pid,通过kill -9强制关闭
ps -aux | grep redis 
kill -9 pid

四、搭建Redis三哨兵集群

本文使用一台主机部署,会使用不同端口区分哨兵,分别使用26379、26380、26381。

4.1、准备配置文件

先进入Redis解压目录,后续都在该目录下操作

cd /usr/local/redis/redis-6.2.0
4.1.1、准备节点26379配置文件
  • 1、创建一个目录用来存放节点配置和其它信息
mkdir -p /usr/local/redis/redis-6.2.0/sentinel/26379
  • 2、拷贝一份sentinel.conf到./sentinel/26379中
cp sentinel.conf ./sentinel/26379/sentinel.conf
  • 3、修改几个配置
vi ./sentinel/26379/sentinel.conf
#端口默认为26379。
port 26379

# 是否开启保护模式,默认开启。要是配置里没有指定bind和密码,开启该参数后,redis只会本地进行访问,拒绝外部访问,这里关闭保护模式设置为no。
protected-mode no

# redis进程是否以守护进程的方式运行,yes为是(后台运行),no为否(不以守护进程的方式运行会占用一个终端,终端关闭redis服务也会关闭)。
daemonize yes

#守护进程pid存储文件(默认位置 /var/run/redis-sentinel.pid)
pidfile /var/run/redis-sentinel_26379.pid

#日志文件
logfile /usr/local/redis/redis-6.2.0/sentinel/26379/sentinel.log

#sentinel工作目录(默认/tmp)
dir  /usr/local/redis/redis-6.2.0/sentinel/26379

# 指定Redis主节点主机IP地址和端口,ip根据实际情况调整,mymaster这个名称随便取,下面配置时也需要指定这个名称,客户端连接时也会使用
# 最后的2是指需要有2个以上sentinel节点认为redis主节点失效,才是真的失效,一般为(sentinel总数/2+1)
sentinel monitor mymaster 10.0.20.13 6379 2

# 配置连接密码,此处的密码需要与 redis.conf里面配置的连接密码一致
sentinel auth-pass mymaster 123456

# 这里设置了主机多少毫秒无响应,则认为挂了,,默认:30000毫秒
sentinel down-after-milliseconds mymaster 30000

# 主备切换时,最多有多少个slave同时对新的master进行同步,这里设置为默认的1
sentinel parallel-syncs mymaster 1

#故障转移的超时时间毫秒,默认:180000毫秒
sentinel failover-timeout mymaster 180000
4.1.2、准备节点26380配置文件
  • 1、创建一个目录用来存放节点配置和其它信息
mkdir -p /usr/local/redis/redis-6.2.0/sentinel/26380
  • 2、拷贝一份26379的sentinel.conf到./sentinel/26380中,方便修改
cp ./sentinel/26379/sentinel.conf ./sentinel/26380/sentinel.conf
  • 3、修改几个配置,这里因为是从26379拷贝过来的只需要修改端口和一些文件存储地址即可
vi ./sentinel/26380/sentinel.conf
#端口默认为26379。
port 26380

#守护进程pid存储文件(默认位置 /var/run/redis-sentinel.pid)
pidfile /var/run/redis-sentinel_26380.pid

#日志文件
logfile /usr/local/redis/redis-6.2.0/sentinel/26380/sentinel.log

#sentinel工作目录(默认/tmp)
dir  /usr/local/redis/redis-6.2.0/sentinel/26380
4.1.3、准备节点26381配置文件
  • 1、创建一个目录用来存放节点配置和其它信息
mkdir -p /usr/local/redis/redis-6.2.0/sentinel/26381
  • 2、拷贝一份26379的sentinel.conf到./sentinel/26381中,方便修改
cp ./sentinel/26379/sentinel.conf ./sentinel/26381/sentinel.conf
  • 3、修改几个配置,这里因为是从26379拷贝过来的只需要修改端口和一些文件存储地址即可
vi ./sentinel/26381/sentinel.conf
#端口默认为26379。
port 26381

#守护进程pid存储文件(默认位置 /var/run/redis-sentinel.pid)
pidfile /var/run/redis-sentinel_26381.pid

#日志文件
logfile /usr/local/redis/redis-6.2.0/sentinel/26381/sentinel.log

#sentinel工作目录(默认/tmp)
dir  /usr/local/redis/redis-6.2.0/sentinel/26381

4.2、启动sentinel集群

  • 启动sentinel
# 携带配置启动哨兵26379节点
./bin/redis-sentinel ./sentinel/26379/sentinel.conf
# 携带配置启动哨兵26380节点
./bin/redis-sentinel ./sentinel/26380/sentinel.conf
# 携带配置启动哨兵26381节点
./bin/redis-sentinel ./sentinel/26381/sentinel.conf
  • 查看各节点启动状态
# 查看redis-sentinel进程,这里可以看到启动了三个进程
# 如果有进程没有启动成功可以去每个节点信息存储目录查看日志,分析异常原因
ps -aux | grep redis-sentinel

linux redis集群模式部署,redis,运维,1024程序员节,spring boot,redis,后端,运维,linux

4.3、查看三个哨兵节点信息

# 使用redis-cli连接哨兵
./bin/redis-cli -p 端口
# 连接上后查看哨兵节点信息
127.0.0.1:26379> info sentinel

可以看到一个master主节点,两个salve节点状态,三个哨兵节点都正常
linux redis集群模式部署,redis,运维,1024程序员节,spring boot,redis,后端,运维,linux

sentinel集群都启动完毕后,会将哨兵集群的元数据信息写入所有sentinel的配置文件里去(追加在文件的
最下面),可以打开一个查看一下。

vi ./sentinel/26379/sentinel.conf

linux redis集群模式部署,redis,运维,1024程序员节,spring boot,redis,后端,运维,linux

4.4、测试哨兵容灾切换效果

  • 1、模拟主节点宕机
# 通过redis-cli的shutdown关闭Redis主节点
./bin/redis-cli -p 6379 -a 123456 shutdown
# 确认主节点6379进程已经下线
ps -aux | grep redis-server

linux redis集群模式部署,redis,运维,1024程序员节,spring boot,redis,后端,运维,linux

  • 2、查看是否将从节点切换成主节点
# 查看6380和6381主从复制信息
./bin/redis-cli -p 6380 -a 123456 info replication
./bin/redis-cli -p 6381 -a 123456 info replication

这里可以看到主节点6379下线后,哨兵将6381切换成了主节点。
linux redis集群模式部署,redis,运维,1024程序员节,spring boot,redis,后端,运维,linux

4.5、关闭Redis哨兵

# 普通关闭,通过redis-cli的shutdown关闭
./bin/redis-cli -p 端口号 shutdown

# 强制关闭
## 查看redis的进程pid,通过kill -9强制关闭
ps -aux | grep redis-sentinel
kill -9 pid

五、注意事项

5.1、远程连接问题

虽然Redis的配置中都开启了远程连接,但是服务器的端口可能没有开放远程连接,需要将Redis服务和哨兵的端口打开外部才能连接上,或者将防火墙关闭,这里是本地操作,如果是云服务器则需要设置对应安全组。

# 开放指定端口号
firewall-cmd --zone=public --add-port=端口号/tcp --permanent
# 重启防火墙(修改配置后要重启防火墙)
firewall-cmd --reload

#检测防火墙状态 active (running),就是运行状态
systemctl status firewalld
# 停止防火墙
systemctl stop firewalld
# 永久关闭
systemctl disable firewalld

5.2、Redis节点注册到哨兵的IP问题

linux redis集群模式部署,redis,运维,1024程序员节,spring boot,redis,后端,运维,linux
我们可以查看哨兵中Redis节点的IP,我这里使用的云服务器,哨兵中注册的Redis会使用到内网IP,可以自己ip addr查看一下,就是我们的内网卡,内网通过这个IP连接是没有问题的,但是外网肯定不能使用这个IP,会使用一个云服务给我们提供的外网IP,如果我们直接连接Redis服务,通过外网加6379端口肯定是没有问题的,但是我们外网别的应用中会通过连接到哨兵,然后通过哨兵获取Redis集群信息,也就是说我们通过哨兵获取到的Redis服务IP是服务器的内网IP,例如我这里获取到master节点IP就会是10.0.20.13这样一个内网地址,在外部网络是无法访问的。

六、SpringBoot集成Redis主从架构实现读写分离(哨兵模式)

跳转:https://blog.csdn.net/weixin_44606481/article/details/134017117文章来源地址https://www.toymoban.com/news/detail-765469.html

到了这里,关于Linux部署Redis哨兵集群 一主两从三哨兵(这里使用Redis6,其它版本类似)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【云原生-K8s-1】kubeadm搭建k8s集群(一主两从)完整教程及kubernetes简介

    🍁 博主简介   🏅云计算领域优质创作者   🏅华为云开发者社区专家博主   🏅阿里云开发者社区专家博主 💊 交流社区: 运维交流社区 欢迎大家的加入!   Kubernetes(简称:k8s) 是Google在2014年6月开源的一个容器集群管理系统,使用Go语言开发,用于管理云平台中多

    2024年02月07日
    浏览(66)
  • MySQL:一主两从架构(读写分离)

    slave会从master读取binlog来进行数据同步 (1): master将数据改变记录到二进制日志binlog中; (2): slave上执行 start slave 命令后,slave会创建一个IO线程,用来连接master,请求master中的binlog; (3): 当slave连接master时,master会创建一个log dump线程,用于发送binlog内容。在读取binlog的内容的操

    2023年04月09日
    浏览(39)
  • Mysql主从数据库搭建(一主两从)

    目录 1、服务器规划 2、主从同步流程 3、主从搭建 3.1、master节点上配置文件修改 3.2、master节点创建同步用户和权限 3.3、slave1和slave2节点配置文件修改 3.4、slave1和slave2节点执行同步任务 3.5、解决虚拟机克隆导致mysql所有服务器uuid都一样的问题 4、bin-log相关说明 5、主从同步注

    2024年02月11日
    浏览(47)
  • 使用docker进行MYSQL主从复制(一主两从)

    目录 概述主从介绍 主从作用 主从作用有: 主从形式有:  配置步骤 主要配置 1创建三个进程 2修改配置文件 3主机配置 4从机配置 5将文件修改后,复制到容器里面 6进入主机进行配置 6.1创建用户 6.2给用户授权 6.3刷新权限 7进入从机进行配置 对M1S1 对M2S2  8最后开启主从 9测

    2024年02月16日
    浏览(43)
  • MySQL8.xx一主两从复制安装与配置

    docker实战(一):centos7 yum安装docker docker实战(二):基础命令篇 docker实战(三):docker网络模式(超详细) docker实战(四):docker架构原理 docker实战(五):docker镜像及仓库配置 docker实战(六):docker 网络及数据卷设置 docker实战(七):docker 性质及版本选择 认知升维: 道、法、术、器、势 多台服务器间

    2024年02月13日
    浏览(42)
  • Kubernetes(k8s)上搭建一主两从的mysql8集群

    本文章视频教程地址:https://www.bilibili.com/video/BV1iw411e7ZE/ 首先你需要准备一个kubernetes集群和一台nfs服务器,为了方便,我就用 k8s-master 来做nfs服务器了。我的服务器IP地址和用途如图: IP地址 主机名 用途 192.168.1.160 k8s-master Kubernetes主服务器兼nfs服务器 192.168.1.161 K8s-node01 Ku

    2024年02月06日
    浏览(52)
  • redis基础及哨兵集群部署、故障切换

    一、概述     Redis是一个开源的,使用C语言编写,支持网络,可基于内存工作亦可持久化(AOF、RDB)的日志型,key-values(键值对)数据库,一个速度极快的非关系型数据库,也就是我们所说的NoSQL数据库,他可以存储(key)与5种不同类型的值(value)之间的映射(mapping),

    2024年02月12日
    浏览(60)
  • Redis(主从复制、哨兵模式、集群)概述及部署

    目录 一、Redis高可用 二、redis持久化 2.1 持久化的功能 2.2 Redis 提供两种方式进行持久化 2.3 RDB 持久化 2.3.1 触发条件  2.3.2 执行流程 2.3.3 启动时加载 2.4 AOF持久化 2.5 执行流程 2.5.1 命令追加(append)  2.5.2 文件写入(write)和文件同步(sync) 2.5.3 文件重写(rewrite) 2.5.3.1 文件重写的

    2024年02月15日
    浏览(41)
  • redis(6.0以上版本)哨兵、生产级redis cluster集群部署、测试、特点

    目录 一、特点    可自由指定主从    可自定义分配哈希槽    先建立单个实例,在分配主从 二、生产级redis cluster部署 :一台服务器即可(192.168.1.134) 1关闭防火墙 2获取redis6.2.12tar包(官网获取) 3.为了方便管理创建单独目录 4.修改配置文件 5.启动服务 6.用集群模式登

    2024年02月12日
    浏览(40)
  • redis7部署集群:包含主从模式、哨兵模式、Cluster集群模式等三种模式

    前言: redis部署集群常见的一般有三种模式:主从模式,Sentinel(哨兵模式),Redis Cluster(高可用Cluster集群),根据不同的需求可自定义选择部署方式。 Redis 主从模式(Replication) 优点: 数据备份:主节点的数据会复制到从节点,提供了数据冗余和一定程度的故障恢复能力

    2024年01月20日
    浏览(105)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包