zoukankan      html  css  js  c++  java
  • keeplived工作原理及配置

    一、keepalived简介及作用

    Keepalived软件起初是专为LVS负载均衡软件设计的,用来管理并监控LVS集群系统中各个服务节点的状态,后来又加入了可以实现高可用的VRRP功能

    keepalived软件主要功能:

    1. 管理LVS负载均衡软件
    2. 实现对LVS集群节点健康检查功能 
    3. 作为系统网络服务的高可用功能

    二、keepalived工作原理

    keepalived是以VRRP协议为实现基础的,VRRP全称Virtual Router Redundancy Protocol,即虚拟路由冗余协议,VRRP的出现是为了解决静态路由的单点故障。

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

    工作时主节点发包,备节点接包,当备节点接收不到主节点发的数据包的时候,就启动接管程序接管主节点的资源。备节点可以有多个,通过优先级竞选,但一般Keepalived系统运维工作中都是一对。

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

    三、keepalived安装

    1、环境说明

    [root@lb01 ~]# cat /etc/redhat-release 
    CentOS release 6.9 (Final)
    [root@lb01 ~]# uname -r
    2.6.32-696.el6.x86_64
    [root@lb01 ~]# service iptables stop
    [root@lb01 ~]# getenforce 
    Disabled

    2、keepalived安装

    yum -y install keepalived
    
    #查看安装的相关目录及文件
    rpm -ql keepalived

    3、配置文件说明

    keepalived只有一个配置文件keepalived.conf。配置文件由以下几个部分组成:

    1. GLOBAL CONFIGURATION    #全局定义(默认配置文件的01-13行)
    2. VRRPD CONFIGURATION      #虚拟ip的配置(默认配置文件15-30行)
    3. LVS CONFIGURATION     ###配置与管理lvs
    [root@lb01 conf]# rpm -ql keepalived
    /etc/keepalived
    /etc/keepalived/keepalived.conf    --- keepalived服务主配置文件
    /etc/rc.d/init.d/keepalived        --- keepalived服务启动脚本文件

    配置文件详解:

    ! Configuration File for keepalived
    
    global_defs {                     --- 全局配置标题
       notification_email {           --- 定义管理员邮箱信息,
         323123132@qq.com
         330222721@qq.com
       }
       notification_email_from zhang@163.com    --- 定义利用什么邮箱发送邮件
       smtp_server smtp.163.com       --- 定义邮件服务器信息
       smtp_connect_timeout 30        --- 定义邮件发送超时时间
       router_id lb01             --- (重点参数)局域网keepalived主机身份标识信息 每一个keepalived主机身份标识信息唯一
    }
    
    vrrp_instance VI_1 {              --- vrrp协议相关配置(vip地址设置)
        state MASTER                  --- keepalived角色描述(状态)信息,可以配置参数(MASTER BACKUP)
        interface eth0                --- 表示将生成虚IP地址,设置在指定的网卡上
        virtual_router_id 51          --- 表示keepalived家族标识信息
        priority 100                  --- keepalived服务竞选主备服务器优先级设置(越大越优先)
        advert_int 1                  --- 主服务组播包发送间隔时间       
        authentication {              --- 主备主机之间通讯认证机制,
            auth_type PASS            --- 采用明文认证机制
            auth_pass 1111            --- 编写明文密码
        }
        virtual_ipaddress {           --- 设置虚拟IP地址信息
            10.0.0.3                  --- 这里设置VIP为10.0.0.3
        }
    }

    四、keepalived组合应用

    keepalived解决单点故障,有以下模式选择:

    • 主从配置:主服务器出现故障后,从服务才能启用。
    • 主主配置:多台服务器都为主服务器,服务器资源可以得到充分利用。

    keepalived与其他组合使用:

    • LVS+Keepalived配置
    • nginx+keepalived配置
    • HAproxy+keepalived配置
    • 等等

    总结:keepalived属于轻量级高可用,重量级的高可用有heartbeat和corosync

    官方站点:http://www.keepalived.org/

    五、keepalived高用检测脚本示例

    #!/bin/bash
    #####################
    #user:zhang   #
    #time:2016/11/4     #
    #use:高可用监控脚本 #
    #####################
    
    function check_web () {
        if [ "$1" -ge "1" ];then
        export result="true"
        else 
        export result="false"
        fi
    }
    
    ##close keepalived server
    function stop_keepalived () {
        if [ "$1" == "false" ];then
          service keepalived stop
        fi
    }
    
    ####check nginx 
    exist_port=`netstat -lntup | grep -v grep | grep nginx |wc -l`
    check_web $exist_port
    if [ "$result" == "false" ];then
        /application/nginx/sbin/nginx
    fi
    exist_port=`netstat -lntup | grep -v grep | grep nginx |wc -l`
    check_web $exist_port
    stop_keepalived $result

    实战案例,需要移步本博客其他文章。

  • 相关阅读:
    devise 异步发邮件
    ubuntutweak for lucid
    960gs blueprint
    Amoeba for mysql 0.31发布(读写分离、负载均衡、Failover、数据切分)
    Google App Servlet容器转型 – 从Tomcat到Jetty
    DBeaver
    用simple from暂不用formtastic
    [SQL Server]ORDER BY的问题
    PHP pathinfo() 函数
    php中使用head进行二进制流输出,让用户下载PDF等附件的方法
  • 原文地址:https://www.cnblogs.com/freeblogs/p/7880302.html
Copyright © 2011-2022 走看看