CentOS 下载:http://mirrors.aliyun.com/centos/
Redis:http://download.redis.io/releases/
CentOS 1908 配置 Redis 5.0.7 集群 一(单节点)
CentOS 1908 配置 Redis 5.0.7 集群 二(主从复制)
- 在 Redis 文件夹中,复制一份 redis.conf:
cp redis.conf redis6379.conf cp redis.conf redis6380.conf cp redis.conf redis6381.conf
- 配置 redis*.conf
- redis6379.conf:
# 注释 bind # bind 127.0.0.1 protected-mode no port 6379 daemonize yes
- redis6380.conf:
# 注释 bind # bind 127.0.0.1 protected-mode no port 6380 slaveof 127.0.0.1 6379 daemonize yes
- redis6381.conf:
# 注释 bind # bind 127.0.0.1 protected-mode no port 6381 slaveof 127.0.0.1 6379 daemonize yes
- redis6379.conf:
- 在 Redis 文件夹中,复制一份 redis.conf:
cp sentinel.conf sentinel26379.conf cp sentinel.conf sentinel26380.conf cp sentinel.conf sentinel26381.conf
- 配置 sentinel26379.conf:
- sentinel.conf:
port 26379 sentinel monitor mymaster 127.0.0.1 6379 2
- sentinel26380.conf:
port 26380 sentinel monitor mymaster 127.0.0.1 6379 2
- sentinel26381.conf:
port 26381 sentinel monitor mymaster 127.0.0.1 6379 2
- sentinel.conf:
- 启动 Redis(按照主从顺序):
src/redis-server redis6379.conf src/redis-server redis6380.conf src/redis-server redis6381.conf
- 启动哨兵(按照主从顺序):
src/redis-sentinel sentinel26379.conf src/redis-sentinel sentinel26380.conf src/redis-sentinel sentinel26381.conf
- 查看Redis状态:
- 查看 redis 6379(主节点):
从下面的 role:master 可以看出,redis 6379 为主节点:[root@192 redis-5.0.7]# src/redis-cli -h 127.0.0.1 -p 6379 127.0.0.1:6379> info replication # Replication role:master connected_slaves:2 slave0:ip=127.0.0.1,port=6380,state=online,offset=26140,lag=0 slave1:ip=127.0.0.1,port=6381,state=online,offset=26140,lag=1 master_replid:4333b9916945c9fc15b003ce0ff61ec7455cc0e8 master_replid2:0000000000000000000000000000000000000000 master_repl_offset:26140 second_repl_offset:-1 repl_backlog_active:1 repl_backlog_size:1048576 repl_backlog_first_byte_offset:1 repl_backlog_histlen:26140 127.0.0.1:6379>
- 查看 redis 6380(从节点):
从下面的 role:slave 可以看出,redis 6380 为从节点:[root@192 redis-5.0.7]# src/redis-cli -h 127.0.0.1 -p 6380 127.0.0.1:6380> info replication # Replication role:slave master_host:127.0.0.1 master_port:6379 master_link_status:up master_last_io_seconds_ago:1 master_sync_in_progress:0 slave_repl_offset:37795 slave_priority:100 slave_read_only:1 connected_slaves:0 master_replid:4333b9916945c9fc15b003ce0ff61ec7455cc0e8 master_replid2:0000000000000000000000000000000000000000 master_repl_offset:37795 second_repl_offset:-1 repl_backlog_active:1 repl_backlog_size:1048576 repl_backlog_first_byte_offset:1 repl_backlog_histlen:37795 127.0.0.1:6380>
- 查看 redis 6381(从节点):
从下面的 role:slave 可以看出,redis 6381 为从节点:[root@192 redis-5.0.7]# src/redis-cli -h 127.0.0.1 -p 6381 127.0.0.1:6381> info replication # Replication role:slave master_host:127.0.0.1 master_port:6379 master_link_status:up master_last_io_seconds_ago:1 master_sync_in_progress:0 slave_repl_offset:46230 slave_priority:100 slave_read_only:1 connected_slaves:0 master_replid:4333b9916945c9fc15b003ce0ff61ec7455cc0e8 master_replid2:0000000000000000000000000000000000000000 master_repl_offset:46230 second_repl_offset:-1 repl_backlog_active:1 repl_backlog_size:1048576 repl_backlog_first_byte_offset:1 repl_backlog_histlen:46230 127.0.0.1:6381>
- 查看 redis 6379(主节点):
- 故障转移:
- 将 redis 6379 强制停止:
[root@192 redis-5.0.7]# ps -ef | grep redis root 2703 1 0 16:18 ? 00:00:00 src/redis-server *:6379 root 2708 1 0 16:18 ? 00:00:00 src/redis-server *:6380 root 2714 1 0 16:18 ? 00:00:00 src/redis-server *:6381 root 2810 1 0 16:21 ? 00:00:00 src/redis-sentinel *:26379 [sentinel] root 2815 1 0 16:21 ? 00:00:00 src/redis-sentinel *:26380 [sentinel] root 2820 1 0 16:21 ? 00:00:00 src/redis-sentinel *:26381 [sentinel] root 51237 42180 0 16:23 pts/1 00:00:00 src/redis-cli -h 127.0.0.1 -p 6379 root 51296 51258 0 16:24 pts/2 00:00:00 src/redis-cli -h 127.0.0.1 -p 6380 root 51352 51316 0 16:25 pts/3 00:00:00 src/redis-cli -h 127.0.0.1 -p 6381 root 51412 2368 0 16:29 pts/0 00:00:00 grep --color=auto redis [root@192 redis-5.0.7]# kill -9 2703 [root@192 redis-5.0.7]#
- 查看主从节点:
- redis 6379 已停止。
- 查看 redis 6380:
从下面的 role:slave 可以看出,redis 6380 为从节点:127.0.0.1:6380> info replication # Replication role:slave master_host:127.0.0.1 master_port:6381 master_link_status:up master_last_io_seconds_ago:0 master_sync_in_progress:0 slave_repl_offset:112137 slave_priority:100 slave_read_only:1 connected_slaves:0 master_replid:764de6af1521b0204f26d230547986bc2d629efb master_replid2:4333b9916945c9fc15b003ce0ff61ec7455cc0e8 master_repl_offset:112137 second_repl_offset:102882 repl_backlog_active:1 repl_backlog_size:1048576 repl_backlog_first_byte_offset:1 repl_backlog_histlen:112137 127.0.0.1:6380>
- 查看 redis 6381:
从下面的 role:master 可以看出,redis 6381 为主节点(故障产生时,使用投票机制选举中的主节点):127.0.0.1:6381> info replication # Replication role:master connected_slaves:1 slave0:ip=127.0.0.1,port=6380,state=online,offset=112536,lag=1 master_replid:764de6af1521b0204f26d230547986bc2d629efb master_replid2:4333b9916945c9fc15b003ce0ff61ec7455cc0e8 master_repl_offset:112669 second_repl_offset:102882 repl_backlog_active:1 repl_backlog_size:1048576 repl_backlog_first_byte_offset:1 repl_backlog_histlen:112669 127.0.0.1:6381>
- 将 redis 6379 强制停止:
- 故障修复:
- 重新启动 redis 6379:
src/redis-server redis6379.conf
- 查看 redis 6379:
从下面的 role:slave 可以看出,redis 6379 为从节点(主节点故障修复后,转为从节点):127.0.0.1:6379> info replication # Replication role:slave master_host:127.0.0.1 master_port:6381 master_link_status:up master_last_io_seconds_ago:0 master_sync_in_progress:0 slave_repl_offset:154482 slave_priority:100 slave_read_only:1 connected_slaves:0 master_replid:764de6af1521b0204f26d230547986bc2d629efb master_replid2:0000000000000000000000000000000000000000 master_repl_offset:154482 second_repl_offset:-1 repl_backlog_active:1 repl_backlog_size:1048576 repl_backlog_first_byte_offset:146690 repl_backlog_histlen:7793 127.0.0.1:6379>
- 查看 redis 6380:
从下面的 role:slave 可以看出,redis 6380 为从节点:127.0.0.1:6380> info replication # Replication role:slave master_host:127.0.0.1 master_port:6381 master_link_status:up master_last_io_seconds_ago:0 master_sync_in_progress:0 slave_repl_offset:160376 slave_priority:100 slave_read_only:1 connected_slaves:0 master_replid:764de6af1521b0204f26d230547986bc2d629efb master_replid2:4333b9916945c9fc15b003ce0ff61ec7455cc0e8 master_repl_offset:160376 second_repl_offset:102882 repl_backlog_active:1 repl_backlog_size:1048576 repl_backlog_first_byte_offset:1 repl_backlog_histlen:160376 127.0.0.1:6380>
- 查看 redis 6381:
从下面的 role:master 可以看出,redis 6381 为主节点(故障产生时,使用投票机制选举中的主节点,除发生故障外,主节点将保持不变):127.0.0.1:6381> info replication # Replication role:master connected_slaves:2 slave0:ip=127.0.0.1,port=6380,state=online,offset=166949,lag=1 slave1:ip=127.0.0.1,port=6379,state=online,offset=167082,lag=0 master_replid:764de6af1521b0204f26d230547986bc2d629efb master_replid2:4333b9916945c9fc15b003ce0ff61ec7455cc0e8 master_repl_offset:167082 second_repl_offset:102882 repl_backlog_active:1 repl_backlog_size:1048576 repl_backlog_first_byte_offset:1 repl_backlog_histlen:167082 127.0.0.1:6381>
- 重新启动 redis 6379:
- 只能在主节点增加修改数据。