天天看點

Redis+Sentinel叢集安裝與配置

1.環境介紹

叢集機器                                         redis服務                                     哨兵(sentinel)                   節點描述

虛拟機:192.168.20.105    安裝redis服務,端口6379            安裝sentinel服務,端口26379             主節點

虛拟機:192.168.20.29      安裝redis服務,端口6379            安裝sentinel服務,端口26379             從節點

虛拟機:192.168.20.108    安裝redis服務,端口6379            安裝sentinel服務,端口26379             從節點

即:3個redis服務,三個sentinel服務,192.168.20.105 為主節點,實作按照上篇文章介紹配置好主從關系。

2.相關啟動指令

cd到/usr/redis/bin目錄可以執行以下指令:

redis-server /usr/redis/etc/redis.conf#啟動redis服務

./redis-sentinel /usr/redis/etc/sentinel.conf#啟動sentinel哨兵服務

./redis-cli -p 6379 -a 123456#打開本機redis用戶端連接配接,連接配接上之後可執行set、get、keys *等指令

ps -ef|grep redis#檢視redis狀态

3.配置檔案

虛拟機:192.168.20.105

redis.conf配置檔案:

[plain] 
   ​​view plain​​​
    ​​​copy​​
   
 
1. daemonize yes#背景啟動
2. pidfile "/var/run/redis.pid"
3. port 6379
4. timeout 0
5. tcp-keepalive 0
6. loglevel notice
7. logfile ""
8. databases 16
9. save 900 1
10. save 300 10
11. save 60 10000
12. stop-writes-on-bgsave-error yes
13. rdbcompression yes
14. rdbchecksum yes
15. dbfilename "dump.rdb"
16. dir "/usr/redis/data"
17. masterauth "123456"#如果做故障切換,不論主從節點都要填寫密碼且要保持一緻
18. slave-serve-stale-data yes
19. slave-read-only yes
20. repl-disable-tcp-nodelay no
21. slave-priority 98
22. requirepass "123456"#目前redis密碼
23. appendonly yes
24. # appendfsync always
25. appendfsync everysec
26. # appendfsync no
27. no-appendfsync-on-rewrite no
28. auto-aof-rewrite-percentage 100
29. auto-aof-rewrite-min-size 64mb
30. lua-time-limit 5000
31. slowlog-log-slower-than 10000
32. slowlog-max-len 128
33. notify-keyspace-events ""
34. hash-max-ziplist-entries 512
35. hash-max-ziplist-value 64
36. list-max-ziplist-entries 512
37. list-max-ziplist-value 64
38. set-max-intset-entries 512
39. zset-max-ziplist-entries 128
40. zset-max-ziplist-value 64
41. activerehashing yes
42. client-output-buffer-limit normal 0 0 0
43. client-output-buffer-limit slave 256mb 64mb 60
44. client-output-buffer-limit pubsub 32mb 8mb 60
45. hz 10
46. aof-rewrite-incremental-fsync yes
47. # Generated by CONFIG REWRITE
sentinel.conf配置檔案:

   [plain] 
   ​​view plain​​​
    ​​​copy​​
   
 
1. port 26379
2. sentinel monitor mymaster 192.168.20.105 6379 2#2表示在sentinel叢集中隻要有兩個節點檢測到redis主節點出故障就進行切換,單sentinel節點無效(自己測試發現的)
3. sentinel down-after-milliseconds mymaster 3000#如果3s内mymaster無響應,則認為mymaster當機了
4. sentinel failover-timeout mymaster 10000#如果10秒後,mysater仍沒活過來,則啟動failover
5. sentinel auth-pass mymaster 123456#redis主節點密碼
6. sentinel config-epoch mymaster 89
7. daemonize yes
8. dir "/usr/redis/bin"#指定工作目錄
9. sentinel known-slave mymaster 192.168.20.29 6379#sentinel自動生成的
10. sentinel known-slave mymaster 192.168.20.108 6379#sentinel自動生成的
11. sentinel known-sentinel mymaster 192.168.20.108 26379 695a7bf69bf7c0bdacb3a01ea262319cfca85de9#sentinel自動生成的
12. 
13. # Generated by CONFIG REWRITE
14. 
15. sentinel known-sentinel mymaster 192.168.20.29 26379 b1fba42ff8b363b2aea5c52e5dfa2c1ae52869e9#sentinel自動生成的
虛拟機:192.168.20.29
redis.conf配置檔案:

   [plain] 
   ​​view plain​​​
    ​​​copy​​
   
 
1. daemonize yes
2. pidfile "/var/run/redis.pid"
3. port 6379
4. timeout 0
5. tcp-keepalive 0
6. loglevel notice
7. logfile ""
8. databases 16
9. save 900 1
10. save 300 10
11. save 60 10000
12. stop-writes-on-bgsave-error yes
13. rdbcompression yes
14. rdbchecksum yes
15. dbfilename "dump.rdb"
16. dir "/usr/redis/data"
17. masterauth "123456"#主節點密碼
18. slave-serve-stale-data yes
19. slave-read-only yes
20. repl-disable-tcp-nodelay no
21. slave-priority 98
22. requirepass "123456"
23. appendonly yes
24. # appendfsync always
25. appendfsync everysec
26. # appendfsync no
27. no-appendfsync-on-rewrite no
28. auto-aof-rewrite-percentage 100
29. auto-aof-rewrite-min-size 64mb
30. lua-time-limit 5000
31. slowlog-log-slower-than 10000
32. slowlog-max-len 128
33. notify-keyspace-events ""
34. hash-max-ziplist-entries 512
35. hash-max-ziplist-value 64
36. list-max-ziplist-entries 512
37. list-max-ziplist-value 64
38. set-max-intset-entries 512
39. zset-max-ziplist-entries 128
40. zset-max-ziplist-value 64
41. activerehashing yes
42. client-output-buffer-limit normal 0 0 0
43. client-output-buffer-limit slave 256mb 64mb 60
44. client-output-buffer-limit pubsub 32mb 8mb 60
45. hz 10
46. aof-rewrite-incremental-fsync yes
47. # Generated by CONFIG REWRITE
48. 
49. slaveof 192.168.20.105 6379#配置主節點資訊
sentinel.conf配置檔案(基本與主節點一樣,請注意對比):


   [plain] 
   ​​view plain​​​
    ​​​copy​​
   
 
1. port 26379
2. sentinel monitor mymaster 192.168.20.105 6379 2
3. sentinel down-after-milliseconds mymaster 3000
4. sentinel failover-timeout mymaster 10000
5. sentinel auth-pass mymaster 123456
6. sentinel config-epoch mymaster 89
7. daemonize yes
8. dir "/usr/redis/bin"
9. sentinel known-slave mymaster 192.168.20.108 6379
10. sentinel known-slave mymaster 192.168.20.29 6379
11. sentinel known-sentinel mymaster 192.168.20.108 26379 695a7bf69bf7c0bdacb3a01ea262319cfca85de9
12. 
13. # Generated by CONFIG REWRITE
14. 
15. sentinel known-sentinel mymaster 192.168.20.105 26379 a8d94fbe0f1120278136c84a612ea84d57d2501c
虛拟機:192.168.20.108
redis.conf配置檔案:

   [plain] 
   ​​view plain​​​
    ​​​copy​​
   
 
1. daemonize yes
2. pidfile "/var/run/redis.pid"
3. port 6379
4. timeout 0
5. tcp-keepalive 0
6. loglevel notice
7. logfile ""
8. databases 16
9. save 900 1
10. save 300 10
11. save 60 10000
12. stop-writes-on-bgsave-error yes
13. rdbcompression yes
14. rdbchecksum yes
15. dbfilename "dump.rdb"
16. dir "/usr/redis/data"
17. masterauth "123456"
18. slave-serve-stale-data yes
19. slave-read-only yes
20. repl-disable-tcp-nodelay no
21. slave-priority 100
22. requirepass "123456"
23. appendonly yes
24. # appendfsync always
25. appendfsync everysec
26. # appendfsync no
27. no-appendfsync-on-rewrite no
28. auto-aof-rewrite-percentage 100
29. auto-aof-rewrite-min-size 64mb
30. lua-time-limit 5000
31. slowlog-log-slower-than 10000
32. slowlog-max-len 128
33. notify-keyspace-events ""
34. hash-max-ziplist-entries 512
35. hash-max-ziplist-value 64
36. list-max-ziplist-entries 512
37. list-max-ziplist-value 64
38. set-max-intset-entries 512
39. zset-max-ziplist-entries 128
40. zset-max-ziplist-value 64
41. activerehashing yes
42. client-output-buffer-limit normal 0 0 0
43. client-output-buffer-limit slave 256mb 64mb 60
44. client-output-buffer-limit pubsub 32mb 8mb 60
45. hz 10
46. aof-rewrite-incremental-fsync yes
47. # Generated by CONFIG REWRITE
48. 
49. slaveof 192.168.20.105 6379
sentinel.conf配置檔案(基本與主節點一樣,請注意對比):

   [plain] 
   ​​view plain​​​
    ​​​copy​​
   
 
1. port 26379
2. sentinel monitor mymaster 192.168.20.105 6379 2
3. sentinel down-after-milliseconds mymaster 3000
4. sentinel failover-timeout mymaster 10000
5. sentinel auth-pass mymaster 123456
6. sentinel config-epoch mymaster 89
7. daemonize yes
8. dir "/usr/redis/bin"
9. sentinel known-slave mymaster 192.168.20.108 6379
10. sentinel known-slave mymaster 192.168.20.29 6379
11. sentinel known-sentinel mymaster 192.168.20.105 26379 a8d94fbe0f1120278136c84a612ea84d57d2501c
12. 
13. # Generated by CONFIG REWRITE
14. 
15. sentinel known-sentinel mymaster 192.168.20.29 26379 b1fba42ff8b363b2aea5c52e5dfa2c1ae52869e9      

4.sentinel支援叢集(廢話)

即使有一些sentinel程序宕掉了,依然可以進行redis叢集的主備切換;

如果隻有一個sentinel程序,如果這個程序運作出錯,或者是網絡堵塞,那麼将無法實作redis叢集的主備切換(單點問題);

如果有多個sentinel,redis的用戶端可以随意地連接配接任意一個sentinel來獲得關于redis叢集中的資訊。

5.補充說明

以上配置檔案除加了注釋的地方外,其他地方基本都是redis自動生成的,隻要注意一下加注釋的點即可。

繼續閱讀