实验环境:

    两台apache:

        1)192.168.2.130

        2)192.168.2.132

    两台nginx+keepalived:

        1)192.168.1.101(连接外网) +  192.168.2.133(内网,与apache通信)

        2)192.168.1.102(连接外网) +  192.168.2.128(内网,与apache通信


从后往前配置,由内而外配置


1. 配置httpd 

    随意,yum、rpm、编译安装都可

    直接修改/var/www/html/index.html


2. nginx反向代理apache

    两台主机配置方法相同,参数完全一致

 # vim /etc/nginx/nginx.conf
 http{
     upstream websrvs {  #设置upstream模块
            server 192.168.2.132:80 weight=2;
            server 192.168.2.130:80 weight=1;
     }
 }
 # vim /etc/nginx/conf.d/web.conf

 server {
        listen 99; 设置nginx监听端口
        server_name www.go.com;

        add_header X-Via $server_addr;

        proxy_set_header X-Real-IP $remote_addr;
        location / {
                proxy_pass   将代理发往websrvs的请求 
                index index.html;
                #health_check interval=2 fails=3 uri=/.health.html; 健康监测
        }


3. 配置keepalived

yum 安装

! Configuration File for keepalived

!全局配置段
global_defs {
   notification_email {
        root@localhost
   }
   notification_email_from kaadmin@lh.com
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id node1 路由器 1
   vrrp_mcast_group4 224.0.100.5

}

vrrp_script chk_down { 通过创建down文件的方式用脚本控制keepalived启动
    
        script "[[ -f /etc/keepalived/down ]] && exit 1 || exit 0"
        interval 1
        weight -5
}

 vrrp_script chk_nginx { 通过检测nginx的启动情况来分配任务
        script "killall -0 nginx && exit 0 || exit 1"
        interval 1
        weight -5 优先级降低,切换成另一台keepaliced主机工作
    }

#
#!虚拟路由器
vrrp_instance VI_1 {  路由器1
    state MASTER
    interface eth2  绑定为当前虚拟路由器使用的物理接口
    virtual_router_id 110 当前虚拟路由器的惟一标识,范围是0-255;
    priority 100 
    #通告时间间隔
    advert_int 1 vrrp通告的时间间隔;
    authentication {
        auth_type PASS
        auth_pass A3vJivTm

    }
    virtual_ipaddress { VIP要设置成可与外网通信,下面同理
        192.168.1.120 dev eth2 label eth2:0
    }
#调用上文脚本
    track_script {  上面定义的脚本要在此处调用,不然无效
        chk_down
        chk_nginx
    }

    通知脚本
    notufy_master "/etc/keepalived/notify.sh master" 当前节点成为主节点时触发的脚本;
    notufy_backup "/etc/keepalived/notify.sh backup" 当前节点成为备节点时触发的脚本;
    notufy_fault "/etc/keepalived/notify.sh fault" 当前节点转为失败时触发的脚本;


}
vrrp_instance VI_2{ 路由器2
    state BACKUP
    interface eth2 VIP绑定的网卡
    virtual_router_id 120
    priority 98  
     #通告时间间隔
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass A3vJivTm

    }
    virtual_ipaddress { 
        192.168.1.180 dev eth2 label eth2:1
    }
#调用上文脚本
    track_script {
        chk_down
        chk_nginx
    }

    notufy_master "/etc/keepalived/notify.sh master"
    notufy_backup "/etc/keepalived/notify.sh backup"
    notufy_fault "/etc/keepalived/notify.sh fault"
}

另一台keepalived需要修改:

    1.将优先级和主备调换

    2.虚拟路由器绑定的网卡根据本机情况更改

    3.VIP自定随意

        

顺序和安装顺序最好一致,省的麻烦

apache--->nginx--->keepalived