zoukankan      html  css  js  c++  java
  • 【架构师之路】 LVS+Keepalived实现高可用负载均衡

    一、原理        
    1、概要介绍
            如果将TCP/IP划分为5层,则Keepalived就是一个类似于3~5层交换机制的软件,具有3~5层交换功能,其主要作用是检测web服务器的状态,如果某台web服务器故障,Keepalived将检测到并将其从系统中剔除,当该web服务器工作正常后Keepalived自动将其加入到服务器群中,这些工作全部自动完成,而不需要人工干预,只需要人工修复故障的web服务器即可。
    2、工作原理
            Keepalived基于VRRP协议来实现高可用解决方案,利用其避免单点故障,通常这个解决方案中,至少有2台服务器运行Keepalived,即一台为MASTER,另一台为BACKUP,但对外表现为一个虚拟IP,MASTER会发送特定消息给BACKUP,当BACKUP收不到该消息时,则认为MASTER故障了,BACKUP会接管虚拟IP,继续提供服务,从而保证了高可用性,具体如下图:


    图1 Keepalived原理图

            3层机理是发送ICMP数据包即PING给某台服务器,如果不痛,则认为其故障,并从服务器群中剔除。
            4层机理是检测TCP端口号状态来判断某台服务器是否故障,如果故障,则从服务器群中剔除。
            5层机理是根据用户的设定检查某个服务器应用程序是否正常运行,如果不正常,则从服务器群中剔除。
    3、实际作用
            主要用作RealServer的健康检查,以及负载均衡设备MASTER和BACKUP之间failover的实现。

    二、架构

            本系列文章以CentOS Linux release 6.0 (Final)为例,介绍用LVS+Keepalived实现高可用负载均衡。具体业务需求是用虚拟IP转发8080、25、21端口请求到后端的真实服务器来处业务逻辑,系统拓扑如下图所示:


    图2 系统拓扑图

            客户端通过VIP(Virtual IP)(172.28.14.227/228/229)来访问负载均衡服务器,负载均衡服务器通过MASTER/172.28.19.92或BACKUP/172.28.19.93将请求分别转发给真实服务器(Web服务器/172.28.19.100/101/102、邮件服务器/172.28.19.103/104/105、文件服务器/172.28.19.106/107/108)。
            负载均衡服务器的MASTER和BACKUP上都必须安装LVS+Keepalived,下面开始安装和配置之旅。

    三、LVS安装
            Master和Backup都必须安装LVS,安装ipvsadm步骤如下:
            (1)依赖包安装
            (2)ipvsadm安装
            OK,LVS就这么安装好了。

    四、Keepalived安装
           Master和Backup都必须安装Keepalive,安装步骤如下:

    五、配置
    1、服务脚本
            将Keepalived做成服务启动(MASTER和BACKUP都是必须的),具体步骤如下:
            (1)拷贝服务启动脚本
            (2)拷贝配置文件
            (3)拷贝可执行文件
            (4)启动/停止服务
    2、配置MASTER

    4、配置Realserver


            注意脚本中红色部分,每块网卡绑定一个虚拟IP地址,如果绑定多个虚拟IP,则需要为每块网卡创建一个脚本,并且指定lo:X(比如:lo:0,lo:1等),另外,.和/etc/rc.d/funtions之间有空格。
            启动keepalived服务,并执行上述脚本,然后用ip a能确认是否有VIP地址。
            输入ipvsadm -Ln查看LVS工作状态。
            停止MASTER的keepalived服务,BACKUP能接管VIP地址,再次启动MASTER的keepalived服务,MASTER又能再一次接管VIP地址。
            如果这些你都搞定了,恭喜你,你已经拥有高可用服务了
            

  • 相关阅读:
    android&php 加密解密
    AES加解密算法在Android中的应用及Android4.2以上版本调用问题
    eclipse 中 import sun.misc.BASE64Decoder; 报错
    Java加密技术(一)——加密介绍
    android加密DESede/CBC/PKCS5Padding
    Android中的Audio播放:竞争Audio之Audio Focus的应用
    java.lang.IllegalStateException: attempt to re-open an already-closed object
    Android 性能优化的一些方法
    android.os.DeadObjectException memory near r0: 异常处理 Consumer closed input channel or an error occurred. events=0x9
    如何分析解决Android ANR
  • 原文地址:https://www.cnblogs.com/jhli/p/6557943.html
Copyright © 2011-2022 走看看