Redis(一)Redis的主从复制以及Redis的高可用

    xiaoxiao2022-07-14  162

    一、概念讲解

    Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。从2010年3月15日起,Redis的开发工作由VMware主持。

    二、redis的主从复制

    1.在server1操作: 1.安装redis

    [root@server1 ~]# ls [root@server1 ~]# tar zxf redis-5.0.3.tar.gz [root@server1 ~]# ls [root@server1 ~]# cd redis-5.0.3 [root@server1 redis-5.0.3]# ls

    2.下载编译redis时需要的依赖性软件并编译和安装

    [root@server1 redis-5.0.3]# yum install gcc -y [root@server1 redis-5.0.3]# make [root@server1 redis-5.0.3]# make install

    3.执行redis安装脚本(选项全部回车即可)

    [root@server1 redis-5.0.3]# cd utils/ [root@server1 utils]# ls [root@server1 utils]# ./install_server.sh

    4.检查端口号是否可以成功显示,会发现端口6379成功显示

    [root@server1 utils]# netstat -tnlp

    5.编辑redis配置文件并重启redis服务

    [root@server1 utils]# vim /etc/redis/6379.conf [root@server1 utils]# /etc/init.d/redis_6379 restart

    配置文件中的内容如下(注意:此处只修改一行):

    70 bind 0.0.0.0

    注意: 先开始配置文件中的内容为bind 127.0.0.1,但是如果是这样的花,访问redis服务只能通过本机的客户端连接,无法通过远程连接,这样可以避免将redis服务暴露在外部环境中,如果将bind接口注释掉,那么将会接受所有来自可用网络接口的连接

    6.再次查看端口号是否显示

    [root@server1 utils]# netstat -tnlp

    7.将编译和安装好的redis目录发送到server2和server3

    [root@server1 ~]# scp -r redis-5.0.3 server2: [root@server1 ~]# scp -r redis-5.0.3 server3:

    2.在server2操作: 1.在server2中安装redis

    [root@server2 ~]# cd redis-5.0.3/ [root@server2 redis-5.0.3]# ls [root@server2 redis-5.0.3]# make install

    2.在server2中执行redis安装脚本并修改配置文件

    [root@server2 redis-5.0.3]# cd utils/ [root@server2 utils]# ./install_server.sh

    3.在server2中修改redis配置文件并重启redis服务

    [root@server2 utils]# vim /etc/redis/6379.conf [root@server2 utils]# /etc/init.d/redis_6379 restart

    配置文件下的内容如下:

    70 bind 0.0.0.0 1379 slaveof 172.25.66.1 6379

    3.在server3操作 1.在server3上安装redis

    [root@server3 ~]# cd redis-5.0.3/ [root@server3 redis-5.0.3]# ls [root@server3 redis-5.0.3]# make install

    2.在server3中执行redis安装脚本并修改配置文件

    [root@server3 redis-5.0.3]# cd utils/ [root@server3 utils]# ./install_server.sh

    3.在server3中修改redis配置文件并重启redis服务

    [root@server3 utils]# vim /etc/redis/6379.conf [root@server3 utils]# /etc/init.d/redis_6379 restart

    配置文件下的内容如下:

    70 bind 0.0.0.0 1379 slaveof 172.25.66.1 6379

    4.测试 1.在server1中查看节点的信息状态,发现此时的master是server1,而slave是server2和server3

    [root@server1 utils]# redis-cli 127.0.0.1:6379> info

    2.在server1中上传数据并查看

    127.0.0.1:6379> set name bai 127.0.0.1:6379> get name

    3.在server2中查看节点的信息状态,可以查看到master是server1

    [root@server2 utils]# redis-cli 127.0.0.1:6379> info

    4.在server2中获取name,发现可以成功获取server1上的数据

    127.0.0.1:6379> get name

    5.在server3中查看节点的信息状态,可以查看到master是server1

    [root@server3 utils]# redis-cli 127.0.0.1:6379> info

    6.在server3中获取name,发现可以成功获取server1上的数据

    127.0.0.1:6379> get name

    三.redis的高可用

    (一)配置高可用 1.在server1中将文件sentinel.conf复制到/etc/redis/

    [root@server1 ~]# cd redis-5.0.3 [root@server1 redis-5.0.3]# cp sentinel.conf /etc/redis

    2.编辑redis文件

    [root@server1 redis-5.0.3]# cd /etc/redis/ [root@server1 redis]# ls [root@server1 redis]# vim sentinel.conf

    配置文件的内容如下:

    17 protected-mode no #关闭保护模式 84 sentinel monitor mymaster 172.25.66.1 6379 2 113 sentinel down-after-milliseconds mymaster 10000 #连接超时时长,10000ms内无法连接主机,认为主机离线

    3.将编辑好的配置文件发送给server2和server3的/etc/redis目录下

    [root@server1 redis]# scp sentinel.conf server2:/etc/redis [root@server1 redis]# scp sentinel.conf server3:/etc/redis

    4.在server1中查看redis的状态信息,发现可以查看到两个slave分别为server2和server3

    [root@server1 redis]# redis-cli 127.0.0.1:6379> info

    (二)测试 1.每个节点都执行监控命令(使三台虚拟机执行监控命令,并打入后台)

    [root@server1 ~]# redis-server /etc/redis/sentinel.conf --sentinel [root@server2 ~]# redis-server /etc/redis/sentinel.conf --sentinel [root@server3 ~]# redis-server /etc/redis/sentinel.conf --sentinel

    注意: (1)在server1和server2和server3中可以查看到“+slave”,说明此行显示的是slave的信息 (2)此处server1和server2和server3出现的结果是一样的,这里就不过多说明

    2.重新开启一个命令shell界面,使用ssh服务连接server1,使其server1中的redis宕掉

    [kiosk@foundation66 Desktop]$ ssh root@172.25.66.1 [root@server1 ~]# redis-cli 127.0.0.1:6379> info 127.0.0.1:6379> shutdown

    3.在server2或server3中查看监控,会发现监控命令显示master从server1转换到server2上 (+switch-master mymaster 172.25.66.1 6379 172.25.66.2 6379) 4.重新开启一个shell界面,使用ssh服务连接server2,查看节点的状态信息,发现此时的master是server2,且连接了一个slave

    [kiosk@foundation66 Desktop]$ ssh root@172.25.66.2 [root@server2 ~]# redis-cli 127.0.0.1:6379> info

    5.重新开启一个shell界面,使用ssh服务连接server3,查看节点的状态信息,发现此时的master是server2

    [kiosk@foundation66 Desktop]$ ssh root@172.25.66.3 [root@server3 ~]# redis-cli 127.0.0.1:6379> info

    最新回复(0)