美文网首页
Keepalived+nginx高可用-双机热备

Keepalived+nginx高可用-双机热备

作者: 先生_吕 | 来源:发表于2018-01-25 18:48 被阅读356次

    前言

    keepalived+nginx组合是当下很火的一种高可用处理方案。

    keepalived是什么

    keepalived是集群管理中保证集群高可用的一个服务软件,用来防止单点故障。

    Keepalived的作用是检测web服务器的状态,如果有一台web服务器死机,或工作出现故障,Keepalived将检测到,并将有故障的web服务器从系统中剔除,当web服务器工作正常后Keepalived自动将web服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的web服务器。

    keepalived原理

    keepalived是以VRRP协议为实现基础的,VRRP全称Virtual Router Redundancy Protocol,即虚拟路由冗余协议。

    虚拟路由冗余协议,可以认为是实现路由器高可用的协议,即将N台提供相同功能的路由器组成一个路由器组,这个组里面有一个master和多个backup,master上面有一个对外提供服务的vip(该路由器所在局域网内其他机器的默认路由为该vip),master会发组播,当backup收不到VRRP包时就认为master宕掉了,这时就需要根据VRRP的优先级来选举一个backup当master。这样的话就可以保证路由器的高可用了。

    keepalived主要有三个模块,分别是core、check和VRRP。core模块为keepalived的核心,负责主进程的启动、维护以及全局配置文件的加载和解析。check负责健康检查,包括常见的各种检查方式。VRRP模块是来实现VRRP协议的。

    原理图解

    01.png 02.png 03.png

    双机热备是指两台机器都在运行,但并非两台机器同时在提供服务。
    当提供服务的一台出现故障的时候,另外一台会马上自动接管并且提供服务,且切换的时间非常短。

    keepalived的工作原理是VRRP——虚拟路由冗余协议。

    408927-20151018113921538-1419258980.png

    案例说明

    使用两天虚拟机hadoop2004、hadoop2005分别装一台nginx、tomcat、keepalived完成上级热备测试

        机器                    软件
    hadoop2004        tomcat、nginx、keepalived
    hadoop2005        tomcat、nginx、keepalived
    

    tomcat模拟真实服务
    nginx做反向代理、负载均衡(一主一备)
    keepalived做虚拟ip保证ip飘逸(即04挂了05顶上虚拟ip,防止虚拟ip找不到)

    环境准备

    jdk1.7
    tomcat7
    nginx

    nginx安装略

    1、启动hadoop2004和hadoop2005的tomcat

    http://hadoop2004:8080/

    2018-01-25_180019.png

    http://hadoop2005:8080/

    2018-01-25_180048.png
    2、nginx配置反向代理(两台相同配置)
     upstream tomcat_server{
            server 192.168.90.224:8080 weight=10;
            server 192.168.90.225:8080 weight=20;
        }
        server {
            listen       80;
            server_name  localhost;
    
            location / {
                proxy_pass http://tomcat_server;
                root   html;
                index  index.html index.htm;
            }
    }
    
    2018-01-25_180447.png

    启动nginx进行测试
    分别访问并刷新我们发现nginx测试成功
    http://hadoop2004/
    http://hadoop2005/

    2018-01-25_180722.png 2018-01-25_180739.png

    这时候我们只需要做到nginx主备即可,即两台nginx都开着,一台down机另一台立刻替换。
    但是我们知道,请求是只会访问一台机器(一个ip)的,如下图


    145632498.gif

    两台nginx主机上也装有keepalived,keepalived有一个作用就是虚拟ip,他可以将两台主机都虚拟出一个ip,当一台服务器down机,另一台机器同样可以接受请求(因为他们的ip一样),所以我们接下来的工作就是分别给两台机器上安装keepalived并共同虚拟一个192.168.90.250的虚拟ip,最终所有的请求均请求192.168.90.250这个ip即可。

    keepalived安装

    1、软件下载

    http://rpmfind.net/linux/rpm2html/search.php?query=keepalived(x86-64)

    2、rpm安装

    查看openssl安装
    rpm -qa | grep openssl

    [root@hadoop2004 Desktop]# rpm -qa | grep openssl
    openssl-1.0.1e-15.el6.x86_64
    [root@hadoop2004 Desktop]#
    

    安装keepalived
    rpm -ivh keepalived-1.2.13-5.el6_6.x86_64.rpm

    [root@hadoop2005 Desktop]# rpm -ivh keepalived-1.2.13-5.el6_6.x86_64.rpm
    Preparing...                ########################################### [100%]
       1:keepalived             ########################################### [100%]
    [root@hadoop2005 Desktop]#
    

    查看安装目录
    rpm -ql keepalived


    2018-01-24_164228.png

    我们可以发现,keepalived直接被安装在etc下,其配置文件在etc/keepalived下。
    同样的方式给另一台机器也安装上keepalived。

    开关命令

    service keepalived start
    service keepalived stop
    service keepalived restart

    配置主机配置
    ! Configuration File for keepalived
    
    #全局配置
    global_defs {
       notification_email {  #指定keepalived在发生切换时需要发送email到的对象,一行一个
         XXX@XXX.com
       }
       notification_email_from XXX@XXX.com  #指定发件人
       #smtp_server XXX.smtp.com                             #指定smtp服务器地址
       #smtp_connect_timeout 30                               #指定smtp连接超时时间
       router_id LVS_DEVEL                                    #运行keepalived机器的一个标识
    }
    
    vrrp_instance VI_1 {
        state MASTER           #标示状态为MASTER 备份机为BACKUP
        interface eth0         #设置实例绑定的网卡
        virtual_router_id 51   #同一实例下virtual_router_id必须相同
        priority 100           #MASTER权重要高于BACKUP 比如BACKUP为99
        advert_int 1           #MASTER与BACKUP负载均衡器之间同步检查的时间间隔,单位是秒
        authentication {       #设置认证
            auth_type PASS     #主从服务器验证方式
            auth_pass 8888
        }
        virtual_ipaddress {    #设置vip
            192.168.90.250       #可以多个虚拟IP,换行即可
        }
    }
    
    
    配置备机配置
    ! Configuration File for keepalived
    
    #全局配置
    global_defs {
       notification_email {  #指定keepalived在发生切换时需要发送email到的对象,一行一个
         XXX@XXX.com
       }
       notification_email_from XXX@XXX.com  #指定发件人
       #smtp_server XXX.smtp.com                             #指定smtp服务器地址
       #smtp_connect_timeou![2018-01-25_183713.png](https://img.haomeiwen.com/i2608446/7bcf7cfd8cf32278.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
    t 30                               #指定smtp连接超时时间
       router_id LVS_DEVEL                                    #运行keepalived机器的一个标识
    }
    
    vrrp_instance VI_1 {
        state BACKUP           #标示状态为MASTER 备份机为BACKUP
        interface eth0         #设置实例绑定的网卡
        virtual_router_id 51   #同一实例下virtual_router_id必须相同
        priority 90           #MASTER权重要高于BACKUP 比如BACKUP为99
        advert_int 1           #MASTER与BACKUP负载均衡器之间同步检查的时间间隔,单位是秒
        authentication {       #设置认证
            auth_type PASS     #主从服务器验证方式
            auth_pass 8888
        }
        virtual_ipaddress {    #设置vip
            192.168.90.250       #可以多个虚拟IP,换行即可
        }
    }
    
    

    以上配置要注意的地方:
    1、注意网卡绑定要与虚拟机一致,一般都是eth0,可以通过ifconfig查看
    2、state 属性主机为MASTER、备机位BACKUP
    3、priority 权重属性主机要高于备机
    以上配置完成就可以分别启动keepalived。分别在hadoop2004和hadoop2005机器上执行命令:service keepalived start

    ip add show eth0查询虚拟ip有没有成功
    2004


    2018-01-25_183713.png

    2005


    2018-01-25_184113.png

    我们可以看到,这时候ip250是在hadoop2004主机上,我们访问192.168.90.250测试

    2018-01-25_184259.png 2018-01-25_184313.png

    这时候,假如我们的hadoop2004down机,看250ip会不会飘到hadoop2005主机上


    2018-01-25_184620.png 2018-01-25_184610.png

    我们发现虚拟ip250又跑的hadoop2005主机上了,此时我们再次访问192.168.90.250看看服务能否正常访问


    2018-01-25_184812.png 2018-01-25_184822.png

    相关文章

      网友评论

          本文标题:Keepalived+nginx高可用-双机热备

          本文链接:https://www.haomeiwen.com/subject/nqnuaxtx.html