一、 架构介绍
计划为1 主1 备(哨兵模式)的结构
- 1 masters
- 1 slave
1、 部署结构
| 服务器 | 角色 |
|---|---|
| 192.168.1.83 | Master |
| 192.168.1.85 | Slave |
2、环境信息
Redis版本:
- redis-7.4.5
OS 信息:
-
OS: openEuler 22.03 (LTS-SP4)
-
Kernel: Linux 5.10.0-216.0.0.115.oe2203sp4.x86_64
-
Architecture: x86-64
-
CPU/MEM: 12C64G
-
Disk: 300G
目录信息:
- /etc/redis/ //存放主备和哨兵模式的配置文件
- /var/lib/redis/ //存放pid和rdb文件
- /var/log/redis/ //存放主备和哨兵日志目录
- /usr/local/bin //存放redis编译后的程序 redis-check-rdb redis-cli redis-sentinel redis-server等
二、安装配置
1、编译安装
上传安装包到指定目录,按照自己实际的来。
- 安装依赖
shell
sudo yum install -y gcc make openssl-devel systemd-devel tcl
sudo yum install -y gcc-c++ libstdc++-devel
- 上传解压安装包
shell
cd /opt/software/
tar -zxvf redis-7.4.5.tar.gz
- 编译安装
shell
cd redis-7.4.5
make BUILD_TLS=yes USE_SYSTEMD=yes CFLAGS="-O3 -march=native" -j$(nproc)
make install
2、创建相关目录
shell
mkdir -p /var/lib/redis/
mkdir -p /var/log/redis/
mkdir -p /etc/redis/
3、配置信息
- 主节点配置
vi redis-master.conf
shell
bind 0.0.0.0
port 6379
daemonize yes
pidfile /var/lib/redis/redis_6379.pid
logfile "/var/log/redis_master.log"
dir /var/lib/redis
requirepass t@stp1ssw0rd
masterauth t@stp1ssw0rd
cluster-enabled no
- 主节点哨兵配置
vi sentinel.conf
shell
port 26379
daemonize yes
logfile "/var/log/redis_sentinel.log"
dir "/var/lib/redis"
# 监控主节点,2 表示至少 2 个哨兵同意才进行切换
sentinel monitor mymaster 192.168.1.83 6379 2
sentinel auth-pass mymaster t@stp1ssw0rd
sentinel down-after-milliseconds mymaster 5000
sentinel failover-timeout mymaster 60000
protected-mode no
- 备节点配置
vi redis-slave.conf
shell
bind 0.0.0.0
port 6379
daemonize yes
replicaof 192.168.1.83 6379
masterauth t@stp1ssw0rd
requirepass t@stp1ssw0rd
cluster-enabled no
dir /var/lib/redis
logfile /var/log/redis_slave.log
pidfile /var/lib/redis/redis_6379.pid
requirepass t@stp1ssw0rd
- 备节点哨兵模式配置
vi sentinel.conf
shell
port 26379
daemonize yes
logfile "/var/log/redis_sentinel.log"
dir "/var/lib/redis"
# 监控主节点,2 表示至少 2 个哨兵同意才进行切换
sentinel monitor mymaster 192.168.1.83 6379 2
sentinel auth-pass mymaster t@stp1ssw0rd
sentinel down-after-milliseconds mymaster 5000
sentinel failover-timeout mymaster 60000
protected-mode no
三、服务启停
1、主备服务启动
先后重启
shell
redis-server /etc/redis/sentinel.conf --sentinel
2、启动端口查询
shell
lsof -i:26379 //redis哨兵模式端口
lsof -i:6379 //redis服务端口
3、服务关闭
shell
redis-cli -p 26379 shutdown
4、连接redis
shell
redis-cli -h 10.45.161.85 -p 26379 -a t@stp1ssw0rd
四、故障排查
1、验证redis
shell
redis-cli -h 192.168.1.83 -p 6379 -a t@stp1ssw0rd PING
- 如果返回
PONG:说明 Redis 服务没问题,密码也没问题。问题出在应用配置或代码上。 - 如果返回
NOAUTH或WRONGPASS:说明 Redis 的密码和你配置的不一样,或者 Redis 没重启导致旧密码生效。
2、查看master角色信息
shell
redis-cli -h 192.168.1.83 -p 26379 -a t@stp1ssw0rd SENTINEL masters
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
"name"
"mymaster"
"ip"
"192.168.1.83"
"port"
"6379"
"runid"
"aecd9419301c99949f79738680e73800b8ea04dc"
"flags"
"master"
"link-pending-commands"
"0"
"link-refcount"
"1"
"last-ping-sent"
"0"
"last-ok-ping-reply"
"289"
"last-ping-reply"
"289"
"down-after-milliseconds"
"5000"
"info-refresh"
"7583"
"role-reported"
"master"
"role-reported-time"
"7588"
"config-epoch"
"0"
"num-slaves"
"1"
"num-other-sentinels"
"1"
"quorum"
"2"
"failover-timeout"
"60000"
"parallel-syncs"
"1"