Redis+Keepalived 实现交互缓存 Redis主从交换脚本出错.
环境
192.168.10.1 VIP
192.168.10.2 Keepalived & Redis 的主服务器
192.168.10.3 Keepalived & Redis 的从服务器
想法:
当10.2(即主服务器)挂掉的时候,keepalived 的VIP会自动转到10.3
这个时候利用keepalived的notify_master 来调用一个setSelfIsMaster.sh
setSelfIsMaster.sh内容为:
#!/bin/sh
#########将自己设为Redis的主机
redis-cli -h 127.0.0.1 -p 6379 slaveof NO ONE
同时在启另外一个脚本检测原来10.2服务的Redis是否正常
如果正常
--->将10.2(Redis的Master)重新设置为Master
redis-cli -h 192.168.10.2 -p 6379 slaveof NO ONE
--->再将自己设置为10.2的Slave
redis-cli -h 192.168.10.3 -p 6379 slaveof 192.168.10.2 6379
但上面两个脚本不会写!!!
10.2设置同上
问题:
1.当10.2挂掉了,
10.3设置变成Redis的Master.
如果此时进行了大量的Set操作(set aaaa bbbb),VIP连接到的10.3,所能正常get,set
一段时间后,10.2恢复正常.那么此时VIP会连接到10.2.
而且也会将10.2重新设置为Redis的Master,将10.3设置为10.2的slave.
那么此时会不会有数据丢失的问题.比如还能get 到aaaa(注意此时VIP连接的是10.2,但aaaa是set在原来的10.3上面)
2.shell的脚本的问题
#!/bin/sh
#########将自己设为Redis的主机
redis-cli -h 127.0.0.1 -p 6379 slaveof NO ONE
--->1.报错:
: No such file or directory: ?#!/bin/sh
OK
求指导,第一个错是什么原因
--->2.问题:
从上面结果看
redis-cli -h 127.0.0.1 -p 6379 slaveof NO ONE
这条命令是执行成功的.
但是看后台运行记录,实际是失败的,信息如下.
[30295] 19 Oct 18:35:09 * Connecting to MASTER...
[30295] 19 Oct 18:35:09 # Unable to connect to MASTER: Success
[30295] 19 Oct 18:35:09 - Accepted 192.168.36.53:57765
[30295] 19 Oct 18:35:09 - Client closed connection
[30295] 19 Oct 18:35:10 * Connecting to MASTER...
[30295] 19 Oct 18:35:10 # Unable to connect to MASTER: Success
[30295] 19 Oct 18:35:10 - Accepted 192.168.36.53:57768
[30295] 19 Oct 18:35:10 - Client closed connection
[30295] 19 Oct 18:35:11 - DB 0: 9 keys (0 volatile) in 16 slots HT.
但是这条命令,直接在命令行里面执行是没有问题的.
执行之后,后台信息如下:
[30295] 19 Oct 18:35:11 * MASTER MODE enabled (user request)
[30295] 19 Oct 18:35:11 - Client closed connection
[30295] 19 Oct 18:35:11 - Accepted 192.168.36.53:57772
[30295] 19 Oct 18:35:11 * Slave ask for synchronization
[30295] 19 Oct 18:35:11 * Starting BGSAVE for SYNC
[30295] 19 Oct 18:35:11 * Background saving started by pid 31201
[31201] 19 Oct 18:35:11 * DB saved on disk
[30295] 19 Oct 18:35:11 * Background saving terminated with success
[30295] 19 Oct 18:35:11 * Synchronization with slave succeeded
不知道,我把需求和问题描述清楚了没有.
还请了解的指导.
最好是能用即时工具QQ:181057908