Redis安装,集群Redis主从,哨兵监听
真实自己一步一步来的,已经做过一遍了,又全部卸载,边记录边做,真实可靠,可以看截图中的服务器上显示的时间
-
Linux上安装redis
-
下载redis压缩包
链接:https://pan.baidu.com/s/11DFZM1QKriAf1qLdqNW6yw
提取码:6qb9 -
通过xftp连接到服务器,上传到服务器上
-
进入存放Redis压缩包的位置,解压Redis压缩包
tar -zxvf redis-4.0.11.tar.gz
- cd进入redis目录执行make,显示下图的这个就是成功
-
安装,依旧在redis目录下执行make PREFIX=/usr/local/redis install命令,执行成功如下,成功后执行cp -r redis.conf /usr/local/redis/,把redis.conf文件复制到/usr/local/redis文件中
-
执行cd /usr/local/redis命令进入文件,查看文件下的东西,如图所示
-
启动redis,./bin/redis-server,记得带’.’
-
执行bin目录下的redis-cli进入redis,./redis-cli -c -p 6379
-
存中文出现乱码,可以使用/redis-cli -c -p 6379 --raw进入redis,这样就解决了
-
-
**搭建Redis主从
-
创建一个文件夹,mkdir /usr/local/redis-cluster,接着执行cp -r /usr/local/redis/bin /usr/local/redis-cluster/7001,我们把redis中的bin复制进去改成7001,进入到7001目录查看
-
返现少了redis.conf文件,执行命令cp -r /usr/local/redis/redis.conf /usr/local/redis-cluster/7001,这样就把redis.conf文件复制到7001下边了,把7001复制三份,分别为7002,7003
-
我们需要对redis.conf文件进行修改,可以直接在xftp中打开redis.conf进行修改
主库配置如下:
#修改端口号
port:7001
#设置只读,yes是只读,no是读写
slave-read-only no
#从库的连接主库的密码
#为了防止宕机之后恢复,可以直接变成从库
masterauth 123456
#设置密码
requirepass 123456
//设置ip
bind 127.0.0.1
从库7002,7003的配置
#端口号
port:7002
#主库的ip+端口号
slaveof 127.0.0.1 7001
#只读
slave-read-only yes
#从库的连接主库的密码
masterauth 123456
#从库的密码
requirepass 123456
#设置ip
bind 127.0.0.1 -
分别启动7001,7002,7003,在7001,7002,7003目录下分别执行./redis-server redis.conf,紧接着我们把redis中bin目录下redis-cli文件复制到redis-cluster中,cp -r /usr/local/redis/bin/redis-cli /usr/local/redis-cluster
-
我们进入到redis-cluster目录下执行命令./redis-cli -c -p 7001,然后切记一定要输入密码,因为我们之前设置连接密码了,如果不输入密码会提示报错
-
我们输入info replication命令,可以看到有两个从节点,7002和7003
-
接下来我们测试一下,在7001中存一个信息,切记进入7002和7003记得输入密码
在7002中获取存的数据
7003中获取存的数据
在7002中插入数据提示它们只有读的权限
-
-
redis哨兵监听
哨兵可以在主库宕机后从从库中选一个做主库,并且修改从库的配置文件,如果宕机的主库恢复会变成从库,配置文件也会随之修改,哨兵中监听的主库ip+端口号切换为新的主库
-
我们创建一个文件 mkdir /usr/local/sentinel ,我们把redis下bin目录中的redis-sentinel和redis-server拷贝到sentinel文件中,cp -r /usr/local/redis/bin/redis-sentinel /usr/local/sentinel/和cp -r /usr/local/redis/bin/redis-server /usr/local/sentinel/
-
从最开始我们解压redis压包的目录中找到redis,打开找到一个sentinel.conf文件,复制到之前我们创建的sentinel文件中cp -r sentinel.conf /usr/local/sentinel
查看是否有redis-sentinel,redis-server和sentinel.conf文件
-
配置sentinel.conf文件,
哨兵配置:
#哨兵端口号
port:26379
#哨兵ip
bind 127.0.0.1
#哨兵监听的主库ip+端口号,后边的1是至少几个哨兵认为他宕机他才算宕机,
#mymaster是主库的名字随便起但是要和下边的对应,同时这段也要放在所有使用过mymaster的上边,因为没有定义你就使用会报错
sentinel monitor mymaster 127.0.0.1 7001 1
#哨兵在多少毫秒内无法联系上的话,这个实例将被认为已经down了,它是个时限
sentinet down-after-millisecond mymaster 10000
#若sentinel在该配置值内未能完成failover操作(即故障时master/slave自动切换),则认为本次 failover失败
sentinet failover-timeout mymaster 10000
#连接主库的密码
sentinet auth-pass mymaster 123456 -
启动哨兵,进入到sentinel目录下,执行./redis-sentinel sentinel.conf,启动车成功
-
测试,查询redis启用状态ps -ef|grep redis,然后关闭主库kill -9 28675,在查看就发现主库已经关掉了
-
info replication查看集群状态,发现7003是主库,那我们去查看sentinel配置中有没有改变监控的主库ip和端口
发现已经更换为7003,说明成功了
我们之前设置了7003只读,现在去查看7003有没有写的权限,7003有写的操作,说明配置文件已经修改,看图中有一处报错,是因为没有输入密码,每次集群操作都需要重新输入密码,比如换主库需要重新输入密码auth+密码
7002还是只能读不能写
我们恢复7001节点看看会有什么变化
7001变成了从库,原因是因为我们在7001中配置了masterauth 123456,如果不配置这个即使恢复了也不会成7003的从库,因为没有7003的连接密码
-
每次集群有修改都需要输入一次密码,比如切换主库,从库关闭启动都需要重新输入密码连接否则会报错
至此redis就告一段落了,这些是我边做边写的,实属不易,就是为了给新手们一个指导,避免一些坑,如果中间有报错的,在下边评论,我会尽我所能帮助大家解决问题,这个只有做法,没有原理讲解,我尽快补上