【 Keepalived 】Nginx or Http 主-主模式
2016-05-14 12:34
513 查看
上一篇:【 Keepalived 】Nginx or Http 主-备模式
在此基础上进行修改并实现 Keepalived主-主模式
首先,需要理解的是:主-备模式是一个VIP在工作,主-主模式则需要两个VIP来工作。一旦其中一台主机出现问题,则两个VIP都会绑定到同一台主机上,待到故障解除,重新启动httpd服务,恢复正常。
ka1 配置文件:
ka2 配置文件:
测试:
正常情况下:
ka1:
ka2:
当ka1 httpd出现错误时:
再三强调:在keepalived使用中,脚本很重要很重要。要经过严格的测试调试,才能使用,我这里在贴一遍脚本,上个主-备中也有脚本,需要灵活修改的地方我红色标识出来:
注意:此脚本必须有访问默认页面支持。
在此基础上进行修改并实现 Keepalived主-主模式
首先,需要理解的是:主-备模式是一个VIP在工作,主-主模式则需要两个VIP来工作。一旦其中一台主机出现问题,则两个VIP都会绑定到同一台主机上,待到故障解除,重新启动httpd服务,恢复正常。
ka1 配置文件:
! Configuration File for keepalived global_defs { notification_email { root@localhost } notification_email_from root@localhost smtp_server localhost smtp_connect_timeout 30 router_id NodeA } vrrp_script check_nginx { script "/etc/keepalived/bash/check_nginx.sh" interval 5 weight -10 } vrrp_instance VI_1 { state MASTER interface eth0 virtual_router_id 51 priority 100 advert_int 1 authentication { auth_type PASS auth_pass 1111 } track_script { check_nginx } virtual_ipaddress { 192.168.2.200/24 } } vrrp_instance VI_2 { state BUCKUP interface eth0 virtual_router_id 52 priority 99 advert_int 1 authentication { auth_type PASS auth_pass 1111 } track_script { check_nginx } virtual_ipaddress { 192.168.2.201/24 } }
ka2 配置文件:
! Configuration File for keepalived global_defs { notification_email { root@localhost } notification_email_from root@localhost smtp_server localhost smtp_connect_timeout 30 router_id NodeB } vrrp_script check_nginx { script "/etc/keepalived/bash/check_nginx.sh" interval 5 weight -10 } vrrp_instance VI_1 { state BACKUP interface eth1 virtual_router_id 51 priority 99 advert_int 1 authentication { auth_type PASS auth_pass 1111 } track_script { check_nginx } virtual_ipaddress { 192.168.2.200/24 } } vrrp_instance VI_2 { state MASTER interface eth1 virtual_router_id 52 priority 100 advert_int 1 authentication { auth_type PASS auth_pass 1111 } track_script { check_nginx } virtual_ipaddress { 192.168.2.201/24 } }
测试:
正常情况下:
ka1:
[ka1 root@192.168.2.10 ~]#ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 00:0c:29:39:92:4f brd ff:ff:ff:ff:ff:ff inet 192.168.2.10/24 brd 192.168.2.255 scope global eth0 inet 192.168.2.200/24 scope global secondary eth0 inet6 fe80::20c:29ff:fe39:924f/64 scope link valid_lft forever preferred_lft forever
ka2:
[ka2 root@192.168.2.11 ~]#ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 00:0c:29:7b:9f:8c brd ff:ff:ff:ff:ff:ff inet 192.168.2.11/24 brd 192.168.2.255 scope global eth1 inet 192.168.2.201/24 scope global secondary eth1 inet6 fe80::20c:29ff:fe7b:9f8c/64 scope link valid_lft forever preferred_lft forever
当ka1 httpd出现错误时:
ka1 VIP被转移 [ka1 root@192.168.2.10 ~]#ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 00:0c:29:39:92:4f brd ff:ff:ff:ff:ff:ff inet 192.168.2.10/24 brd 192.168.2.255 scope global eth0 inet6 fe80::20c:29ff:fe39:924f/64 scope link valid_lft forever preferred_lft forever ka2 被绑定了两个VIP [ka2 root@192.168.2.11 ~]#ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 00:0c:29:7b:9f:8c brd ff:ff:ff:ff:ff:ff inet 192.168.2.11/24 brd 192.168.2.255 scope global eth1 inet 192.168.2.201/24 scope global secondary eth1 inet 192.168.2.200/24 scope global secondary eth1 inet6 fe80::20c:29ff:fe7b:9f8c/64 scope link valid_lft forever preferred_lft forever
再三强调:在keepalived使用中,脚本很重要很重要。要经过严格的测试调试,才能使用,我这里在贴一遍脚本,上个主-备中也有脚本,需要灵活修改的地方我红色标识出来:
#!/bin/bash pidfile=/var/lock/subsys/`basename $0`.pid if [ -f $pidfile ] && [ -e /proc/`cat $pidfile` ] ; then exit 1 fi trap "rm -rf $pidfile ; exit 0" 1 2 3 15 echo $$ > $pidfile maxfails=3 fails=0 success=0 while [ 1 ] do /usr/bin/wget --timeout=3 --tries=1 http://192.168.2.11/ -q -O /dev/null && ping -c1 192.168.2.1 &> /dev/null if [ $? -ne 0 ] ; then let fails=$[$fails+1] success=0 else fails=0 let success=$[$success+1] fi if [ $fails -ge $maxfails ] ; then fails=0 success=0 #check keepalived is running ? try to stop it /etc/init.d/keepalived status | grep 正在运行 if [ $? -eq 0 ] ; then /usr/bin/logger -is "local service fails $maxfails times ... try to stop keepalived." /etc/init.d/keepalived stop 2>&1 | /usr/bin/logger fi fi if [ $success -gt $maxfails ] ; then #check keepalived is stopped ? try to start it /etc/init.d/keepalived status | grep 已停 if [ $? -eq 0 ] ; then /usr/bin/logger -is "service changes normal, try to start keepalived ." /etc/init.d/keepalived start fi success=0 fi sleep 3 done
注意:此脚本必须有访问默认页面支持。
相关文章推荐
- 30分钟上手最火android网络请求框架Retrofit
- 【 Keepalived 】Nginx or Http 主-备模式
- 跑PIN码破解无线网络WIFI密码的原理分析(转)
- Post方式请求网络数据
- 解决iOS9更新后http协议和https协议的问题
- Get方式请求网络数据+Fragment+SharedPreferences
- 图论(floyd算法):NOI2007 社交网络
- HttpClient4.3版本设置超时
- java发送http的get、post请求
- TCP进入快速恢复时的窗口下降算法
- http://www.2cto.com/database/201408/327315.html
- 网络请求
- Tomcat - 设置 HTTP 摘要认证
- 网络仿真NS2之——环境配置
- cf653d Delivery Bears【二分+网络流】
- tomcat 配置https 访
- 网络流二十四题之二十四 —— 骑士共存问题(KNI)
- IdHTTPServer1 收到POST 文件和参数
- http://nianjian.xiaze.com/tags.php?/%E5%BC%80%E5%B0%81%E5%B9%B4%E9%89%B4/1/13463189106/
- 网络流二十四题之九 —— 方格取数问题(GRID)