Redis 哨兵集群的搭建

搭建一主二从三哨兵模式

(一)安装redis

  1. 在Linux中执行以下命令进行redis的下载:
 wget http://download.redis.io/releases/redis-5.0.0.tar.gz
  1. 解压文件到/user/local/redis文件夹下:
 mv redis-5.0.0.tar.gz  /usr/local/
 cd /usr/local
 tar -xzvf redis-5.0.0.tar.gz
 mv redis-5.0.0/ redis
  1. 进入redis目录执行编译指令:
 cd redis
 make&&make install

(二)搭建主从节点

  1. 在 redis目录下分别建bin和config两个目录,bin目录存放redis的启动文件,工作区,以及日志信息,config目录专门存放各种配置文件;
 mkdir bin
 mkdir config
  1. 复制启动文件和配置文件,Redis文件夹中的src中的文件非常多,我们将常用的几个分别复制到新建的bin和config中:
 cd src
 cp mkreleasehdr.sh redis-benchmark redis-check-aof redis-check-rdb redis-cli redis-server redis-sentinel /usr/local/redis/bin
 cp redis.conf /usr/local/redis/config
 cp sentinel.conf /usr/local/redis/config
  1. 配置conf文件
    我们一共需要有一个主节点和两个从节点,因此我们需要三个redis.conf文件
    首先配置主节点: 进入config文件夹,打开redis.conf文件进行修改
 cd config
 vim redis.config

改动的几个地方:

在bind前面加'#'将它注释掉 大概在69行
# 绑定的主机地址(填redis安装服务器的业务私网地址)
# bind:127.0.0.1   

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

 92行 这个端口号为主节点的端口号,可以自己更改,我的为默认的6379
# redis进程的端口号
port:6379

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

 158行 可以适当改一下名字
# 指定redis进程的PID文件存放位置
pidfile /var/run/redis_6479.pid


 171行,可以改为自定义的文件名
# log文件输出位置
logfile "/redis6379.log"

 253行 可以自行更改 不改也不影响
# 指定本地数据库文件名
dbfilename dump.rdb

 263行 可以自行更改 不改也不影响
# 指定本地数据库存放目录(默认当前redis安装目录)
dir  ./

 218# 指定在多长时间内,有多少次更新操作,就将数据同步到数据文件,可以多个条件配合
save 900 1
save 300 10 
save 60 10000
(分别表示 900 秒(15 分钟)内有 1 个更改,300 秒(5 分钟)内有 10 个更改以及 60 秒内有 10000 个更改。)

在上述文件修改完成之后,按ESC–>输入 :wq 保存退出

  1. 防火墙设置:
    先开启防火墙,开放指定端口6379:
 systemctl start firewalld
 firewall-cmd --zone=public --add-port=6379/tcp --permanent

重启防火墙(修改配置后要重启防火墙):

 firewall-cmd --reload
  1. 启动主节点redis服务:
    进入bin目录启动服务:
 cd ../bin
 ./redis-server /usr/local/redis/config/redis.conf

查看正在运行的节点:

 ps -ef | grep redis

查看节点的具体信息:

./redis-cli -p 6379
info replication
exit退出
  1. 配置两个从结点:
    复制两份redis.conf文件,再分别修改他们:
cd ../config
cp redis.conf /usr/local/redis/config/redis1.conf
cp redis.conf /usr/local/redis/config/redis2.conf
vim redis1.conf
vim redis2.conf

redis1.conf文件修改的地方:


# bind 127.0.0.1

protected-mode no

port 6380

daemonize yes

pidfile "/var/run/redis_6380.pid"

logfile "/redis6380.log"

dbfilename "dump1.rdb"

dir "/usr/local/redis/bin"

redis2.conf文件修改的地方:


# bind 127.0.0.1

protected-mode no

port 6381

daemonize yes

pidfile "/var/run/redis_6381.pid"

logfile "/redis6381.log"

dbfilename "dump2.rdb"

dir "/usr/local/redis/bin"

配置防火墙:

firewall-cmd --zone=public --add-port=6380/tcp --permanent
firewall-cmd --zone=public --add-port=6381/tcp --permanent
firewall-cmd --reload

启动两个节点的服务:

 cd ../bin
 ./redis-server /usr/local/redis/config/redis1.conf
 ./redis-server /usr/local/redis/config/redis2.conf

主从关系建立:
在两个从结点处分别执行:

./redis-cli -p 6380
SLAVEOF 127.0.0.1 6379
info replication

设置完成后两个从节点的role显示自己是一个从结点,从属于主节点6379 (我这个更改过了,它从属的是6380. 6380是主节点)

在这里插入图片描述

至此,一主二从三个结点建立成功,可以通过ps -ef | grep redis查看正在运行的节点.

  1. 主从数据同步验证
    接下来我们在主机(master)添加几条数据,看从机(slave)是否可以获取到,如果能获取,说明数据已经同步到了从机,主机添加数据,如下:
    (我这里已经更换过主节点,我的主节点是6380)
    在这里插入图片描述
    从结点不能写数据,只能读数据,如果向从结点写数据会报错:
    (error) READONLY You can't write against a read only replica.

(三)配置三个哨兵

  1. 复制三个sentinel.conf文件,并修改他们:
 cd ../config
 cp sentinel.conf /usr/local/redis/config/sentinel1.conf
 cp sentinel.conf /usr/local/redis/config/sentinel2.conf
 cp sentinel.conf /usr/local/redis/config/sentinel3.conf
 
 vim sentinel1.conf
 vim sentinel2.conf
 vim sentinel3.conf

文件中改动的地方:

port 26379

#设置为后台启动
daemonize yes


pidfile "/var/run/redis-sentinel1.pid"

#日志文件
logfile "/sentinel1.log"

#指定主机IP地址和端口,并且指定当有2台哨兵认为主机挂了,则对主机进行容灾切换
#这一项三个哨兵都是一样的
sentinel monitor mymaster 127.0.0.1 6380 2

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

其他两个哨兵也是更改这几个位置,但是最后两项每个哨兵都要保持一致。端口号port,日志文件名字和pidfile设定为不一样的。

  1. 防火墙配置:
firewall-cmd --add-port=26379/tcp --permanent --zone=public
firewall-cmd --add-port=26380/tcp --permanent --zone=public
firewall-cmd --add-port=26381/tcp --permanent --zone=public
firewall-cmd --reload
  1. 启动三个哨兵:
 cd ../bin
 ./redis-sentinel /usr/local/redis/config/sentinel1.conf
 ./redis-sentinel /usr/local/redis/config/sentinel2.conf
 ./redis-sentinel /usr/local/redis/config/sentinel3.conf
  1. 查看三个哨兵节点信息
    ./redis-cli -p 26379
    info sentinel
    可以看到一个master主节点,两个salve节点状态,三个哨兵节点都正常。
    在这里插入图片描述

5.容灾切换验证

先模拟主机宕机,将主机 redis 服务关闭,进入6379节点redis客户端:

 ./redis-cli -p 6379 shutdown

待6379关掉之后,等待一分钟左右,再次查看其他的两个节点,这个时候会发现其中一个节点已经成为了主节点,再次启动6379节点,可以查看到它的状态已经变成了从节点(slave)
我这里主节点变成了6380.
在这里插入图片描述

再次启动6379节点,发现6379变成了6380的从节点:

在这里插入图片描述

(四)配置完成

查看此时所有的服务:

在这里插入图片描述

关闭服务的顺序为:先关闭哨兵服务,再关闭节点服务
开启顺序为:先开启节点服务,再开启哨兵服务

命令为:

 ./redis-cli -p 6379 shutdown


主要参考:

Linux下Redis哨兵集群模式搭建详解(1主2从+3哨兵)
Linux_搭建Redis集群哨兵模式

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

每周都想吃火锅

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

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

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

打赏作者

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

抵扣说明:

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

余额充值