<meta charset="utf-8">
首先配置主从复制
redis主服务器 redis-6379.conf 配置 6379
### 端口
port 6379
### 后台启动
yes/no daemonize yes
### pid文件路径
pidfile /var/run/redis_6379.pid
### 日志文件地址
logfile "/home/pql/logs/redis/redis-6379.log"
### redis密码
requirepass redisPassWd
1号从服务器 redis-6380.conf 配置 6380
### 端口
port 6380
### 后台启动
yes/no daemonize yes
### pid文件路径
pidfile /var/run/redis_6380.pid
### 日志文件地址
logfile "/home/pql/logs/redis/redis-6380.log"
### 配置为master的从
replicaof 127.0.0.1 6379
### master的密码
masterauth redisPassWd
2号从服务器 redis-6380.conf 配置 6381
### 端口
port 6381
### 后台启动
yes/no daemonize yes
### pid文件路径
pidfile /var/run/redis_6380.pid
### 日志文件地址
logfile "/home/pql/logs/redis/redis-6380.log"
### 配置为master的从
replicaof 127.0.0.1 6379
### master的密码
masterauth redisPassWd
启动主服务
./bin/redis-server ./redis-6379.conf
启动从服务器
./bin/redis-server ./redis-6380.conf
./bin/redis-server ./redis-6381.conf
查看日志

启动日志.png
6380与6381两台从服务器都连接成功并且开始同步
尝试进入主服务器 写入数据
[root@VM-0-15-centos redis]# ./bin/redis-cli -h 127.0.0.1 -p 6379 -a redisPassWd
127.0.0.1:6379> set master 6379 OK

写入数据.png
随便进入一台从服务器查看key和value
[root@VM-0-15-centos redis]# ./bin/redis-cli -h 127.0.0.1 -p 6380
127.0.0.1:6380> keys *
1) "master"
127.0.0.1:6380> get master
"6379"

查看key和value.png
在主服务器添加的数据成功同步到从服务器中
然后开始配置哨兵
修改 sentinel-26379 | 26380 | 26381.conf 三台的配置
### 端口
port 26379 | 26380 | 26381
### 是否后台启动
daemonize yes
### pid文件路径
pidfile /var/run/redis-sentinel.pid
### 日志文件路径
logfile "/var/log/sentinel.log"
### 定义Redis主的别名, IP, 端口,这里的2指的是需要至少2个Sentinel认为主Redis挂了才最终会采取下一步行为
sentinel monitor mymaster 127.0.0.1 6379 2
### 配置主服务器密码
sentinel auth-pass myster redisPassWd
### 如果mymaster 30秒内没有响应,则认为其主观失效
sentinel down-after-milliseconds mymaster 30000
### 如果master重新选出来后,其它slave节点能同时并行从新master同步数据的台数有多少个,值越大,所有slave节点完成同步切换的整体速度越快,如果此时正好在访问这slave,可能造成读取失败。最保守的设置为1,同一时间,只能有一台干这件事,这样其它slave还能继续服务,但是所有slave全部完成缓存更新同步的进程将变慢。
sentinel parallel-syncs mymaster 1
### 该参数指定一个间段,在该时间段内没有实现故障转移成功,则会再一次发起故障转移的操作,单位毫秒
sentinel failover-timeout mymaster 180000
### 不允许使用SENTINEL SET设置notification-script和client-reconfig-script。
sentinel deny-scripts-reconfig yes
启动哨兵
./bin/redis-sentinel ./sentinel-26379.conf
./bin/redis-sentinel ./sentinel-26380.conf
./bin/redis-sentinel ./sentinel-26381.conf
随便查看一台哨兵的日志

查看哨兵日志.png
主从检测成功 哨兵集群也成功
进入哨兵 查看主从信息
[root@VM-0-15-centos redis]# ./bin/redis-cli -p 26380
### 查看主master信息
127.0.0.1:26380> sentinel master mymaster
1) "name"
2) "mymaster"
3) "ip"
4) "127.0.0.1"
5) "port"
6) "6379"
7) "runid"
8) "cb3eeb67544932a3d547b35e758e74494a649088"
9) "flags"
10) "master" ...
### 查看从slave信息
127.0.0.1:26380> sentinel slaves mymaster
1)
1) "name"
2) "127.0.0.1:6380"
3) "ip"
4) "127.0.0.1"
5) "port"
6) "6380"
7) "runid"
8) "d0d8afa72b1cdbe703c7d2124725d2cc55adaff1"
9) "flags"
10) "slave" ...
2)
1) "name"
2) "127.0.0.1:6381"
3) "ip"
4) "127.0.0.1"
5) "port"
6) "6381"
7) "runid"
8) "806be715f63ca3c22f7423f1596da6b76248fa7c"
9) "flags"
10) "slave" ...
### 查看哨兵集群信息
127.0.0.1:26380> sentinel sentinels mymaster
1)
1) "name"
2) "a76d2a7dab5cad732b408f865d8c87c7eea8ee4f"
3) "ip"
4) "127.0.0.1"
5) "port"
6) "26379"
7) "runid"
8) "a76d2a7dab5cad732b408f865d8c87c7eea8ee4f"
9) "flags"
10) "sentinel" ...
2)
1) "name"
2) "ea6a92bddad35b2cf3e882ce8ad723582025ef55"
3) "ip"
4) "127.0.0.1"
5) "port"
6) "26381"
7) "runid"
8) "ea6a92bddad35b2cf3e882ce8ad723582025ef55"
9) "flags"
10) "sentinel" ...
尝试kill宕机掉主服务器 看看故障转移情况
[root@VM-0-15-centos ~]# ps -ef | grep redis
root 2371 1 0 Oct13 ? 00:01:07 ./bin/redis-server 127.0.0.1:6380
root 2853 1 0 Oct13 ? 00:01:52 ./bin/redis-sentinel *:26379 [sentinel]
root 3177 1 0 Oct13 ? 00:01:53 ./bin/redis-sentinel *:26380 [sentinel]
root 3190 1 0 Oct13 ? 00:01:53 ./bin/redis-sentinel *:26381 [sentinel]
root 9699 1 0 Oct13 ? 00:01:13 ./bin/redis-server 127.0.0.1:6379
root 25839 1 0 Oct13 ? 00:01:00 ./bin/redis-server 127.0.0.1:6381
### kill 6379的主
[root@VM-0-15-centos ~]# kill -9 9699
查看日志

查看主从切换日志.png
将主服务器标记为下线 然后选举出新主为6381 然后将故障的主6379修改为6381的从服务器并标记为下线
进入哨兵查看主从信息
### 可以看到主服务器已经修改为6381
127.0.0.1:26380> sentinel master mymaster
1) "name"
2) "mymaster"
3) "ip"
4) "127.0.0.1"
5) "port"
6) "6381"
7) "runid"
8) "806be715f63ca3c22f7423f1596da6b76248fa7c"
9) "flags"
10) "master"
### 查看从服务器 发现6380是正常从服务器而6379则是标记为下线的从服务器
127.0.0.1:26380> sentinel slaves mymaster
1)
1) "name"
2) "127.0.0.1:6380"
3) "ip"
4) "127.0.0.1"
5) "port"
6) "6380"
7) "runid"
8) "d0d8afa72b1cdbe703c7d2124725d2cc55adaff1"
9) "flags"
10) "slave" ...
2)
1) "name"
2) "127.0.0.1:6379"
3) "ip"
4) "127.0.0.1"
5) "port"
6) "6379"
7) "runid"
8) ""
9) "flags"
10) "s_down,slave,disconnected" ...
等到6379重新上线的时候 他将会是6381的从服务器
大功告成