keepalived 不使用关闭服务的方式切换vip

1.编写vrrp脚本:

vrrp_script chk {
script “[[ -f /data/down_200 ]] && exit 1 || exit 0”
interval 1
weight -100
}

2.在需要vrrp_install实例中添加调用脚本:

track_script {
chk
}

3.在virtul_server中的real_server

notify_down /data/down_200.sh #此脚本要有执行权限

4.down_200.sh的shell内容为

touch /data/down_200 #一定要写绝对路径,否则找不到文件


####注意:
1.在vrrp_install实例中,一定要把优先值priority 设置为大于100(此处与步骤1中的值相对)
因为执行步骤1的脚本,会减掉100,减掉后的值,如何小于0,比较会不准确!!!!
2.多个keepalived都要设置(配置不同之处,请看之前的文章)
3.此配置可用于多个应用使用同一套keepalived,如果使用关闭keepalived的方式,会使共用的其他服务不能使用keepalived高可用.
4.多个应用使用同一套keepalived,为了隔离开来,使用以上方式,是比较好的方式,以上的配置也要再单独配置,包括本身的基础keepalived配置也要配置

http://blog.51cto.com/liuzhengwei521/1929589

keepalived 产生VIP绑定到两台不同机器的IP上

原因是vrrp协议被防火墙屏蔽,照成数据未统一调配,使用keepalived在各自的机器上相互独立
解决两种办法:
#####1.允许vrrp协议通过防火墙
a.iptables中:
“`shell
vi /etc/sysconfig/iptables 增加这个
-A INPUT -p vrrp -d 224.0.0.0/32 -j ACCEPT

service iptables restart

 b.firewall中:
 ```shell
firewall-cmd --direct --permanent --add-rule ipv4 filter INPUT 0 --in-interface eth0 --destination 224.0.0.18 --protocol vrrp -j ACCEPT

firewall-cmd --reload
#eth0表示要绑定VIP网卡
#224.0.0.18表示kp默认的组播地址,不需要改

##或者
#####2.关闭防火墙
a.iptables中:service iptables stop #一般用于centos6中
b.firewall中:systemctl stop firewalld.service #centos7以上

redis 主从配置

redis源码安装
1.下载:shell>wget http://download.redis.io/releases/redis-3.2.11.tar.gz
2.编译:解压后,进入文件夹,shell>make
3.安装:shell>make PREFIX=/usr/local/redis
主库配置与测试
1.进入解压后的目录,复制自带的配置文件,shell>cp redis.conf  /usr/local/redis/redis.conf
2.修改配置:shell > /usr/local/redis/redis.conf
3.修改配置信息1,不使用安装模式,如下:protected-mode no
4.修改配置信息2,解除绑定本地IP,如下:#bind 127.0.0.1
5.修改配置信息3,后台运行,如下:daemonize yes
6.启动:shell>/usr/local/redis/bin/redis-server /usr/local/redis/redis.conf
7.测试:/usr/local/redis/bin/redis-cli -h 192.168.0.90 -p 6379  #IP为本人虚拟机IP
从库配置与测试,与主库一致
1.进入解压后的目录,复制自带的配置文件,shell>cp redis.conf  /usr/local/redis/redis.conf
2.修改配置:shell > /usr/local/redis/redis.conf
3.修改配置信息1,不使用安装模式,如下:protected-mode no
4.修改配置信息2,解除绑定本地IP,如下:#bind 127.0.0.1
5.增加配置信息3,指定master的IP与端口:slaveof 192.168.0.90 6379
6.修改配置信息4,后台运行,如下:daemonize yes
7.启动:shell>/usr/local/redis/bin/redis-server /usr/local/redis/redis.conf
8.测试:/usr/local/redis/bin/redis-cli -h 192.168.0.91 -p 6379  #IP为本人另一虚拟机IP
主从测试

首先需要开放防火墙的端口:firewall-cmd –zone=public –permanent –add-port=6379/tcp
1.在主库机器上:shell > /usr/local/redis/bin/redis-cli -h 192.168.0.90 -p 6379
2.在主库机器上:192.168.0.90:6379 > set a 123456
3.在主库机器上:192.168.0.90:6379 >get a
4.在从库机器上:shell > /usr/local/redis/bin/redis-cli -h 192.168.0.91 -p 6379
5.在从库机器上:92.168.0.91:6379 > get a

总结
1.关键配置主库修改三处,从库修改四处,从库比主库多修改的配置是指定主库的信息
2.一主一从配置比较简单,接下来会逐渐深入,如互为主从,故障转移

附,在redis-cli命令行中执行临时主从,配置文件中未指定主从.
设置从库的slaveof信息:localhost:6379>slaveof 192.168.0.90 63709
此方法在redis重启后, 失效.
删除从库的slaveof配置:localhost:6379>slaveof no one

附2:此处更正redsi配置中的bind误解,很多百度搜索的bind IP以为这个IP是可以访问redis的IP,其实不是,指的是redis所在机器某个网卡的IP,那么些IP所在的网段都能访问,而且一般是内网!!!