一个服务器redis部署哨兵集群

一、部署主从架构(一主二从)

由于 src 下文件非常多,我们可以将几个常用的命令和 conf 配置文件复制出来进行统一管理,如下:

1、新建bin目录和etc目录

cd /data/server/redis/
mkdir etc
mkdir bin
cd etc/
mkdir redis_master
mkdir redis_slave1
mkdir redis_slave2

说明:
redis_master作为master节点配置文件的目录
redis_slave1作为第一个slave节点配置文件的目录
redis_slave2作为第二个slave节点配置文件的目录

2、回到安装目录将配置文件拷贝对应目录下

cp redis.conf /data/server/redis/etc/redis_master
cp redis.conf /data/server/redis/etc/redis_slave1
cp redis.conf /data/server/redis/etc/redis_slave2

3、进入 src 文件夹下,是否存在mkreleasehdr.sh、redis-benchmark、redis-check-aof、redis-check-rdb、redis-cli、redis-server、redis-sentinel

没有的话将文件复制到 bin 文件夹

cd src/
cp mkreleasehdr.sh redis-benchmark redis-check-aof redis-check-rdb redis-cli redis-server redis-sentinel /data/server/redis/bin/

4、启动一个redis服务,redis是否可以正常启动

cd /data/server/redis/bin
./redis-server ../etc/redis_master/redis.conf

ps -ef | grep redis 查看redis是否启动

image-20240607170424059

验证后关闭服务

redis-cli -p 6379 shutdown
或者
kill 进程号(84080)

5、分别修改各节点配置文件

cd etc/redis_master
vim redis.conf

主节点配置

bind:0.0.0.0                                 ##Redis 默认只允许本机访问,把 bind 修改为 0.0.0.0 表示允许所有远程访问。如果想指定限制访问,可设置对应的 ip。
port:6379   
protected-mode:no                     ##关闭保护模式,可以外部访问
daemonize:yes                             ##设置为后台启动
pidfile "/var/run/redis_01.pid"       ##pid存储位置
logfile ""     ##日志文件存储位置,根据需求填写
requirepass:123456        ##设置 redis 连接密码 (重要)
masterauth:123456         ##slave 服务连接 master 的密码(可以用redis启动密码)重要!!!

从节点配置

从机的配置和主机相似,不同的地方是需要使用replicaof指定主机(master)的IP地址和端口,需要注意的是老版本使用的是 slaveof,新版本 replicaof ,如下。

bind:0.0.0.0
port:6378
protected-mode:no
daemonize yes
pidfile "/var/run/redis_01.pid"
logfile ""
requirepass:123456
masterauth:123456
replicaof 192.**.**.** 6379   ##主节点的IP 端口

replicaof 192.**.**.** 6379  或  slaveof 192.**.**.** 6379

指定当本机为 slave 服务时,设置 master 服务的IP地址及端口,在 redis 启动的时候会自动跟 master 进行数据同步,所以两台从机都这样配置即可。

照样修改另一个从节点的配置文件,端口可为6377。

主节点配置完成

三:主从验证

1、分别启动三个节点

cd bin/
./redis-server ../etc/redis_master/redis.conf
./redis-server ../etc/redis_slave1/redis.conf
./redis-server ../etc/redis_slave2/redis.conf
查看redis启动情况
ps -ef | grep redis

2、连上一个节点查看主从信息

./redis-cli -h xx.xx.xx.xx -p 6379
auth 密码

四:哨兵模式搭建

哨兵的配置文件是:sentinel.conf

1、同样为了方便管理,将sentinel.conf复制至对应的目录下

cd /data/servers/redis
cp sentinel.conf /data/servers/redis/etc/redis_master/
cp sentinel.conf /data/servers/redis/etc/redis_slave1/
cp sentinel.conf /data/servers/redis/etc/redis_slave2/

image-20240607171527901

2、分别编辑 sentinel.conf

master节点6379对应的sentinel.conf端口为6376
slave1节点6378对应的sentinel.conf端口为6375
slave2节点6377对应的sentinel.conf端口为6374

vim sentinel.conf
port:6376                               ## 默认端口为26379。
protected-mode:no                       ## 关闭保护模式,可以外部访问
daemonize yes                           ##设置为后台启动,没有:号
pidfile "/var/run/redis-sentinel_6376.pid"         ##redis sentinel pid文件位置
logfile ""          ##日志文件,
sentinel monitor mymaster 192.**.**.** 6379 2           ##指定主机IP地址和端口,并且指定当有2台哨兵认为主机挂了,则对主机进行容灾切换
sentinel auth-pass mymaster 123456             ##当在Redis实例中开启了requirepass,这里就需要提供密码
sentinel down-after-milliseconds mymaster 3000                      ##这里设置了主机多少秒无响应,则认为挂了
snetinel parallel-syncs mymaster 1              ##主备切换时,最多有多少个slave同时对新的master进行同步,这里设置为默认的1
sentinel failover-timeout mymaster 180000       ##故障转移的超时时间,这里设置为三分钟

3、启动三个哨兵

cd bin/
redis-sentinel ../etc/redis_master/sentinel.conf
redis-sentinel ../etc/redis_slave1/sentinel.conf
redis-sentinel ../etc/redis_slave2/sentinel.conf

4、查看哨兵信息

./redis-cli -h 172.**.**.** -p 6375

五:容灾切换

1、模拟主机宕机:手动停掉master节点

./redis-cli -h 172.**.**.** -p 6379
auth 123456
info Replication  查看是否为主节点
# Replication
role:master    是否为主节点
connected_slaves:2  从库
slave0:ip=172.**.**.***,port=6377,state=online,offset=44077,lag=1
slave1:ip=172.**.**.***,port=6378,state=online,offset=43935,lag=1
master_repl_offset:44077
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:2
repl_backlog_histlen:44076

执行:shutdown

停止标志

image-20240607172236813

2、查看从库是否变为住节点

./redis-cli -h 172.**.**.** -p 6378
auth 123456
info Replication  查看是否为主节点
原-----
# Replication
role:slave
master_host:172.**.**.156
master_port:6378
master_link_status:up
master_last_io_seconds_ago:0
master_sync_in_progress:0
slave_repl_offset:29046
slave_priority:100
slave_read_only:1
connected_slaves:0
master_repl_offset:0
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0

因主库停止所以应是

# Replication
role:master
connected_slaves:0
master_repl_offset:0
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0

至此主从搭建成功

易错点

1.主节点与从节点redis.conf中配置一致

masterauth "redis登录密码"

2.出现以下错误解决方法

*** FATAL CONFIG FILE ERROR *** Reading the configuration file, at line 1056 >>> 'replicaof 192.**.**.** 6379' Bad directive or wrong number of arguments

需要注意的是老版本使用的是 slaveof,新版本 replicaof。

3.出现以下错误解决方法

*** FATAL CONFIG FILE ERROR *** Reading the configuration file, at line 1056 >>> 'daemonize:yes' Bad directive or wrong number of arguments

修改为

daemonize yes

4.出现以下异常

# Replication
role:slave
master_host:172.**.**.**
master_port:6378  ==》连接的时自己slaves配置端口号,不是master的端口号,因此主从连接不成功。
master_link_status:down ==》这个时down,并不是up,表示主从并没有连接上
master_last_io_seconds_ago:-1

解决方法

由上述查看的信息发现redis.conf的从配置文件端口号配置错误导致主从连接错误,在从配置的redis.conf下更改为主的端口号就可以了。

slaveof 172.****.** 主节点IP 2
如:slaveof 172.0.0.1 6379 2

同时查看一下哨兵的配置文件sentinel.conf里面的

sentinel monitor mymaster 172.**.**.**  主节点 2
如:sentinel monitor mymaster 172.0.0.1 6379 2
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值