redis 安装主从及哨兵部署
redis安装
二进制编译安装
| 主机 | 角色 |
|---|---|
| 192.168.65.110 | slave |
| 192.168.65.120 | master |
| 192.168.65.130 | slave |
1.获取源码包
yum install -y make gcc wget
VERSION=7.0.9
wget https://download.redis.io/releases/redis-$VERSION.tar.gz
tar zxvf redis-$VERSION.tar.gz
2.编译安装
cd redis-$VERSION
make
cd src
make install PREFIX=/usr/local/redis
3.移动配置文件到安装目录下
mkdir /usr/local/redis/conf
cp /root/redis-7.2.4/redis.conf /usr/local/redis/
cp /root/redis-7.2.4/sentinel.conf /usr/local/redis/
4.配置 redis 为后台启动
# 将daemonize no 改成daemonize yes
sed -i 's/daemonize no/daemonize yes/' /usr/local/redis/etc/redis.conf
5.设置 redis 密码 (可选)
#redis.conf 文件的 requirepass foobared 在这个位置下添加
requirepass spring@123456
6.运行redis并测试
./redis-server /usr/local/redis/conf/redis.conf
[root@node2 bin]# ./redis-cli
127.0.0.1:6379> auth spring@123456
OK
127.0.0.1:6379> set name spring
OK
127.0.0.1:6379> get name
"spring"
127.0.0.1:6379>
7.配置修改
-rw-r--r-- 1 root root 14700 Jan 12 15:22 sentinel.conf
[root@node2 conf]# cat redis-01.conf
# 基础运行配置
bind 0.0.0.0
port 6379
daemonize yes
supervised systemd
pidfile /var/run/redis_6379.pid
logfile /var/log/redis/redis-server.log
databases 16
# 安全配置
requirepass spring@123456
rename-command FLUSHALL ""
rename-command FLUSHDB ""
# 资源与性能限制
maxmemory 4gb
maxmemory-policy volatile-lru
maxmemory-samples 10
maxclients 10000
tcp-keepalive 300
disable-thp yes
oom-score-adj yes
# RDB 持久化(核心精简)
save 900 1
save 300 10
save 60 10000
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename dump.rdb
# AOF 持久化(核心精简,启用混合持久化)
appendonly yes
appendfilename "appendonly.aof"
appendfsync everysec
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
aof-use-rdb-preamble yes
# 慢查询监控
slowlog-log-slower-than 10000
slowlog-max-len 1024
# 后台优化(核心必要项)
jemalloc-bg-thread yes
aof-rewrite-incremental-fsync yes
rdb-save-incremental-fsync yes
[root@node2 conf]#
二.配置redis主从同步
1.复制redis安装文件
mkdir /usr/local/redis-7.2.4/data
scp -rf /usr/local/redis-7.2.4 192.168.65.130:/usr/local/redis-7.2.4
scp -rf /usr/local/redis-7.2.4 192.168.65.110:/usr/local/redis-7.2.4
2.配置文件
# 基础运行配置
bind 0.0.0.0
port 6379
daemonize yes
dir "/usr/local/redis-7.2.4/data"
pidfile /var/run/redis_6379.pid
logfile /var/log/redis/redis-server.log
databases 16
# 安全配置
requirepass spring@123456
masterauth "spring@123456"
rename-command FLUSHALL ""
rename-command FLUSHDB ""
# 资源与性能限制
maxmemory 4gb
maxmemory-policy volatile-lru
maxmemory-samples 10
maxclients 10000
tcp-keepalive 300
disable-thp yes
oom-score-adj yes
# RDB 持久化(核心精简)
save 900 1
save 300 10
save 60 10000
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename dump.rdb
# AOF 持久化(核心精简,启用混合持久化)
appendonly yes
appendfilename "appendonly.aof"
appendfsync everysec
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
aof-use-rdb-preamble yes
# 慢查询监控
slowlog-log-slower-than 10000
slowlog-max-len 1024
# 后台优化(核心必要项)
jemalloc-bg-thread yes
aof-rewrite-incremental-fsync yes
rdb-save-incremental-fsync yes
#对从节点生效
replica-read-only yes
3.从节点(Slave1/Slave2)配置
scp redis.conf 192.168.65.130:/usr/local/redis-7.2.4/conf/
scp redis.conf 192.168.65.110:/usr/local/redis-7.2.4/conf/
在末尾加上
replicaof 192.168.65.120 6379
5.测试
#节点
[root@node2 bin]# redis-cli
127.0.0.1:6379> auth spring@123456
OK
127.0.0.1:6379> set name spring1234556
OK
127.0.0.1:6379> exit
[root@node2 bin]# redis-cli -p 6380
127.0.0.1:6380> auth spring@123456
OK
127.0.0.1:6380> get name
"spring1234556"
127.0.0.1:6380> exit
[root@node2 bin]# redis-cli -p 6381
127.0.0.1:6381> auth spring@123456
OK
repl_backlog_histlen:1270
127.0.0.1:6381> get name
"spring1234556"
127.0.0.1:6381> info Replication
# Replication
role:slave
master_host:127.0.0.1
master_port:6379
master_link_status:up
master_last_io_seconds_ago:4
master_sync_in_progress:0
slave_read_repl_offset:1469
slave_repl_offset:1469
slave_priority:100
slave_read_only:1
replica_announced:1
connected_slaves:0
master_failover_state:no-failover
master_replid:a8cd6f338185075ec758dcded14cc3ce99680f01
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:1469
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:186
repl_backlog_histlen:1284
三.哨兵模式
1.第一个sentinel.conf
port 26379 # 哨兵监听端口(默认26379,无需修改)
daemonize yes # 后台运行
logfile "/var/log/sentinel/26379.log" # 哨兵日志路径
dir "/usr/local/redis-7.2.4/sentinel" # 哨兵工作目录(存储状态数据)
sentinel monitor mymaster 192.168.65.120 6379 2 # 监控主节点
sentinel auth-pass mymaster spring@123456
# 解释:
# mymaster:主节点别名(可自定义)
# 192.168.65.120 6379:主节点IP和端口
# 2:判定主节点故障所需的最少哨兵节点数(多数机制,需≥1,建议设为总哨兵数/2+1)
sentinel down-after-milliseconds mymaster 30000 # 主节点超时时间(30秒未响应视为故障)
sentinel failover-timeout mymaster 180000 # 故障转移最大时间(180秒)
protected-mode no # 关闭保护模式(测试环境)
2.分发配置到从节点
scp sentinel.conf 192.168.65.130:/usr/local/redis-7.2.4/conf/
scp sentinel.conf 192.168.65.110:/usr/local/redis-7.2.4/conf/
mkdir /usr/local/redis-7.2.4/sentinel
3.启动
/usr/local/redis-7.2.4/bin/redis-sentinel /usr/local/redis-7.2.4/conf/sentinel.conf
4.验证
# sentinel.conf 核心配置
sentinel monitor mymaster 192.168.65.120 6379 2 # 监控主节点,quorum=2
sentinel down-after-milliseconds mymaster 5000 # 5秒无响应视为下线
sentinel failover-timeout mymaster 180000 # 故障转移超时时间
sentinel parallel-syncs mymaster 1 # 每次只同步1个从节点
5.日常监控 :定期执行以下命令,检查架构健康状态:
# 哨兵查看主节点状态
redis-cli -p 26379 SENTINEL MASTERS mymaster
# 哨兵查看从节点状态
redis-cli -p 26379 SENTINEL SLAVES mymaster
# 主节点查看从节点同步状态
redis-cli -h 192.168.65.120 -p 6379 -a "spring@123456" info replication
浙公网安备 33010602011771号