Rockylinux 9.2部署redis 7.0.11的哨兵模式

Rockylinux 9.2部署redis 7.0.11的哨兵模式

1. redis三种模式说明

1.1 单机模式

单机模式是Redis最简单的部署形式,仅包含一个Redis实例。

这种模式易于设置和管理,适用于开发、测试和小型生产环境。

单机模式的缺点是,它无法提供高可用性和水平扩展性。如果Redis实例出现故障,可能导致服务中断。

1.2 哨兵模式

哨兵模式是基于主从复制架构的,包含一个主节点和多个从节点。主节点负责读写操作,从节点负责复制主节点的数据。

Redis哨兵实例负责监控主从节点的健康状况。当主节点出现故障时,哨兵会自动将一个从节点提升为新的主节点,从而实现自动故障转移和高可用性。

哨兵模式提供了读取操作的水平扩展性,可以将读请求分发到从节点以减轻主节点的负担。但是,它不支持写操作的水平扩展。

哨兵模式比单机模式更复杂,需要配置和管理主从复制和哨兵实例。

作为开发人员需要知道的是,与单机模式不同,使用哨兵模式时要修改少量代码。

1.3 集群模式

集群模式是Redis的分布式部署方案,数据分布在多个主节点上,每个主节点都有一个或多个从节点。

集群模式提供了高可用性、读写操作的水平扩展性和数据分片功能。Redis集群通过键空间分区将数据分布在多个主节点上,每个主节点负责一部分键空间。

当某个主节点出现故障时,其对应的从节点会被提升为新的主节点,实现故障转移。

集群模式相对于单机模式和哨兵模式更复杂,需要配置和管理多个主从节点和分片策略。

作为开发人员需要知道的是,与单机模式、哨兵模式不同,使用集群模式时要修改少量代码。

在实际使用中,集群模式也较少使用,主要还是哨兵模式;集群模式设备成本、维护成本、开发成本都比较高;

2. 环境说明

序号 操作系统 IP 主机名 备注
1 Rockylinux 9.2 192.168.3.51 web-c1.tiga.cc 业务服务器C1
2 Rockylinux 9.2 192.168.3.52 web-c2.tiga.cc 业务服务器C2
3 Rockylinux 9.2 192.168.3.53 redis-01.tiga.cc redis主节点
4 Rockylinux 9.2 192.168.3.54 redis-02.tiga.cc redis从节点
    +----+         +----+
    | M1 |----+----| R1 |
    | S1 |    |    | S2 |
    +----+    |    +----+
              |
        +-----+-----+
        |           |
        |           |
    +----+        +----+
    | C1 |        | C2 |
    | S3 |        | S4 |
    +----+        +----+

    Configuration: quorum = 3

在实际生产环境中,大部分中小企业为了节省成本,通常不会有很多服务器专门用来跑redis哨兵或集群;

本文redis一主一从4哨兵,其中2个哨兵进程运行在业务(web)服务器上;

3. 部署redis哨兵

3.1 通过源码编译安装redis

echo "vm.overcommit_memory=1" >> /etc/sysctl.conf 
echo "net.core.somaxconn = 1000" >> /etc/sysctl.conf 
sysctl -p 

mkdir /var/log/redis
mkdir /etc/redis


wget https://github.com/redis/redis/archive/refs/tags/7.0.11.tar.gz

tar -xf 7.0.11.tar.gz
cd redis-7.0.11
make
make install

3.2 修改redis server主节点配置文件

编辑文件/etc/redis/redis-server.conf

bind 0.0.0.0
port 6379
masterauth tigacc
requirepass tigacc
tcp-backlog 800
maxclients 10000
timeout 0
tcp-keepalive 300
daemonize yes
supervised no
pidfile /var/run/redis_6379.pid
loglevel notice
logfile "/var/log/redis/redis.log"
databases 16
stop-writes-on-bgsave-error yes
save ""
rdbcompression no
dbfilename dump.rdb
dir "/tmp"
slave-serve-stale-data yes
slave-read-only yes
repl-diskless-sync no
repl-diskless-sync-delay 5
repl-disable-tcp-nodelay no
slave-priority 100
maxmemory 1gb
maxmemory-policy allkeys-lru
maxmemory-samples 5
appendonly no
lua-time-limit 5000
slowlog-log-slower-than 10000
slowlog-max-len 128
latency-monitor-threshold 0
notify-keyspace-events ""
hash-max-ziplist-entries 512
hash-max-ziplist-value 64
list-max-ziplist-size -2
list-compress-depth 0
set-max-intset-entries 512
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
hll-sparse-max-bytes 3000
activerehashing yes
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit slave 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60

3.3 修改redis server从节点配置文件

# 与主节点配置文件基本相同
# 只需增加一行指定主节点IP和端口
slaveof 192.168.3.53 6379

3.4 修改哨兵配置文件

编辑文件/etc/redis/redis-sentinel.conf

protected-mode no
port 26379
daemonize yes
pidfile "/var/run/redis-sentinel.pid"
logfile "/var/log/redis/redis-sentinel.log"
dir "/tmp"
acllog-max-len 128

# 注意,只有redis 6.2及以上版本才支持填写主机名;低于6.2的只能填写IP
sentinel monitor mymaster 192.168.3.53 6379 3
sentinel down-after-milliseconds mymaster 10000


acllog-max-len 128
sentinel parallel-syncs mymaster 1
sentinel failover-timeout mymaster 180000
sentinel deny-scripts-reconfig yes
sentinel auth-pass mymaster tigacc
SENTINEL resolve-hostnames no
SENTINEL announce-hostnames no
SENTINEL master-reboot-down-after-period mymaster 0

3.5 启动redis与redis哨兵

redis-server /etc/redis/redis-server.conf

redis-sentinel /etc/redis/redis-sentinel.conf

4. 验证

4.1 向sentinel查询master的状态

redis-cli -p 26379 SENTINEL MASTER mymaster

输出

 1) "name"
 2) "mymaster"
 3) "ip"
 4) "192.168.3.53"
 5) "port"
 6) "6379"
 7) "runid"
 8) "1ff06f8e4f53f933b69bff997efd15a6fe89e7a0"
 9) "flags"
10) "master"
11) "link-pending-commands"
12) "0"
13) "link-refcount"
14) "1"
15) "last-ping-sent"
16) "0"
17) "last-ok-ping-reply"
18) "762"
19) "last-ping-reply"
20) "762"
21) "down-after-milliseconds"
22) "10000"
23) "info-refresh"
24) "5192"
25) "role-reported"
26) "master"
27) "role-reported-time"
28) "15371"
29) "config-epoch"
30) "0"
31) "num-slaves"
32) "1"
33) "num-other-sentinels"
34) "1"
35) "quorum"
36) "3"
37) "failover-timeout"
38) "180000"
39) "parallel-syncs"
40) "1"

4.2 获取当前master地址

redis-cli -p 26379  SENTINEL get-master-addr-by-name mymaster

输出

1) "192.168.3.53"
2) "6379"

4.3 测试故障转移

模拟redis故障

# shutdown -h now

等待一会,获取master地址

redis-cli -p 26379  SENTINEL get-master-addr-by-name mymaster

输出

1) "192.168.3.54"
2) "6379"
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,684评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,143评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,214评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,788评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,796评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,665评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,027评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,679评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,346评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,664评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,766评论 1 331
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,412评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,015评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,974评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,073评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,501评论 2 343

推荐阅读更多精彩内容