Linux运维——Redis 的主从缓存

一、Redis主从缓存

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】上可以看到主端更改后的信息

二、redis主从自动切换

[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

Linux运维——Redis 的主从缓存_第1张图片

Linux运维——Redis 的主从缓存_第2张图片

Linux运维——Redis 的主从缓存_第3张图片

[root@server1 ~]# redis-cli -h 172.25.19.3
172.25.19.3:6379> info      ##主为2

Linux运维——Redis 的主从缓存_第4张图片
[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

Linux运维——Redis 的主从缓存_第5张图片
注:
#指定要监控的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 #故障转移的超时时长

 

你可能感兴趣的:(Linux运维——Redis 的主从缓存)