32-4 keepalived(nginx架构)

配置环境:

1、停止keepalived

[[email protected] keepalived]# systemctl stop keepalived.service

[[email protected] keepalived]# systemctl stop keepalived.service

[[email protected] ~]# bash setka.sh stop

[[email protected] ~]# bash setka.sh stop

2、配置nginx

[[email protected] ~]# yum install nginx

[[email protected] ~]# yum install nginx

[[email protected] ~]# cd /etc/nginx/

[[email protected] nginx]# vim nginx.conf

include /etc/nginx/conf.d/*.conf;和server { 之间(约33行后)

添加

    upstream websrvs {

        server  192.168.1.62:80 weight=1;

        server  192.168.1.72:80 weight=1;

    }   

修改

        location / {

        }

        location / { 

            proxy_pass http://websrvs/;

        }   

[[email protected] nginx]# systemctl start nginx.service

[[email protected] nginx]# scp nginx.conf 192.168.1.74:/etc/nginx/

[[email protected] nginx]# systemctl start nginx.service

3、配置keepalived

[[email protected] keepalived]# vim keepalived.conf (两个结点作同样配置)

1)在vrrp_instance VI_1(约19行)前添加如下内容

vrrp_script chk_nginx {

script "killall -0 nginx &> /dev/null"

interval 1

weight -10 

}

2)修改

track_script {

chk_mt

}   

    track_script {

        chk_nginx

    }

3)删除virtual_server段定义

[[email protected] keepalived]# systemctl start keepalived.service 

[[email protected] keepalived]# systemctl start keepalived.service 

4、测试keepalived

(1)关闭node1上的nginx服务

[[email protected] keepalived]# systemctl stop nginx

结果:

9月 04 08:40:32 node1 Keepalived_vrrp[49560]: VRRP_Script(chk_nginx) failed

9月 04 08:40:34 node1 Keepalived_vrrp[49560]: VRRP_Instance(VI_1) Received higher prio advert

9月 04 08:40:34 node1 Keepalived_vrrp[49560]: VRRP_Instance(VI_1) Entering BACKUP STATE

9月 04 08:40:34 node1 Keepalived_vrrp[49560]: VRRP_Instance(VI_1) removing protocol VIPs.

9月 04 08:40:34 node1 Keepalived_healthcheckers[49559]: Netlink reflector reports IP 192.168.1.80 removed

9月 04 08:40:34 node1 Keepalived_vrrp[49560]: Opening script file /etc/keepalived/notify.sh

脚本检测失败,node1节点从MASTER变成BACKUP,VIP节点被移除


附件文件

一、NODE1节点

keepalived.conf


! Configuration File for keepalived
global_defs {
   notification_email {
     [email protected]
   }
   notification_email_from [email protected]
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL
   vrrp_mcast_group4 224.0.0.18
}
vrrp_script chk_mt {
script "[[ -f /etc/keepalived/down ]] && exit 1 || exit 0"
inerval 1
weight -2
}
vrrp_script chk_nginx {
script "killall -0 nginx &> /dev/null"
interval 1
weight -10
}
vrrp_instance VI_1 {
    state MASTER
    interface eno16777736
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass aaf0d876679a
    }
    virtual_ipaddress {
        192.168.1.80/16 dev eno16777736 label eno16777736:1
    }
track_script {
chk_nginx
}
notify_master "/etc/keepalived/notify.sh master"
notify_backup "/etc/keepalived/notify.sh backup"
notify_fault "/etc/keepalived/notify.sh fault"
}
vrrp_script chk_nginx {
script "killall -0 nginx &> /dev/null"
interval 1
weight -10
}
vrrp_instance VI_2 {
    state BACKUP
    interface eno16777736
    virtual_router_id 133
    priority 99
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 5a806846279a
    }
    virtual_ipaddress {
        192.168.1.180/16 dev eno16777736 label eno16777736:2
    }
track_script {
chk_nginx
}
notify_master "/etc/keepalived/notify.sh master"
notify_backup "/etc/keepalived/notify.sh backup"
notify_fault "/etc/keepalived/notify.sh fault"
}


notify.sh

#!/bin/bash
# Author: MageEdu <[email protected]>
# description: An example of notify script
# 
vip=192.168.1.80
contact=‘[email protected]‘
notify() {
    mailsubject="`hostname` to be $1: $vip floating"
    mailbody="`date ‘+%F %H:%M:%S‘`: vrrp transition, `hostname` changed to be $1"
    echo $mailbody | mail -s "$mailsubject" $contact
}
case "$1" in
    master)
        notify master
#systemctl restart nginx.serivce
        exit 0
    ;;
    backup)
        notify backup
#systemctl restart nginx.serivce
        exit 0
    ;;
    fault)
        notify fault
        exit 0
    ;;
    *)
        echo ‘Usage: `basename $0` {master|backup|fault}‘
        exit 1
    ;;
esac

二、Node2

keepalived.conf


! Configuration File for keepalived
global_defs {
   notification_email {
     [email protected]
   }
   notification_email_from [email protected]
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL
}
vrrp_script chk_mt {
script "[[ -f /etc/keepalived/down ]] && exit 1 || exit 0"
inerval 1
weight -2
}
vrrp_script chk_nginx {
    script "killall -0 nginx &> /dev/null"
    interval 1
    weight -10 
}
vrrp_instance VI_1 {
    state BACKUP
    interface eno16777736
    virtual_router_id 51
    priority 99
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass aaf0d876679a
    }
    virtual_ipaddress {
        192.168.1.80/16 dev eno16777736 label eno16777736:1
    }
track_script {
chk_nginx
}
notify_master "/etc/keepalived/notify.sh master"
notify_backup "/etc/keepalived/notify.sh backup"
notify_fault "/etc/keepalived/notify.sh fault"
}
vrrp_instance VI_2 {
    state MASTER
    interface eno16777736
    virtual_router_id 133
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 5a806846279a
    }
    virtual_ipaddress {
        192.168.1.180/16 dev eno16777736 label eno16777736:2
    }
track_script {
chk_nginx
}
notify_master "/etc/keepalived/notify.sh master"
notify_backup "/etc/keepalived/notify.sh backup"
notify_fault "/etc/keepalived/notify.sh fault"
}

notify.sh

#!/bin/bash
# Author: MageEdu <[email protected]>
# description: An example of notify script
# 
vip=192.168.1.80
contact=‘[email protected]‘
notify() {
    mailsubject="`hostname` to be $1: $vip floating"
    mailbody="`date ‘+%F %H:%M:%S‘`: vrrp transition, `hostname` changed to be $1"
    echo $mailbody | mail -s "$mailsubject" $contact
}
case "$1" in
    master)
        notify master
#systemctl restart nginx.serivce
        exit 0
    ;;
    backup)
        notify backup
#systemctl restart nginx.serivce
        exit 0
    ;;
    fault)
        notify fault
        exit 0
    ;;
    *)
        echo ‘Usage: `basename $0` {master|backup|fault}‘
        exit 1
    ;;
esac
时间: 2024-10-13 13:02:23

32-4 keepalived(nginx架构)的相关文章

Keepalived+Nginx架构详解

Keepalived+Nginx架构 keepalived是一个类似于layer3.4.7交换机制的软件,也就是我们平时说的第3层.第4层和第7层交换.Keepalived的作用是检测web服务器的状态,如果有一台web服务器.Mysql服务器宕机,或工作出现故障,Keepalived将检测到后,会将有故障的web服务器或者Mysql服务器从系统中剔除,当服务器工作正常后Keepalived自动将web.Mysql服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复

Keepalived+Nginx架构

Keepalived介绍 keepalived是一个类似于layer3, 4, 5 交换机制的软件,也就是我们平时说的第3层.第4层和第5层交换.Keepalived的作用是检测web服务器的状态,如果有一台web服务器死机,或 工作出现故障,Keepalived将检测到,并将有故障的web服务器从系统中剔除,当web服务器工作正常后Keepalived自动将web服务器 加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的web服务器 官网地址:http://ww

架构设计:负载均衡层设计方案(7)——LVS + Keepalived + Nginx安装及配置

1.概述 上篇文章<架构设计:负载均衡层设计方案(6)--Nginx + Keepalived构建高可用的负载层>(http://blog.csdn.net/yinwenjie/article/details/47130609) 我们解说了Nginx的故障切换.而且承诺各位读者会尽快解说 LVS + Keepalived + Nginx的安装和配置.在中间由于工作的原因.我又插写了三篇关于zookeeper的原理使用的文章.今天这边文章我们回归主题.为各位读者解说LVS + Keepalive

keepalived+nginx+tomcat的简单部署

keepalived+nginx Keepalived是一个基于VRRP协议来实现的服务高可用方案,也是一种高性能的服务器高可用或热备解决方案,可以利用其来避免IP单点故障,类似的工具还有heartbeat.corosync.pacemaker.但是它一般不会单独出现,而是与其它负载均衡技术(如lvs.haproxy.nginx)一起工作来达到集群的高可用.为了更好的实现页面的调用,通过部署Keepalived+nginx来实现负载均衡,使得nginx高可靠性运行.基于Keepalived设计的

keepalived+nginx实现高可用and负载均衡集群

keepalived+nginx实现高可用and负载均衡集群 前言 因生产环境需要,现需要搭建一个前端为nginx的HA双向互备.后端为nginx代理的loadbalance负载均衡集群.nginx进程基于于Master+Slave(worker)多进程模型,自身具有非常稳定的子进程管理功能.在Master进程分配模式下,Master进程永远不进行业务处理,只是进行任务分发,从而达到Master进程的存活高可靠性,Slave(worker)进程所有的业务信号都 由主进程发出,Slave(work

keepalived+nginx搭建高可用and负载均衡集群

keepalived+nginx搭建高可用and负载均衡集群 前言 因生产环境需要,现需要搭建一个前端为nginx的HA双向互备.后端为nginx代理的loadbalance负载均衡集群.nginx进程基于于Master+Slave(worker)多进程模型,自身具有非常稳定的子进程管理功能.在Master进程分配模式下,Master进程永远不进行业务处理,只是进行任务分发,从而达到Master进程的存活高可靠性,Slave(worker)进程所有的业务信号都由主进程发出,Slave(worke

LVS+Nginx(LVS + Keepalived + Nginx安装及配置)

(也可以每个nginx都挂在上所有的应用服务器) nginx大家都在用,估计也很熟悉了,在做负载均衡时很好用,安装简单.配置简单.相关材料也特别多. lvs是国内的章文嵩博士的大作,比nginx被广泛接受还要早7年,并且已经被红帽作为了系统内置软件,可谓很牛了.lvs相对于nginx来说配置上就要相对复杂一些. 但是,有时候我们会看到大牛们分享的经验里面是lvs+nginx作为负载均衡了,一直想不明白这是个什么道理. 为什么会出现两者被同时使用呢?其实,这要从两者的各自优势来说了. nginx用

LVS + Keepalived + Nginx安装及配置

1.概述 上篇文章<架构设计:负载均衡层设计方案(6)——Nginx + Keepalived构建高可用的负载层>(http://blog.csdn.net/yinwenjie/article/details/47130609) 我们讲解了Nginx的故障切换,并且承诺各位读者会尽快讲解 LVS + Keepalived + Nginx的安装和配置.在中间由于工作的原因,我又插写了三篇关于zookeeper的原理使用的文章.今天这边文章我们回归主题,为各位读者讲解 LVS + Keepaliv

高可用高性能分布式文件系统FastDFS进阶keepalived+nginx对多tracker进行高

在上一篇 分布式文件系统FastDFS如何做到高可用 中已经介绍了FastDFS的原理和怎么搭建一个简单的高可用的分布式文件系统及怎么访问. 高可用是实现了,但由于我们只设置了一个group,如果现在有5台服务器那将会出现5台只有一个group,每台服务器内的文件内容都相同(互备份)如下图,会造成资源浪费. 因此下面就5台服务器进行优化改造,进一步添加keepalived+nginx多tracker 架构,做到真正的高可用和高性能. FastDFS集群服务器分布 其中keepalived+ngi

lvs+keepalived+nginx实现高性能负载均衡集群(转)

lvs+keepalived+nginx实现高性能负载均衡集群 一.为什么要使用负载均衡技术? 1.系统高可用性 2.  系统可扩展性 3.  负载均衡能力 LVS+keepalived能很好的实现以上的要求,LVS提供负载均衡,keepalived提供健康检查,故障转移,提高系统的可用性!采用这样的架构以后很容易对现有系统进行扩展,只要在后端添加或者减少realserver,只要更改lvs的配置文件,并能实现无缝配置变更! 二.LVS+Keepalived介绍 1.  LVS LVS是一个开源