1. server3做server4的slave
1. [root@server4 ~]# scp -r redis-5.0.3 root@172.25.60.3:/root/
[root@server3 ~]# cd redis-5.0.3/
2. [root@server3 redis-5.0.3]# make install
[root@server3 utils]# ./install_server.sh
Welcome to the redis service installer
This script will help you easily set up a running redis server
Please select the redis port for this instance: [6379]
Selecting default: 6379
Please select the redis config file name [/etc/redis/6379.conf]
Selected default - /etc/redis/6379.conf
Please select the redis log file name [/var/log/redis_6379.log]
Selected default - /var/log/redis_6379.log
Please select the data directory for this instance [/var/lib/redis/6379]
Selected default - /var/lib/redis/6379
Please select the redis executable path [/usr/local/bin/redis-server]
Selected config:
Port : 6379
Config file : /etc/redis/6379.conf
Log file : /var/log/redis_6379.log
Data dir : /var/lib/redis/6379
Executable : /usr/local/bin/redis-server
Cli Executable : /usr/local/bin/redis-cli
Is this ok? Then press ENTER to go on or Ctrl-C to abort.
Copied /tmp/6379.conf => /etc/init.d/redis_6379
Installing service...
Successfully added to chkconfig!
Successfully added to runlevels 345!
Starting Redis server...
Installation successful!
3. [root@server3 utils]# vim /etc/redis/6379.conf
bind 0.0.0.0 # 对所有的访问开启
slaveof 172.25.60.4 6379 # 作为172.25.60.4的slave
4. [root@server3 utils]# /etc/init.d/redis_6379 restart
Stopping ...
Redis stopped
Starting Redis server...
[root@server3 utils]# netstat -antlpe
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State User Inode PID/Program name
tcp 0 0 0.0.0.0:6379 0.0.0.0:* LISTEN 0 21410 2260/redis-server 0
测试:slave只能读
[root@server3 utils]# redis-cli
127.0.0.1:6379> get name
2. 主从切换
slave:server3 server2
master:server4
server2同server3一样配置redis
1. [root@server2 ~]# cd redis-5.0.3/
2. [root@server2 redis-5.0.3]# make install
3. [root@server2 redis-5.0.3]# cd utils/
[root@server2 utils]# ./install_server.sh
4. [root@server2 utils]# vim /etc/redis/6379.conf
bind 0.0.0.0 # 对所有的访问开启
slaveof 172.25.60.4 6379 # 作为172.25.60.4的slave
5. [root@server2 utils]# /etc/init.d/redis_6379 restart
Stopping ...
Redis stopped
Starting Redis server...
6. [root@server2 utils]# netstat -antlpe
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State User Inode PID/Program name
tcp 0 0 0.0.0.0:6379 0.0.0.0:* LISTEN 0 20390 2247/redis-server 0
测试:
[root@server2 utils]# redis-cli
127.0.0.1:6379> get name
"jy"
server4:
1. [root@server4 redis-5.0.3]# cp sentinel.conf /etc/redis/
[root@server4 redis-5.0.3]# cd /etc/redis/
[root@server4 redis]# ls
6379.conf sentinel.conf
2. [root@server4 redis]# vim sentinel.conf
protected-mode no # 关闭保护模式
sentinel monitor mymaster 172.25.60.4 6379 2 # 设置master,2表示至少有两个slave认为master挂了,master1才认为是挂了
sentinel down-after-milliseconds mymaster 10000 # master挂了10s后进行切换
3. [root@server4 redis]# scp sentinel.conf root@172.25.60.3:/etc/redis/
sentinel.conf 100% 9710 9.5KB/s 00:00
[root@server4 redis]# scp sentinel.conf root@172.25.60.2:/etc/redis/
sentinel.conf 100% 9710 9.5KB/s 00:00
4. [root@server4 redis]# redis-server /etc/redis/sentinel.conf --sentinel
server3:
[root@server3 utils]# redis-server /etc/redis/sentinel.conf --sentinel
server2:
[root@server2 utils]# redis-server /etc/redis/sentinel.conf --sentinel
server4:
1. [root@server4 ~]# redis-cli
127.0.0.1:6379> info
# Replication
role:master
connected_slaves:2
slave0:ip=172.25.60.3,port=6379,state=online,offset=29228,lag=0
slave1:ip=172.25.60.2,port=6379,state=online,offset=29228,lag=1
[root@server4 ~]# netstat -antlpe|grep 26379 # 哨兵的端口26379
2. [root@server4 ~]# redis-cli -p 26379
127.0.0.1:26379> info
# Sentinel
sentinel_masters:1
sentinel_tilt:0
sentinel_running_scripts:0
sentinel_scripts_queue_length:0
sentinel_simulate_failure_flags:0
master0:name=mymaster,status=ok,address=172.25.60.4:6379,slaves=2,sentinels=3
测试:
[root@server4 ~]# redis-cli
127.0.0.1:6379> SHUTDOWN
6599:X 12 Mar 2020 12:44:48.361 # +sdown slave 172.25.60.4:6379 172.25.60.4 6379 @ mymaster 172.25.60.2 6379 # master选择server2接替自己的工作
[root@server2 ~]# redis-cli
127.0.0.1:6379> info
# Replication
role:master
connected_slaves:1
slave0:ip=172.25.60.3,port=6379,state=online,offset=133674,lag=0
6379.conf文件内容解释
[root@server4 ~]# vim /etc/redis/6379.conf
# 内存磁盘刷新数据的频率,由下往上,60s内有10000个刷新,如果没有等待300秒是否有10个刷新,如果没有等待900秒是否有一个刷新
save 900 1
save 300 10
save 60 10000