基础环境:CentOS 7.5 Redis5.0.5
一、部署Redis
三个节点部署Redis,过程略
二、部署主从+哨兵
1、配置redis.conf
master 172.16.254.106
1 2 3 4 5 6 7 8 | daemonize yes dir /redis/data logfile "/redis/log/redis.log" requirepass redis masterauth redis bind 172.16.254.106 timeout 300 save "" |
slave1 172.16.254.107
1 2 3 4 5 6 7 8 9 | daemonize yes logfile "/redis/log/redis.log" dir /redis/data requirepass redis masterauth redis timeout 300 bind 172.16.254.107 slaveof 172.16.254.106 6379 save "" |
slave2 172.16.254.108
1 2 3 4 5 6 7 8 9 | daemonize yes logfile "/redis/log/redis.log" dir /redis/data requirepass redis masterauth redis timeout 300 bind 172.16.254.108 slaveof 172.16.254.106 6379 save "" |
2、配置sentinel.conf
master 172.16.254.106
1 2 3 4 5 6 7 8 9 10 | sentinel monitor mymaster 172.16.254.106 6379 2 sentinel down-after-milliseconds mymaster 10000 sentinel parallel-syncs mymaster 1 sentinel failover-timeout mymaster 15000 sentinel auth-pass mymaster redis bind 172.16.254.106 port 26379 daemonize yes logfile /redis/log/sentinel .log dir /redis/data |
slave1 172.16.254.107
1 2 3 4 5 6 7 8 9 10 | sentinel deny-scripts-reconfig yes sentinel monitor mymaster 172.16.254.106 6379 2 sentinel down-after-milliseconds mymaster 10000 sentinel failover-timeout mymaster 15000 sentinel auth-pass mymaster redis bind 172.16.254.107 port 26379 daemonize yes logfile /redis/log/sentinel .log dir /redis/data |
slave2 172.16.254.108
1 2 3 4 5 6 7 8 9 10 | sentinel deny-scripts-reconfig yes sentinel monitor mymaster 172.16.254.106 6379 2 sentinel down-after-milliseconds mymaster 10000 sentinel failover-timeout mymaster 15000 sentinel auth-pass mymaster redis bind 172.16.254.108 port 26379 daemonize yes logfile /redis/log/sentinel .log dir /redis/data |
3、启动redis和sentinel
1 | /redis/bin/redis-server /redis/conf/redis .conf |
1 | /redis/bin/redis-sentinel /redis/conf/sentinel .conf |
4、配置开机启动
1 2 | su - redis -c "/redis/bin/redis-server /redis/conf/redis.conf" su - redis -c "/redis/bin/redis-sentinel /redis/conf/sentinel.conf" |
三、验证主从复制和哨兵
1、验证复制
master 172.16.254.106
1 2 3 4 | redis-cli -p 6379 -h 172.16.254.106 -a redis Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe. 172.16.254.106:6379> set handong dongdong OK |
slave1 172.16.254.107
1 2 3 4 | redis-cli -p 6379 -h 172.16.254.107 -a redis Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe. 172.16.254.107:6379> get handong "dongdong" |
slave2 172.16.254.108
1 2 3 4 | redis-cli -p 6379 -h 172.16.254.108 -a redis Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe. 172.16.254.108:6379> get handong "dongdong" |
2、验证哨兵
在 master 172.16.254.106关闭redis
master 172.16.254.106
1 2 | 172.16.254.106:6379> shutdown not connected> |
查看sentinel日志
1 2 3 4 5 6 7 8 | 24832:X 02 Mar 2021 18:31:44.372 * +slave-reconf-inprog slave 172.16.254.107:6379 172.16.254.107 6379 @ mymaster 172.16.254.106 6379 24832:X 02 Mar 2021 18:31:44.372 * +slave-reconf- done slave 172.16.254.107:6379 172.16.254.107 6379 @ mymaster 172.16.254.106 6379 24832:X 02 Mar 2021 18:31:44.613 # -odown master mymaster 172.16.254.106 6379 24832:X 02 Mar 2021 18:31:44.613 # +failover-end master mymaster 172.16.254.106 6379 24832:X 02 Mar 2021 18:31:44.613 # +switch-master mymaster 172.16.254.106 6379 172.16.254.108 6379 24832:X 02 Mar 2021 18:31:44.613 * +slave slave 172.16.254.107:6379 172.16.254.107 6379 @ mymaster 172.16.254.108 6379 24832:X 02 Mar 2021 18:31:44.614 * +slave slave 172.16.254.106:6379 172.16.254.106 6379 @ mymaster 172.16.254.108 6379 24832:X 02 Mar 2021 18:31:54.740 # +sdown slave 172.16.254.106:6379 172.16.254.106 6379 @ mymaster 172.16.254.108 6379 |
日志显示master已转到 172.16.254.108
slave1 172.16.254.107
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | 172.16.254.107:6379> info replication # Replication role:slave master_host:172.16.254.108 master_port:6379 master_link_status:up master_last_io_seconds_ago:1 master_sync_in_progress:0 slave_repl_offset:1066441 slave_priority:100 slave_read_only:1 connected_slaves:0 master_replid:03dbe80af15f63cdbec15fea68fb1e61d755448c master_replid2:d4597eea20a0a990b90617b9a012235dbbf56c9b master_repl_offset:1066441 second_repl_offset:1039824 repl_backlog_active:1 repl_backlog_size:1048576 repl_backlog_first_byte_offset:17866 repl_backlog_histlen:1048576 |
查看sentinel日志
1 2 3 4 5 6 7 8 | 31194:X 02 Mar 2021 18:31:42.541 # +sdown master mymaster 172.16.254.106 6379 31194:X 02 Mar 2021 18:31:42.708 # +new-epoch 3 31194:X 02 Mar 2021 18:31:42.712 # +vote-for-leader 6c89091bdbc3096afc92a229f8b76f1addbadb02 3 31194:X 02 Mar 2021 18:31:43.074 # +config-update-from sentinel 6c89091bdbc3096afc92a229f8b76f1addbadb02 172.16.254.106 26379 @ mymaster 172.16.254.106 6379 31194:X 02 Mar 2021 18:31:43.074 # +switch-master mymaster 172.16.254.106 6379 172.16.254.108 6379 31194:X 02 Mar 2021 18:31:43.075 * +slave slave 172.16.254.107:6379 172.16.254.107 6379 @ mymaster 172.16.254.108 6379 31194:X 02 Mar 2021 18:31:43.075 * +slave slave 172.16.254.106:6379 172.16.254.106 6379 @ mymaster 172.16.254.108 6379 31194:X 02 Mar 2021 18:31:53.156 # +sdown slave 172.16.254.106:6379 172.16.254.106 6379 @ mymaster 172.16.254.108 6379日志显示master已转到172.16.254.108 |
slave2 172.16.254.108
1 2 3 4 5 6 7 8 9 10 11 12 13 | 172.16.254.108:6379> info replication # Replication role:master connected_slaves:1 slave0:ip=172.16.254.107,port=6379,state=online,offset=1083399,lag=1 master_replid:03dbe80af15f63cdbec15fea68fb1e61d755448c master_replid2:d4597eea20a0a990b90617b9a012235dbbf56c9b master_repl_offset:1083399 second_repl_offset:1039824 repl_backlog_active:1 repl_backlog_size:1048576 repl_backlog_first_byte_offset:1005531 repl_backlog_histlen:77869 |
在redis命令行查到当前节点为master
查看sentinel日志
1 2 3 4 5 6 7 8 9 10 11 12 | 31320:X 02 Mar 2021 18:31:41.900 # +sdown master mymaster 172.16.254.106 6379 31320:X 02 Mar 2021 18:31:42.001 # +odown master mymaster 172.16.254.106 6379 #quorum 2/2 31320:X 02 Mar 2021 18:31:42.001 # +new-epoch 3 31320:X 02 Mar 2021 18:31:42.001 # +try-failover master mymaster 172.16.254.106 6379 31320:X 02 Mar 2021 18:31:42.063 # +vote-for-leader 58efcb63fbf69a680b49265dd5f789ecf90d44de 3 31320:X 02 Mar 2021 18:31:42.063 # 6c89091bdbc3096afc92a229f8b76f1addbadb02 voted for 6c89091bdbc3096afc92a229f8b76f1addbadb02 3 31320:X 02 Mar 2021 18:31:42.071 # 1b8a0ee301ad416c543a90e221e8144888ae4e2a voted for 6c89091bdbc3096afc92a229f8b76f1addbadb02 3 31320:X 02 Mar 2021 18:31:42.431 # +config-update-from sentinel 6c89091bdbc3096afc92a229f8b76f1addbadb02 172.16.254.106 26379 @ mymaster 172.16.254.106 6379 31320:X 02 Mar 2021 18:31:42.431 # +switch-master mymaster 172.16.254.106 6379 172.16.254.108 6379 31320:X 02 Mar 2021 18:31:42.431 * +slave slave 172.16.254.107:6379 172.16.254.107 6379 @ mymaster 172.16.254.108 6379 31320:X 02 Mar 2021 18:31:42.431 * +slave slave 172.16.254.106:6379 172.16.254.106 6379 @ mymaster 172.16.254.108 6379 31320:X 02 Mar 2021 18:31:52.512 # +sdown slave 172.16.254.106:6379 172.16.254.106 6379 @ mymaster 172.16.254.108 6379 |
启动 172.16.254.106节点redis服务
1 | redis-server /redis/conf/redis .conf |
172.16.254.106
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | 172.16.254.106:6379> info replication # Replication role:slave master_host:172.16.254.108 master_port:6379 master_link_status:up master_last_io_seconds_ago:0 master_sync_in_progress:0 slave_repl_offset:1117795 slave_priority:100 slave_read_only:1 connected_slaves:0 master_replid:03dbe80af15f63cdbec15fea68fb1e61d755448c master_replid2:0000000000000000000000000000000000000000 master_repl_offset:1117795 second_repl_offset:-1 repl_backlog_active:1 repl_backlog_size:1048576 repl_backlog_first_byte_offset:1106692 repl_backlog_histlen:11104 |
可以看到redis启动之后,变成了slave节点。
查看三个节点的sentinel日志都出现以下信息:
1 | 24832:X 02 Mar 2021 18:36:50.723 # -sdown slave 172.16.254.106:6379 172.16.254.106 6379 @ mymaster 172.16.254.108 6379 |
172.16.254.106作为slave的身份已经加入。