基于keepalived实现nginx的高可用

keepalive路由软件是由c语言编写,为loadbalance Linux系统提供简单、健壮的高可用性,keepalive根据loadbalance服务器池的健康实现动态检查,自适应维护和管理。另一方面,高可用性是通过VRRP协议。VRRP是路由器的基本砖故障转移。此外,keepalive实现一组钩子VRRP有限状态机提供低级和高速协议交互。keepalive框架都可以单独使用或一起提供弹性的基础设施。

VRRP是一个“选举”协议,它能够动态地将一个虚拟路由器的责任指定至同一个VRRP组中的其它路由器上,从而消除了静态路由配置的单点故障,被指向的路由器即为主路由器(MASTER),其余的为备用路由器(BACKUP)。

VRRP的优势:

冗余:可以使用多个路由器设备作为LAN客户端的默认网关,大大降低了默认网关成为单点故障的可能性;
负载共享:允许来自LAN客户端的流量由多个路由器设备所共享;
多VRRP组:在一个路由器物理接口上可配置多达255个VRRP组;
多IP地址:基于接口别名在同一个物理接口上配置多个IP地址,从而支持在同一个物理接口上接入多个子网;
抢占:在master故障时允许优先级更高的backup成为master;
通告协议:使用IANA所指定的组播地址224.0.0.18进行VRRP通告;
VRRP追踪:基于接口状态来改变其VRRP优先级来确定最佳的VRRP路由器成为master;

上图大概意思就是通过watchdog定时器 检测checkers module和vrrp module有没有定时在写入数据,如果监测到一方停止写入,那么将这台服务器从master切到backup

Netlink:网络

ipvs:ipvs的规则,以及指向的real-server

checkers:通过tcp http ssl等protocol 检查各服务器运行的进程

VRRP Stack:vrrp protocol

服务器环境:

主机 IP1:172.16.178.138

主机 IP2:172.16.178.136

vip:         172.16.178.137

安装keepalived:

yum install keepalived -y

安装nginx

yum install nginx -y

配置/etc/keepalived/keepalived.conf

ip1:

! 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_nginx {
   script  " pidof nginx "   //查看ngixn是否开启
   interval 1                //每隔一秒查看一次
   weight -3                 //权重  与优先级相加做比较  要注意默认值,否则降级时候会出错
 
}
vrrp_instance VI_1 {
    state MASTER            //主服务器
    interface eth0          //网卡接口  
    virtual_router_id 51  
    priority 100            //优先级
    advert_int 1            //通告时间
    authentication {
        auth_type PASS
        auth_pass 1111      //设置密码  
    }
    virtual_ipaddress {
        172.16.178.137      //vip
    }
 
    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"      
}

ip2:

! 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_nginx {
   script "pidof nginx "   
   interval 1              
   weight -1              
}
vrrp_instance VI_1 {
    state BACKUP
    interface eth0
    virtual_router_id 51
    priority 99
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        172.16.178.137
    }

    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

case "$1" in
        master)
            /etc/init.d/nginx start
            exit 0
        ;;
        backup)
            /etc/init.d/nginx stop
            exit 0
        ;;
        fault)
            /etc/init.d/nginx stop
            exit 0
        ;;
        *)
        echo ‘Usage: `basename $0` {master|backup|fault}‘
        exit 1
        ;;
esac

测试:

[[email protected] keepalived]# /etc/init.d/keepalived start
Starting keepalived:                                       [  OK  ]

[[email protected] keepalived]# curl http://172.16.178.137
from IP1
[[email protected] keepalived]# killall nginx
[[email protected] keepalived]# curl http://172.16.178.137
from IP2

[[email protected] keepalived]# /etc/init.d/nginx start
Starting nginx:                                            [  OK  ]
[[email protected] keepalived]# curl http://172.16.178.137
from IP1
时间: 2024-08-11 01:16:40

基于keepalived实现nginx的高可用的相关文章

基于keepalived实现mariadb的高可用

提示: 上一篇博文己经介绍过了keepalived是什么,有那些参数,也介绍过基于corosync+pacemaker实现mairadb高可用,这次我将介绍一下如何利用keepalived对mariadb实现高可用. ----本文大纲 前言 主机环境 配置过程 测试 ----------- 一.前言 说到对mariadb实现高可用,也就是就说,当有任何一个mariadb挂掉之后在还有其它mariadb主机接管业务,完全不会影响到线上的业务,当挂掉的主机修复后重新上线,周而复始的工作,这就要对ma

基于keepalived搭建MySQL的高可用集群

http://www.cnblogs.com/ivictor/p/5522383.html 基于keepalived搭建MySQL的高可用集群 MySQL的高可用方案一般有如下几种: keepalived+双主,MHA,MMM,Heartbeat+DRBD,PXC,Galera Cluster 比较常用的是keepalived+双主,MHA和PXC. 对于小公司,一般推荐使用keepalived+双主,简单. 下面来部署一下 配置环境: 角色                          

基于keepalived对HAproxy做高可用集群

一.Keepalived简介 Keepalived的作用是检测web服务器的状态,如果有一台web服务器死机,或工作出现故障,Keepalived将检测到,并将有故障的web服务器从系统中剔除,当web服务器工作正常后Keepalived自动将web服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的web服务器. Layer3,4&7工作在IP/TCP协议栈的IP层,TCP层,及应用层,原理分别如下: Layer3:Keepalived使用Layer3的方式

keepalived实现nginx的高可用 + nginx负载均衡

前言 使用集群是网站解决高并发.海量数据问题的常用手段.当一台服务器的处理能力.存储空间不足时,不要企图去换更强大的服务器,对大型网站而言,不管多么强大的服务器,都满足不了网站持续增长的业务需求.这种情况下,更恰当的做法是增加一台服务器分担原有服务器的访问及存储压力.通过负载均衡调度服务器,将来自浏览器的访问请求分发到应用服务器集群中的任何一台服务器上,如果有更多的用户,就在集群中加入更多的应用服务器,使应用服务器的负载压力不再成为整个网站的瓶颈. 摘自<大型网站技术架构_核心原理与案例分析>

keepalived实现nginx的高可用(双主模型)

实验环境: RS1:rip(172.16.125.7),安装httpd软件包: RS2:rip(172.16.125.8),安装httpd软件包: director1(7-1.lcs.com):vip(172.16.125.100),dip(172.16.125.5),安装nginx.keepalived软件包. director2(7-2.lcs.com):vip(172.16.125.110),dip(172.16.125.6),安装nginx.keepalived软件包. 首先关闭所有节点

基于keepalived对redis做高可用配置---转载

关于keepalived的详细介绍,请移步本人相关博客:http://wangfeng7399.blog.51cto.com/3518031/1405785 功能 ip地址 安装软件 主redis 10.13.6.13 redis,keepalived 从redis 10.13.6.16 redis,keepalived VIP 10.13.6.17   一.redis主从搭建 1.redis安装 本文通过yum源的安装方式来安装(需要配置epel源),也可以通过源码编译的方式来安装 1 2 [

nginx实现请求的负载均衡 + keepalived实现nginx的高可用

前言 使用集群是网站解决高并发.海量数据问题的常用手段.当一台服务器的处理能力.存储空间不足时,不要企图去换更强大的服务器,对大型网站而言,不管多么强大的服务器,都满足不了网站持续增长的业务需求.这种情况下,更恰当的做法是增加一台服务器分担原有服务器的访问及存储压力.通过负载均衡调度服务器,将来自浏览器的访问请求分发到应用服务器集群中的任何一台服务器上,如果有更多的用户,就在集群中加入更多的应用服务器,使应用服务器的负载压力不再成为整个网站的瓶颈. 摘自<大型网站技术架构_核心原理与案例分析>

基于keepalived实现LVS的高可用

keepalived简介 首先简单介绍一下VRRP协议(虚拟路由器冗余协议).VRRP是一种容错协议,它可以将一组路由器组织成一个虚拟路由器,这个虚拟路由器仅适用一个IP地址,这个IP地址配置在其中的一台路由器上,这个路由器即为主路由器(MASTER),其余的为备用路由器(BACKUP).如果这个路由器组内的MASTER路由器出现故障了,BACKUP路由器将会通过选举策略选出一个新的MASTER路由器继续向外提供服务.这样就保证了网络之间的通信不会中断. keepalived即采用了VRRP协议

keepalived实现nginx的高可用

前言: 优化Nginx_proxy代理可能出现单点故障的情况,通过keepalived得方式来完成nginx_proxy服务器之间的高可用,因为keepalived的工作机制是通过心跳线来检测服务器之间是否出现故障,但是并不能检测nginx_proxy代理服务是否正常工作,所以需要采用编写脚本判断的方式来检测nginx_proxy代理服务器,当Nginx_proxy 代理服务器出现故障时.立马切换到vip 名词解释:VIP:用户通过访问VIP虚拟IP地址,从而访问对应的主节点选举:两台业务系统,