zoukankan      html  css  js  c++  java
  • Linux配置浮动IP实现WEB高可用

    在高可用集群环境中,一般都需要使用浮动IP来实现web高可用(High Availability)。

    浮动IP的概念以及为什么需要浮动IP请参考:浮动IP(FLOAT IP)

    本篇文章主要讲实际操作步骤:

    可以是双机,也可以是多机,主服务器为172.24.8.55,浮动IP设置为172.24.8.80。

    一、配置浮动IP:

    利用单个网卡可以绑定多个IP地址的技术。

    1、主服务器配置浮动IP

    在主服务器上拷贝eth0位eth0:1,并做修改。

    cp /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/sysconfig/network-scripts/ifcfg-eth0:1

    编辑文件ifcfg-eth0:1:

    vim /etc/sysconfig/network-scripts/ifcfg-eth0:1

    修改DEVICE为eth0:1,NM_CONTROLLED设置为no,IPADDR改为浮动IP地址172.24.8.80,去掉网关信息,修改完如下:

    DEVICE="eth0:1"
    BOOTPROTO="static"
    ONBOOT="yes"
    NM_CONTROLLED="no"
    TYPE="Ethernet"
    IPADDR="172.24.8.80"
    NETMASK="255.255.255.0"

    然后启动该网卡,验证是否生效:

    ifup eth0:1

    查看是否有浮动IP地址:

    ip addr

    接着访问浮动IP地址172.24.8.80,能访问成功,即和主服务器172.24.8.55访问的一样,则说明配置成功。

    2、从服务器配置浮动IP

    配置步骤和主服务器完全一样,eth0:1的IP地址同样设置成浮动IP172.24.8.80,在启动网卡测试之前,需在主服务器关闭浮动IP:

    ifdown eth0:1

    然后在从服务器启动eth0:1

    ifup eth0:1

    测试步骤也和主服务器一样。

    3、如果还有其他从服务器,配置步骤如上。

    二、写脚本完成浮动IP的自动开启与关闭

    利用crontab自动执行技术,定时检查IP地址的状态,并启动eth0:1或者关闭eth0:1。

    1、从服务器脚本 slaveFloatIP.sh:

    MASTER_IP="172.24.8.55"
    FLOAT_IP="172.24.8.80"
    
    c1=$(/usr/bin/ping $MASTER_IP -c 1|grep Unreachable|wc -l)
    c2=$(/usr/bin/ping $FLOAT_IP -c 1|grep Unreachable|wc -l)
    c3=$(/usr/sbin/ip addr|grep eth0:1)
    if [ $c1 -gt 0 -a $c2 -gt 0 ]
    then
        /usr/sbin/ifup eth0:1
    elif [ $c1 -eq 0 -a $c2 -eq 0 -a "$c3" ]
    then
        /usr/sbin/ifdown eth0:1
    fi

    ping 主服务器IP地址,如果ping不通,说明主服务器挂掉了,再ping浮动IP地址,如果ping不通,说明没启动浮动IP,则启动浮动IP。

    当主服务器再上线,即能够ping通主服务器,同时能ping通浮动IP地址,再判断是否是该从服务器启动了浮动IP,如果是,则需要关闭,让主服务器启动浮动IP。

    如果还有其他从服务器,只需拷贝该脚本。

    2、主服务器脚本 masterFloatIP.sh:

    FLOAT_IP="172.24.8.80"
    
    c=$(/usr/bin/ping $FLOAT_IP -c 1|grep Unreachable|wc -l)
    if [ $c -gt 0 ]
    then
        /usr/sbin/ifup eth0:1
    fi

    ping不通浮动IP地址,则启动eth0:1

    3、使用crontab每隔5秒自动执行脚本。

    crontab -e

    进入文件编辑界面,主服务器配置如下:

    * * * * * /root/masterFloatIP.sh
    * * * * * sleep 5; /root/masterFloatIP.sh
    * * * * * sleep 10; /root/masterFloatIP.sh
    * * * * * sleep 15; /root/masterFloatIP.sh
    * * * * * sleep 20; /root/masterFloatIP.sh
    * * * * * sleep 25; /root/masterFloatIP.sh
    * * * * * sleep 30; /root/masterFloatIP.sh
    * * * * * sleep 35; /root/masterFloatIP.sh
    * * * * * sleep 40; /root/masterFloatIP.sh
    * * * * * sleep 45; /root/masterFloatIP.sh
    * * * * * sleep 50; /root/masterFloatIP.sh
    * * * * * sleep 55; /root/masterFloatIP.sh

    从服务器配置也是一样的,脚本路径改为 /root/slaveFloatIP.sh

    关于crontab的介绍和使用请参考:crontab的介绍

    到这里就完成了浮动IP的配置和主从服务器自动开启浮动IP。

    完成后就可以通过浮动IP地址访问,服务器集群内只要有一台服务器正常运行,web就能访问,实现了web高可用。

  • 相关阅读:
    命令模式
    软件设计师_例题
    软件设计师_计算机系统基础(1.1)
    ForkJoin之ForkJoinTask框架学习笔记
    Oracle使用语句块之循环插入数据
    SpringCloud搭建分布式配置中心(基于git)
    Docker配置JDK1.8
    Linux命令查看文件内容
    Mac配置maven环境命令
    Docker安装mysql8
  • 原文地址:https://www.cnblogs.com/victorwu/p/7061168.html
Copyright © 2011-2022 走看看