久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

Redis Sentinel實現哨兵模式搭建小結

197次閱讀
沒有評論

共計 4836 個字符,預計需要花費 13 分鐘才能閱讀完成。

自動寫代碼機器人,免費開通

Redis 哨兵模式,用現在流行的話可以說就是一個“哨兵機器人”,給“哨兵機器人”進行相應的配置之后,這個 ” 機器人 ” 可以 7 *24 小時工作,它能能夠自動幫助你做一些事情,如監控,提醒,自動處理故障等。

Redis-sentinel 簡介

Redis-sentinel 是 Redis 的作者 antirez,因為 Redis 集群的被各大公司使用,每個公司要寫自己的集群管理工具,于是 antirez 花了幾個星期寫出了 Redis-sentinel。

Redis 的 Sentinel 系統用于管理多個 Redis 服務器(instance),Redis 的 Sentinel 為 Redis 提供了高可用性。使用哨兵模式創建一個可以不用人為干預而應對各種故障的 Redis 部署。

該系統執行以下三個任務:

監控(Monitoring):Sentinel 會不斷地檢查你的主服務器和從服務器是否允許正常。
提醒(Notification):當被監控的某個 Redis 服務器出現問題時,Sentinel 可以通過 API 向管理員或者其他應用程序發送通知。
自動故障遷移(Automatic failover):(1)當一個主服務器不能正常工作時,Sentinel 會開始一次自動故障遷移操作,他會將失效主服務器的其中一個從服務器升級為新的主服務器,并讓失效主服務器的其他從服務器改為復制新的主服務器;(2)客戶端試圖連接失敗的主服務器時,集群也會向客服端返回新主服務器的地址,是的集群可以使用新主服務器代替失效服務器。

Redis Sentinel 是一個分布式系統,你可以在一個架構中運行多個 Sentinel 進程(progress),這些進程使用流言協議(gossip protocols)來接收關于主服務器是否下線的信息,并使用投票協議(agreement protocols)來決定是否執行自動故障遷移,以及選擇哪個從服務器作為新的主服務器。

單個 sentinel 進程來監控 redis 集群是不可靠的,當 sentinel 進程宕掉后 (sentinel 本身也有單點問題,single-point-of-failure) 整個集群系統將無法按照預期的方式運行。所以有必要將 sentinel 集群,這樣有幾個好處:

有一些 sentinel 進程宕掉了,依然可以進行 redis 集群的主備切換;
如果只有一個 sentinel 進程,如果這個進程運行出錯,或者是網絡堵塞,那么將無法實現 redis 集群的主備切換(單點問題);
如果有多個 sentinel,redis 的客戶端可以隨意地連接任意一個 sentinel 來獲得關于 redis 集群中的信息

一個健壯的部署至少需要三個哨兵實例。

三個哨兵實例應該放置在客戶使用獨立方式確認故障的計算機或虛擬機中。例如不同的物理機或不同可用區域的虛擬機。【本次講解是一個機器上進行搭建,和多級是一個道理

背景

最近項目需求,接觸到了 Redis 的搭建,簡單記錄下搭建過程中遇到的坑

總體配置

192.168.1.100:6379 - master
192.168.1.101:6379 - slave
192.168.1.102:6379 - slave
192.168.1.100:26379 - sentinel
192.168.1.101:26379 - sentinel
192.168.1.102:26379 - sentinel

搭建步驟

1. 安裝 redis

tar -xvf /usr/local/redis-3.2.11.tar.gz
mkdir -p /usr/local/redis/bin
cp /usr/local/redis/src/{redis-benchmark,redis-check-aof,redis-check-rdb,redis-cli,redis-sentinel,redis-server,redis-trib.rb} /usr/local/redis/bin
mkdir -p /u01/redis/{6379/{log,data,pid,conf},26379/{log,data,pid,conf}
# 添加環境變量
echo "export PATH=/usr/local/redis/bin:$PATH" /etc/profile
source /etc/profile

2.redis-6379 配置

redis 節點配置基本如下,把如下配置分別 cp 到三臺虛擬機的 /u01/redis/6379/conf/redis_6379.conf

bind 0.0.0.0
protected-mode no
daemonize yes
pidfile "/u01/redis/6379/pid/redis_6379.pid"
port 6379
tcp-backlog 511
timeout 0
tcp-keepalive 0
loglevel notice
logfile "/u01/redis/6379/log/redis_6379.log"
databases 16
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename "dump.rdb"
dir "/u01/redis/6379/data"
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
min-slaves-to-write 1
min-slaves-max-lag 10
appendonly no
appendfilename "appendonly.aof"
appendfsync everysec
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
aof-load-truncated yes
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-entries 512

啟動服務

# 在三臺虛擬機上分別執行
redis-server /u01/redis/6379/conf/redis_6379.conf

建立主從關系

# 在 192.168.1.101
redis-cli -p 6379 SLAVEOF 192.168.1.100 6379
# 在 192.168.1.102
redis-cli -p 6379 SLAVEOF 192.168.1.100 6379

查看 Replication

192.168.1.101:6379 info replication
# Replication
role:master
connected_slaves:2
min_slaves_good_slaves:2
slave0:ip=192.168.1.102,port=6379,state=online,offset=9577826,lag=1
slave1:ip=192.168.1.103,port=6379,state=online,offset=9577965,lag=0
master_repl_offset:9577965
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:8529390
repl_backlog_histlen:1048576
192.168.1.102:6379 info replication
# Replication
role:slave
master_host:192.168.1.101
master_port:6379
master_link_status:up
master_last_io_seconds_ago:0
master_sync_in_progress:0
slave_repl_offset:9600220
slave_priority:100
slave_read_only:1
connected_slaves:0
min_slaves_good_slaves:0
master_repl_offset:0
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0
192.168.1.103:6379 info replication
# Replication
role:slave
master_host:192.168.1.101
master_port:6379
master_link_status:up
master_last_io_seconds_ago:0
master_sync_in_progress:0
slave_repl_offset:9612675
slave_priority:100
slave_read_only:1
connected_slaves:0
min_slaves_good_slaves:0
master_repl_offset:0
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0

3.sentinel-6379 配置

sentinel 節點配置基本如下,把如下配置分別 cp 到三臺虛擬機的 /u01/redis/26379/conf/sentinel_26379.conf

sentinel monitor mymaster 后監控的是 redis 中的 master 節點,也就是 192.168.1.100,所以這個文件在三臺機器上是相同的

port 26379
bind 0.0.0.0
daemonize yes
protected-mode no
dir "/u01/redis/26379/tmp"
logfile "/u01/redis/26379/log/sentinel_26379.log"
sentinel monitor mymaster 192.168.1.100 6379 1

等待啟動完畢后觀察 /u01/redis/26379/conf/sentinel_26379.conf 文件變化

查看 sentinel 狀態用 info sentinel

redis-cli -h 192.168.1.100 -p 26379 info sentinel
# Sentinel
sentinel_masters:1
sentinel_tilt:0
sentinel_running_scripts:0
sentinel_scripts_queue_length:0
sentinel_simulate_failure_flags:0
master0:name=zhuanche01,status=ok,address=192.168.1.100:6379,slaves=2,sentinels=3

總結

我搭建的時候遇到了 192.168.1.101、192.168.1.102 上的 sentinel 啟動后一段時間出錯的問題,后來發現是沒有監控 master
再就是出問題了多看 log

來年要多寫筆記,年紀大了,記憶力越來越差!

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持丸趣 TV。

向 AI 問一下細節

丸趣 TV 網 – 提供最優質的資源集合!

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2024-02-03發表,共計4836字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 襄城县| 多伦县| 子长县| 霍邱县| 沛县| 昭平县| 格尔木市| 三门峡市| 旺苍县| 教育| 南陵县| 舒兰市| 吉安市| 凤城市| 安顺市| 辛集市| 寿光市| 突泉县| 长岭县| 横山县| 定日县| 弋阳县| 慈利县| 五峰| 隆德县| 曲阜市| 江华| 左云县| 崇仁县| 四川省| 蕉岭县| 南投市| 文安县| 昔阳县| 孟津县| 高阳县| 桐柏县| 手机| 吉安县| 大兴区| 岱山县|