redis 主从复制+哨兵模式简易部署

<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的从服务器

大功告成

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容