zoukankan      html  css  js  c++  java
  • 青蛙学Linux—一个实验:通过Keepalived实现Apache的高可用

    实验环境:

    • 主机A:操作系统CentOS 7.6.1810,IP地址192.168.0.88,Keepalived版本2.0.12
    • 主机B:操作系统CentOS 7.6.1810,IP地址192.168.0.110,Keepalived版本2.0.12

    两台主机均运行Apache提供Web服务;VIP为192.168.0.5。

    首先确认两台主机的Apache服务是否正常:

    访问http://192.168.0.88

    1

    访问http://192.168.0.110

    2

    1、不设置不抢占模式

    配置两台主机上的Keepalived,配置文件如下:

    主机A
    ! Configuration File for keepalived
    
    global_defs {
       notification_email {
         sysadmin@firewall.loc
       }
       notification_email_from Alexandre.Cassen@firewall.loc
       smtp_server 192.168.200.1
       smtp_connect_timeout 30
       router_id LVS_DEVEL
    }
    
    vrrp_script check_httpd {
        script "/usr/bin/killall -0 httpd"
        interval 2
        fall 2
        rise 2
    }
    
    vrrp_instance HTTPD {
        state MASTER
        interface ens160
        virtual_router_id 51
        priority 100
        advert_int 1
        authentication {
            auth_type PASS
            auth_pass aaaa
        }
        virtual_ipaddress {
            192.168.0.5/24
        }
        track_script {
            check_httpd
        }
    }

    这里没有设置不抢占模式,且没有配置邮件发送功能。

    主机B

    主机B的配置文件大部分同主机A,仅有其中的statepriority与主机A不同

    ! Configuration File for keepalived
    
    global_defs {
       notification_email {
         sysadmin@firewall.loc
       }
       notification_email_from Alexandre.Cassen@firewall.loc
       smtp_server 192.168.200.1
       smtp_connect_timeout 30
       router_id LVS_DEVEL
    }
    
    vrrp_script check_httpd {
        script "/usr/bin/killall -0 httpd"
        interval 2
        fall 2
        rise 2
    }
    
    vrrp_instance HTTPD {
        state BACKUP
        interface ens160
        virtual_router_id 51
        priority 80
        advert_int 1
        authentication {
            auth_type PASS
            auth_pass aaaa
        }
        virtual_ipaddress {
            192.168.0.5/24
        }
        track_script {
            check_httpd
        }
    }

    配置完成Keepalived后启动Keepalived,在主机A上通过ip addr命令可以查看到VIP已经绑定到主机A上:

    2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
        link/ether 00:0c:29:c0:e8:97 brd ff:ff:ff:ff:ff:ff
        inet 192.168.0.88/24 brd 192.168.0.255 scope global noprefixroute dynamic ens160
           valid_lft 54444sec preferred_lft 54444sec
        inet 192.168.0.5/24 scope global secondary ens160
           valid_lft forever preferred_lft forever
        inet6 fe80::ec4e:853a:570d:bf79/64 scope link noprefixroute 
           valid_lft forever preferred_lft forever

    此时访问http://192.168.0.5

    3

    实际访问的是主机A提供的Web服务。

    停止主机A的Apache服务,查看是否发生主备切换:

    主机A上执行ip addr命令

    2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
        link/ether 00:0c:29:c0:e8:97 brd ff:ff:ff:ff:ff:ff
        inet 192.168.0.88/24 brd 192.168.0.255 scope global noprefixroute dynamic ens160
           valid_lft 54183sec preferred_lft 54183sec
        inet6 fe80::ec4e:853a:570d:bf79/64 scope link noprefixroute 
           valid_lft forever preferred_lft forever

    可以看到VIP已经在主机A上解绑。在主机B上执行ip addr命令

    2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
        link/ether 00:0c:29:80:6a:31 brd ff:ff:ff:ff:ff:ff
        inet 192.168.0.110/24 brd 192.168.0.255 scope global noprefixroute dynamic ens160
           valid_lft 76521sec preferred_lft 76521sec
        inet 192.168.0.5/24 scope global secondary ens160
           valid_lft forever preferred_lft forever
        inet6 fe80::91ad:f9d8:5386:ba92/64 scope link noprefixroute 
           valid_lft forever preferred_lft forever

    可以看到VIP已经绑定到了主机B上,此时访问http://192.168.0.5

    4

    已经是主机B在提供Web服务了。

    因为这里没有配置不抢占模式,所以此时恢复主机A的Apache服务,查看是否会再次进行主备切换:

    在主机A上执行ip addr命令

    2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
        link/ether 00:0c:29:c0:e8:97 brd ff:ff:ff:ff:ff:ff
        inet 192.168.0.88/24 brd 192.168.0.255 scope global noprefixroute dynamic ens160
           valid_lft 53899sec preferred_lft 53899sec
        inet 192.168.0.5/24 scope global secondary ens160
           valid_lft forever preferred_lft forever
        inet6 fe80::ec4e:853a:570d:bf79/64 scope link noprefixroute 
           valid_lft forever preferred_lft forever

    此时VIP又重新绑定到主机A上了,访问http://192.168.0.5

    5

    2、设置不抢占模式

    不抢占模式仅在优先级高的主机上进行设置,所以主机B上的Keepalived不用进行配置。修改主机A的Keepalived配置文件(仅展示主要部分):

    vrrp_instance HTTPD {
        state BACKUP
        interface ens160
        virtual_router_id 51
        priority 100
        advert_int 1
        authentication {
            auth_type PASS
            auth_pass aaaa
        }
        virtual_ipaddress {
            192.168.0.5/24
        }
        track_script {
            check_httpd
        }
        nopreempt

    此时停止主机A上的Apache:

    主机A的IP信息

    2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
        link/ether 00:0c:29:c0:e8:97 brd ff:ff:ff:ff:ff:ff
        inet 192.168.0.88/24 brd 192.168.0.255 scope global noprefixroute dynamic ens160
           valid_lft 53418sec preferred_lft 53418sec
        inet6 fe80::ec4e:853a:570d:bf79/64 scope link noprefixroute 
           valid_lft forever preferred_lft forever

    主机B的IP信息

    2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
        link/ether 00:0c:29:80:6a:31 brd ff:ff:ff:ff:ff:ff
        inet 192.168.0.110/24 brd 192.168.0.255 scope global noprefixroute dynamic ens160
           valid_lft 75784sec preferred_lft 75784sec
        inet 192.168.0.5/24 scope global secondary ens160
           valid_lft forever preferred_lft forever
        inet6 fe80::91ad:f9d8:5386:ba92/64 scope link noprefixroute 
           valid_lft forever preferred_lft forever

    访问http://192.168.0.5

    6

    从以上信息可以看出,发生了一次主备切换。此时恢复主机A的Apache服务,查看是否会再次发生主备切换:

    主机A的IP信息

    2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
        link/ether 00:0c:29:c0:e8:97 brd ff:ff:ff:ff:ff:ff
        inet 192.168.0.88/24 brd 192.168.0.255 scope global noprefixroute dynamic ens160
           valid_lft 53224sec preferred_lft 53224sec
        inet6 fe80::ec4e:853a:570d:bf79/64 scope link noprefixroute 
           valid_lft forever preferred_lft forever

    主机B的IP信息

    2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
        link/ether 00:0c:29:80:6a:31 brd ff:ff:ff:ff:ff:ff
        inet 192.168.0.110/24 brd 192.168.0.255 scope global noprefixroute dynamic ens160
           valid_lft 75618sec preferred_lft 75618sec
        inet 192.168.0.5/24 scope global secondary ens160
           valid_lft forever preferred_lft forever
        inet6 fe80::91ad:f9d8:5386:ba92/64 scope link noprefixroute 
           valid_lft forever preferred_lft forever

    访问http://192.168.0.5

    7

    从以上信息可见,在配置了不抢占模式后,在主机A的Apache恢复正常之后主机A并不会再次成为Master,不会再次发生主备切换。

  • 相关阅读:
    玩家的numpertpry 对象 中 不仅仅要同步 君主武将的等级,阶级也要同步
    synchronized 的真正含义
    学习笔记——WPF
    学习笔记——AOP
    好记性不如烂笔头——WebService与Remoting
    好记性不如烂笔头——垃圾回收
    “返回顶部”实现一例
    ASP.NET MVC脚本及样式压缩
    设计模式学习笔记——迭代器模式
    设计模式学习笔记——策略模式
  • 原文地址:https://www.cnblogs.com/yu2006070-01/p/10387566.html
Copyright © 2011-2022 走看看