业务迁移,需要搭建一个新的redis集群,就把相关的知识学习了下,先从操作开始,然后开始讲下理论知识,开始搭建:
下载包:
wget http://download.redis.io/releases/redis-2.8.19.tar.gz
tar -zxvf redis-2.8.19.tar.gz
cd redis-2.8.19/
make #有的系统需要加make MALLOC=libc
make test
make install
安装完毕在主节点上配置文件redis.conf,内容如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
daemonize yes pidfile "/var/run/redis-slave.pid" port 6379 tcp-backlog 511 timeout 0 tcp-keepalive 0 loglevel notice logfile "redis.log" databases 16 save 900 1 save 300 10 save 60 10000 stop-writes-on-bgsave-error yes rdbcompression yes rdbchecksum yes dbfilename "dump.rdb" dir "/home/redis/redismaster" 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 4gb 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 list-max-ziplist-value 64 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 hz 10 aof-rewrite-incremental-fsync yes # Generated by CONFIG REWRITE |
配置哨兵,sentinel.conf
1 2 3 4 5 6 7 8 9 10 |
daemonize yes pidfile "/var/run/redis-sentinel.pid" loglevel notice logfile "sentinel.log" port 6479 dir "/tmp" sentinel monitor test_master 172.31.18.175 6379 2 sentinel down-after-milliseconds test_master 10000 sentinel config-epoch test_master 2 sentinel leader-epoch test_master 2 |
启动:
1 2 |
redis-server /home/redis/redismaster/redis.conf redis-sentinel /home/redis/redismaster/sentinel.conf |
备机上安装跟主机一样,我们直接贴配置文件:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
daemonize yes pidfile "/var/run/redis-slave.pid" port 6379 tcp-backlog 511 timeout 0 tcp-keepalive 0 loglevel notice logfile "redis.log" databases 16 save 900 1 save 300 10 save 60 10000 stop-writes-on-bgsave-error yes rdbcompression yes rdbchecksum yes dbfilename "dump.rdb" dir "/home/redis/redisSlave2" 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 4gb 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 list-max-ziplist-value 64 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 hz 10 aof-rewrite-incremental-fsync yes slaveof 172.31.18.175 6379 # Generated by CONFIG REWRITE |
注意最后一句,slavef 指明从属与那个主机,以下是sentinel.conf配置:
1 2 3 4 5 6 7 8 |
daemonize yes pidfile "/var/run/redis-sentinel.pid" loglevel notice logfile "sentinel.log" port 6479 dir "/tmp" sentinel monitor test_master 172.31.18.175 6379 2 sentinel down-after-milliseconds |
然后启动,命令跟主一样。
查看信息,主机上运行:
redis-cli -p 6479
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 |
127.0.0.1:6479> sentinel get-master-addr-by-name test_master 1) "172.31.18.175" 2) "6379" 127.0.0.1:6479> sentinel slaves test_master 1) 1) "name" 2) "172.31.18.173:6379" 3) "ip" 4) "172.31.18.173" 5) "port" 6) "6379" 7) "runid" 8) "51924cde82d48efdbf4487f67a71ac180d12ae62" 9) "flags" 10) "slave" 11) "pending-commands" 12) "0" 13) "last-ping-sent" 14) "0" 15) "last-ok-ping-reply" 16) "672" 17) "last-ping-reply" 18) "672" 19) "down-after-milliseconds" 20) "10000" 21) "info-refresh" 22) "7595" 23) "role-reported" 24) "slave" 25) "role-reported-time" 26) "1138050713" 27) "master-link-down-time" 28) "0" 29) "master-link-status" 30) "ok" 31) "master-host" 32) "172.31.18.175" 33) "master-port" 34) "6379" 35) "slave-priority" 36) "100" 37) "slave-repl-offset" 38) "238538751" 2) 1) "name" 2) "172.31.18.174:6379" 3) "ip" 4) "172.31.18.174" 5) "port" 6) "6379" 7) "runid" 8) "098cafdb91d7169bbcffa1b279b6fab572a83882" 9) "flags" 10) "slave" 11) "pending-commands" 12) "0" 13) "last-ping-sent" 14) "0" 15) "last-ok-ping-reply" 16) "672" 17) "last-ping-reply" 18) "672" 19) "down-after-milliseconds" 20) "10000" 21) "info-refresh" 22) "6031" 23) "role-reported" 24) "slave" 25) "role-reported-time" 26) "1138050710" 27) "master-link-down-time" 28) "0" 29) "master-link-status" 30) "ok" 31) "master-host" 32) "172.31.18.175" 33) "master-port" 34) "6379" 35) "slave-priority" 36) "100" 37) "slave-repl-offset" 38) "238539180" |
我这里有2台slave,如果输出这些就表示正常了,接下来我们说说 redis和哨兵的关系以及复制原理。