redis sentinel
sentinel哨兵可监控master状态,如master宕机,则会在slave中选举1台服务器成为新的master.
sentinel哨兵部署建立在主从基础上,一般情况下1主2从,redis-sentinel和redis-server可部署在同一台服务器上,也可分别部署在不同服务器上
实验环境使用3台服务器,redis-server和redis-sentinel部署在同一台服务器上
master 172.16.2.110 redis-server/redis-sentinel
slave1 172.16.2.111 redis-server/redis-sentinel
slave2 172.16.2.111 redis-server/redis-sentinel
1、redis-server配置
配置注意点:
1、requirepass和requirepass最好配置成一样
2、三台redis-server的slave-priority配置值最好配置成不一样,如果配置成一致,master宕机后,slave1会成为主;master恢复后,如果slave1宕机,slave2会被选举成主。如果三台redis-server的slave-priority的配置不一样,则master宕机,剩余的slave会选择slave-priority较小的值为master。
172.16.2.110(原始配置)
1 bind 0.0.0.0 2 protected-mode no 3 port 6379 4 tcp-backlog 511 5 timeout 0 6 tcp-keepalive 300 7 daemonize no 8 supervised no 9 pidfile "/var/run/redis_6379.pid" 10 loglevel notice 11 logfile "" 12 databases 16 13 always-show-logo yes 14 save 900 1 15 save 300 10 16 save 60 10000 17 stop-writes-on-bgsave-error yes 18 rdbcompression yes 19 rdbchecksum yes 20 dbfilename "dump.rdb" 21 dir "/usr/local/redis/conf" 22 slave-serve-stale-data yes 23 slave-read-only yes 24 repl-diskless-sync no 25 repl-diskless-sync-delay 5 26 repl-disable-tcp-nodelay no 27 slave-priority 100 28 lazyfree-lazy-eviction no 29 lazyfree-lazy-expire no 30 lazyfree-lazy-server-del no 31 slave-lazy-flush no 32 appendonly no 33 appendfilename "appendonly.aof" 34 appendfsync everysec 35 no-appendfsync-on-rewrite no 36 auto-aof-rewrite-percentage 100 37 auto-aof-rewrite-min-size 64mb 38 aof-load-truncated yes 39 aof-use-rdb-preamble no 40 lua-time-limit 5000 41 slowlog-log-slower-than 10000 42 slowlog-max-len 128 43 latency-monitor-threshold 0 44 notify-keyspace-events "" 45 hash-max-ziplist-entries 512 46 hash-max-ziplist-value 64 47 list-max-ziplist-size -2 48 list-compress-depth 0 49 set-max-intset-entries 512 50 zset-max-ziplist-entries 128 51 zset-max-ziplist-value 64 52 hll-sparse-max-bytes 3000 53 activerehashing yes 54 client-output-buffer-limit normal 0 0 0 55 client-output-buffer-limit slave 256mb 64mb 60 56 client-output-buffer-limit pubsub 32mb 8mb 60 57 hz 10 58 aof-rewrite-incremental-fsync yes 59 60 requirepass "test" 61 masterauth "test"
172.16.2.111
1 bind 0.0.0.0 2 protected-mode no 3 port 6379 4 tcp-backlog 511 5 timeout 0 6 tcp-keepalive 300 7 daemonize no 8 supervised no 9 pidfile "/var/run/redis_6379.pid" 10 loglevel notice 11 logfile "" 12 databases 16 13 always-show-logo yes 14 save 900 1 15 save 300 10 16 save 60 10000 17 stop-writes-on-bgsave-error yes 18 rdbcompression yes 19 rdbchecksum yes 20 dbfilename "dump.rdb" 21 dir "/usr/local/redis/conf" 22 slave-serve-stale-data yes 23 slave-read-only yes 24 repl-diskless-sync no 25 repl-diskless-sync-delay 5 26 repl-disable-tcp-nodelay no 27 slave-priority 100 28 lazyfree-lazy-eviction no 29 lazyfree-lazy-expire no 30 lazyfree-lazy-server-del no 31 slave-lazy-flush no 32 appendonly no 33 appendfilename "appendonly.aof" 34 appendfsync everysec 35 no-appendfsync-on-rewrite no 36 auto-aof-rewrite-percentage 100 37 auto-aof-rewrite-min-size 64mb 38 aof-load-truncated yes 39 aof-use-rdb-preamble no 40 lua-time-limit 5000 41 slowlog-log-slower-than 10000 42 slowlog-max-len 128 43 latency-monitor-threshold 0 44 notify-keyspace-events "" 45 hash-max-ziplist-entries 512 46 hash-max-ziplist-value 64 47 list-max-ziplist-size -2 48 list-compress-depth 0 49 set-max-intset-entries 512 50 zset-max-ziplist-entries 128 51 zset-max-ziplist-value 64 52 hll-sparse-max-bytes 3000 53 activerehashing yes 54 client-output-buffer-limit normal 0 0 0 55 client-output-buffer-limit slave 256mb 64mb 60 56 client-output-buffer-limit pubsub 32mb 8mb 60 57 hz 10 58 aof-rewrite-incremental-fsync yes 59 60 requirepass "test" 61 masterauth "test" 62 slaveof 172.16.2.110 6379
172.16.2.112
1 bind 0.0.0.0 2 protected-mode no 3 port 6379 4 tcp-backlog 511 5 timeout 0 6 tcp-keepalive 300 7 daemonize no 8 supervised no 9 pidfile "/var/run/redis_6379.pid" 10 loglevel notice 11 logfile "" 12 databases 16 13 always-show-logo yes 14 save 900 1 15 save 300 10 16 save 60 10000 17 stop-writes-on-bgsave-error yes 18 rdbcompression yes 19 rdbchecksum yes 20 dbfilename "dump.rdb" 21 dir "/usr/local/redis/conf" 22 slave-serve-stale-data yes 23 slave-read-only yes 24 repl-diskless-sync no 25 repl-diskless-sync-delay 5 26 repl-disable-tcp-nodelay no 27 slave-priority 100 28 lazyfree-lazy-eviction no 29 lazyfree-lazy-expire no 30 lazyfree-lazy-server-del no 31 slave-lazy-flush no 32 appendonly no 33 appendfilename "appendonly.aof" 34 appendfsync everysec 35 no-appendfsync-on-rewrite no 36 auto-aof-rewrite-percentage 100 37 auto-aof-rewrite-min-size 64mb 38 aof-load-truncated yes 39 aof-use-rdb-preamble no 40 lua-time-limit 5000 41 slowlog-log-slower-than 10000 42 slowlog-max-len 128 43 latency-monitor-threshold 0 44 notify-keyspace-events "" 45 hash-max-ziplist-entries 512 46 hash-max-ziplist-value 64 47 list-max-ziplist-size -2 48 list-compress-depth 0 49 set-max-intset-entries 512 50 zset-max-ziplist-entries 128 51 zset-max-ziplist-value 64 52 hll-sparse-max-bytes 3000 53 activerehashing yes 54 client-output-buffer-limit normal 0 0 0 55 client-output-buffer-limit slave 256mb 64mb 60 56 client-output-buffer-limit pubsub 32mb 8mb 60 57 hz 10 58 aof-rewrite-incremental-fsync yes 59 60 requirepass "test" 61 masterauth "test" 62 slaveof 172.16.2.110 6379
2、redis-sentinel配置
配置注意点
1、sentinel auth-pass mymaster配置与redis.conf中的masterauth和requirepass配置一样
2、sentinel monitor mymaster配置的master服务器IP地址必须是redis-server的master服务器地址
172.16.2.110
1 bind 0.0.0.0 2 port 26379 3 dir "/tmp" 4 sentinel deny-scripts-reconfig yes 5 sentinel monitor mymaster 172.16.2.110 6379 2 6 sentinel down-after-milliseconds mymaster 3000 7 sentinel failover-timeout mymaster 10000 8 sentinel auth-pass mymaster test
172.16.2.111
1 bind 0.0.0.0 2 port 26379 3 dir "/tmp" 4 sentinel deny-scripts-reconfig yes 5 sentinel monitor mymaster 172.16.2.110 6379 2 6 sentinel down-after-milliseconds mymaster 3000 7 sentinel failover-timeout mymaster 10000 8 sentinel auth-pass mymaster test
172.16.2.112
bind 0.0.0.0 port 26379 dir "/tmp" sentinel deny-scripts-reconfig yes sentinel monitor mymaster 172.16.2.110 6379 2 sentinel down-after-milliseconds mymaster 3000 sentinel failover-timeout mymaster 10000 sentinel auth-pass mymaster test
3、说明
- master宕机后的切换过程中,sentinel会去修改redis.conf配置及sentinel.conf配置。重启redis过程中,需要注意哪台是master服务器。
- redis重启过程中,最好从slave-priority配置值最小的开始启动。
- master的配置slave-priority最好是最小,这样就能一定程度上保持重启后master服务器仍然不变
4、系统参数调优
- echo never > /sys/kernel/mm/transparent_hugepage/enabled
- echo vm.overcommit_memory=1 >> /etc/sysctl.conf && sysctl -p
- sysctl -w net.ipv4.tcp_timestamps=1
- sysctl -w net.ipv4.tcp_tw_recycle=1
- secho 512> /proc/sys/net/core/somaxconn
-
net.ipv4.conf.lo.arp_ignore = 1
- net.ipv4.conf.lo.arp_announce = 2
- net.ipv4.conf.all.arp_ignore = 1
- net.ipv4.conf.all.arp_announce = 2
- echo "* soft nofile 65535" >> /etc/security/limits.conf
- echo "* hard nofile 65535" >> /etc/security/limits.conf
- echo "* soft nproc 10240" >> /etc/security/limits.d/20-nproc.conf
浙公网安备 33010602011771号