redis 是一个高性能的 key-value 数据库。 Redis 的所有数据都是保存在内存中,然后不定期的通过异步方式保存到磁盘上(这称为“半持久化模式”);也可以把每一次数据变化都写入到一个 appendonly file(aof)里面(这称为“全持久化模式”)。
server1:172.25.19.1 主节点
server2:172.25.19.2 从节点
server3:172.25.19.3 从节点
网络:火墙关闭、selinux状态disabled
【server1】【server2】【server3】下载并编译安装包
[root@server1 ~]# /etc/init.d/mysqld stop
[root@server1 ~]# tar zxf redis-4.0.8.tar.gz
[root@server1 ~]# cd redis-4.0.8
[root@server1 redis-4.0.8]# yum install -y gcc
[root@server1 redis-4.0.8]# make && make install
[root@server1 redis-4.0.8]# cd utils/ #调用脚本直接回车即可完成配置
[root@server1 utils]# ./install_server.sh
[server1]
[root@server1 utils]# vim /etc/redis/6379.conf
注:默认的bind 接口是127.0.0.1,也就是本地回环地址。 这样的话,访问redis服务只能通过本机的客户端连接,而无法通过远程连接, 这样可以避免将redis服务暴露于危险的网络环境中,防止一些不安全的人随随便便通过远程 连接到redis服务。 如果bind选项为空的话,那会接受所有来自于可用网络接口的连接。
[root@server1 utils]# systemctl stop redis_6379 重载服务
[root@server1 utils]# systemctl start redis_6379
【server2】
[root@server2 utils]# vim /etc/redis/6379.conf
282
[root@server2 utils]# systemctl restart redis_6379
【server3】
[root@server3 utils]# vim /etc/redis/6379.conf
[root@server3 utils]# systemctl restart redis_6379
在master【server1】上写入名字
[root@server1 utils]# redis-cli
127.0.0.1:6379> set name westos
OK
127.0.0.1:6379> quit
在slave【server2、server3】上可以看到主端更改后的信息
[root@server1 ~]# cd redis-5.0.3/
[root@server1 redis-5.0.3]# cp sentinel.conf /etc/redis/
[root@server1 redis-5.0.3]# cd /etc/redis/
[root@server1 redis]# vim sentinel.conf
15 bind 0.0.0.0
16 protected-mode no
68 sentinel monitor mymaster 172.25.19.1 6379 2
97 sentinel down-after-milliseconds mymaster 10000
[root@server1 redis]# scp sentinel.conf server2:/etc/redis/
[root@server1 redis]# scp sentinel.conf server3:/etc/redis/ ##一定要先拷贝。因开启监控后文件会改变
三个哨兵监控:投票主下线:主观下线——>客观下线——>switch(主随机转到一个slave上)
[root@server1 redis]# redis-server /etc/redis/sentinel.conf --sentinel
[root@server2 redis]# redis-server /etc/redis/sentinel.conf --sentinel
[root@server3 redis]# redis-server /etc/redis/sentinel.conf --sentinel
另开一个termina连接主:
[root@server1 ~]# redis-cli
127.0.0.1:6379> SHUTDOWN
not connected>
[root@server1 redis]# redis-server /etc/redis/sentinel.conf --sentinel ##看监控 #主切为了2
[root@server1 ~]# redis-cli -h 172.25.19.3
172.25.19.3:6379> info ##主为2
[root@server1 ~]# vim /etc/redis/6379.conf
[root@server1 ~]# /etc/init.d/redis_6379 start
Starting Redis server...
[root@server1 ~]# redis-cli
127.0.0.1:6379> get name
"westos"
127.0.0.1:6379> info
注:
#指定要监控的master,mymaster是定义的master名字,quorum为法定票数2,此处指的是sentinel的数,
sentinel monitor mymaster 172.25.254.1 6379 2
#指定要连接的redis master密码
sentinel auth-pass mymaster redis
#至少多长时间 连不上才认为主的离线了。单位为ms, 即连接超时时长
sentinel down-after-milliseconds mymaster 10000
# 刚刚设定为新主时,允许同时有多少个从向主发起同步请求。
sentinel parallel-syncs 1
#当master故障时,把新的从提升为master,多长时间提不上就认为故障转移失败。
sentinel failover-timeout mymaster 180000 #故障转移的超时时长