Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。从2010年3月15日起,Redis的开发工作由VMware主持。
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]# ls2.下载编译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 install3.执行redis安装脚本(选项全部回车即可)
[root@server1 redis-5.0.3]# cd utils/ [root@server1 utils]# ls [root@server1 utils]# ./install_server.sh4.检查端口号是否可以成功显示,会发现端口6379成功显示
[root@server1 utils]# netstat -tnlp5.编辑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 -tnlp7.将编译和安装好的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 install2.在server2中执行redis安装脚本并修改配置文件
[root@server2 redis-5.0.3]# cd utils/ [root@server2 utils]# ./install_server.sh3.在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 63793.在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 install2.在server3中执行redis安装脚本并修改配置文件
[root@server3 redis-5.0.3]# cd utils/ [root@server3 utils]# ./install_server.sh3.在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 63794.测试 1.在server1中查看节点的信息状态,发现此时的master是server1,而slave是server2和server3
[root@server1 utils]# redis-cli 127.0.0.1:6379> info2.在server1中上传数据并查看
127.0.0.1:6379> set name bai 127.0.0.1:6379> get name3.在server2中查看节点的信息状态,可以查看到master是server1
[root@server2 utils]# redis-cli 127.0.0.1:6379> info4.在server2中获取name,发现可以成功获取server1上的数据
127.0.0.1:6379> get name5.在server3中查看节点的信息状态,可以查看到master是server1
[root@server3 utils]# redis-cli 127.0.0.1:6379> info6.在server3中获取name,发现可以成功获取server1上的数据
127.0.0.1:6379> get name(一)配置高可用 1.在server1中将文件sentinel.conf复制到/etc/redis/
[root@server1 ~]# cd redis-5.0.3 [root@server1 redis-5.0.3]# cp sentinel.conf /etc/redis2.编辑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/redis4.在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> shutdown3.在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> info5.重新开启一个shell界面,使用ssh服务连接server3,查看节点的状态信息,发现此时的master是server2
[kiosk@foundation66 Desktop]$ ssh root@172.25.66.3 [root@server3 ~]# redis-cli 127.0.0.1:6379> info
