java redis 主从 哨兵,Redis单机搭建主从复制以及哨兵机制

本文介绍如何在CentOS7环境下搭建Redis哨兵集群,包括环境准备、多节点配置、主从复制及哨兵配置等步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、环境准备 centos 7  创建一个目录

mkdir /usr/local/redis-sentry

上传redis安装到到/usr/local/redis-sentry目录

9915a069d102b771974060822f4a948e.png

解压安装包到当前目录

tar -zxvf redis-3.2.8.tar.gz

a85ef90850a7cd91ea8183c6ed1f8a8c.png

进入到解压目录进行make

cd ./redis-3.2.8

make

编译完成后进入src目录进行安装

##我这里把redis安装到了redis-sentry目录下

make install PREFIX=/usr/local/redis-sentry

创建redis启动文件目录

mkdir /usr/local/redis-sentry/etc

现在我们预备四个节点,一个主节点,两个从节点,那么我可以通过端口不同模拟三台机器,具体操作就是配置三个redis.conf文件,分别配置不同的端口,启动四个实例即可达到模拟多节点的效果

接下来我们在/usr/local/redis-sentry/etc目录下面创建四个文件夹 分别为7001,7002,7003

cd /usr/local/redis-sentry/etc

mkdir ./7001 ./7002 ./7003

复制redis.conf分别到./7001 ./7002 ./7003  三个目录

##进入到redis解压目录去复制redis.conf配置文件到三个节点目录下

cd /usr/local/redis-sentry/redis-3.2.8

cp redis.conf /usr/local/redis-sentry/etc/7001/

cp redis.conf /usr/local/redis-sentry/etc/7002/

cp redis.conf /usr/local/redis-sentry/etc/7003/

创建日志和数据存储目录

cd /usr/local/redis-sentry/

mkdir data/

mkdir logs/

mkdir data/7001 data/7002 data/7003

mkdir logs/7001 logs/7002 logs/7003

修改7001节点的配置文件

cd /usr/local/redis-sentry/etc/7001/

vi redis.conf

###具体需要修改的配置

port 7001

####redis一般都在内网运行,所以注释掉#bind 127.0.0.1

# bind 127.0.0.1

关闭保护模式,protected-mode 把yes改为no

protected-mode no

##开启后台守护进程模式启动

daemonize yes

##密码

requirepass 123456

##

masterauth 123456

pidfile /var/run/redis_7001.pid

###指明日志文件名

logfile "/usr/local/redis-sentry/logs/7001/7001.log"

dir /usr/local/redis-sentry/data/7001

修改7002节点的配置文件

cd /usr/local/redis-sentry/etc/7002/

vi redis.conf

###具体需要修改的配置

port 7002

###注释掉bind属性

# bind 127.0.0.1

protected-mode no

##开启后台守护进程模式启动

daemonize yes

##密码

requirepass 123456

##

masterauth 123456

pidfile /var/run/redis_7002.pid

logfile "/usr/local/redis-sentry/logs/7002/7002.log"

dir /usr/local/redis-sentry/data/7002

修改7003节点的配置文件

cd /usr/local/redis-sentry/etc/7003/

vi redis.conf

###具体需要修改的配置

port 7003

###注释掉bind属性

# bind 127.0.0.1

protected-mode no

##开启后台守护进程模式启动

daemonize yes

##密码

requirepass 123456

##

masterauth 123456

pidfile /var/run/redis_7003.pid

logfile "/usr/local/redis-sentry/logs/7003/7003.log"

dir /usr/local/redis-sentry/data/7003

启动redis实例

/usr/local/redis-sentry/bin/redis-server /usr/local/redis-sentry/etc/7001/redis.conf

/usr/local/redis-sentry/bin/redis-server /usr/local/redis-sentry/etc/7002/redis.conf

/usr/local/redis-sentry/bin/redis-server /usr/local/redis-sentry/etc/7003/redis.conf

接下来配置主从和哨兵

上面说了7001为主,那么我现在配置7002,7003的同步数据

在/user/local/redis-sentry/etc/7002/redis.conf  和 /user/local/redis-sentry/etc/7003/redis.conf中配置如下:

vi /usr/local/redis-sentry/etc/7002/redis.conf

##配置如下:

slaveof 192.168.56.100 7001

vi /usr/local/redis-sentry/etc/7003/redis.conf

slaveof 192.168.56.100 7001

a96197e4b6a00d7880d31fa76a2a2539.png

链接7001节点使用info replication命令查看发现该节点如预期结果为master节点

9cf4112370c52e26cdf5b899dfcf6d9d.png

7002和7003节点查看为slave

ee696d610611ccfc144f0bc2cabd7369.png

36558ce91a10172c9ce943b74f077457.png

接下来我们需要配置哨兵节点,redis哨兵的启动和redis实例的启动没有关系。所以可以在任何机器上启动redis哨兵。至少要保证有两个哨兵在运行,要不然宕机后哨兵会找不到主节点,所以我分别在7002和7003配置

在7002节点创建哨兵配置文件

cd /usr/local/redis-sentry/etc/7002/

vi sentinel.conf

#sentinel端口

port 27002

#工作路径,注意路径不要和主重复,下面给出创建目录

dir "/usr/local/redis-sentry/sentry/7002/"

# 守护进程模式

daemonize yes

#关闭保护模式

protected-mode no

# 指明日志文件名

logfile "./sentinel.log"

#哨兵监控的master,主从配置一样,这里只用输入redis主节点的ip/port和法定人数。

sentinel monitor mymaster 192.168.56.100 7001 1

# master或slave多长时间(默认30秒)不能使用后标记为s_down状态。

sentinel down-after-milliseconds mymaster 5000

#若sentinel在该配置值内未能完成failover操作(即故障时master/slave自动切换),则认为本次failover失败。

sentinel failover-timeout mymaster 18000

#设置master和slaves验证密码

sentinel auth-pass mymaster 123456

#指定了在执行故障转移时, 最多可以有多少个从服务器同时对新的主服务器进行同步

sentinel parallel-syncs mymaster 1

复制7002节点的哨兵配置文件到7003

cp sentinel.conf ../7003/

##修改哨兵端口

vi /usr/local/redis-sentry/etc/7003/sentinel.conf

##修改prot为

port 27003

创建哨兵工作路径目录

mkdir /usr/local/redis-sentry/sentry

mkdir /usr/local/redis-sentry/sentry/7002/

mkdir /usr/local/redis-sentry/sentry/7003/

启动哨兵

/usr/local/redis-sentry/bin/redis-sentinel /usr/local/redis-sentry/etc/7002/sentinel.conf

/usr/local/redis-sentry/bin/redis-sentinel /usr/local/redis-sentry/etc/7003/sentinel.conf

sentinel参数在运行时可以使用SENTINEL SET命令更改

上面配置中的mymaster为该主从的名字,代码中会使用

通过哨兵查看集群的信息:

##连接哨兵

redis-cli -p 27002

##查看master的状态

sentinel master mymaster

##查看salves的状态

SENTINEL slaves mymaster

##查看哨兵的状态

SENTINEL sentinels mymaster

##获取当前master的地址

SENTINEL get-master-addr-by-name mymaster

##查看哨兵信息

info sentinel

查看哨兵信息如下图

12c94e30ed8ee01706627d75418e77ab.png

查看redis进行

7f29bec6fa9851d66e67f6466f4028dc.png

现在我们kill 掉7001主节点,看是否会重新选举master

551795268041dc031474ca3172789b5a.png

ce66771695813476fb9d7869e646d7a3.png

f8b2ba52ccf6af53b06a10634cbedbe4.png

0776c42cb65b0c09b5efca3458801132.png

7003已经被选为master

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值