• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    用shell脚本实现自动切换内网和外网实现高可用

    首先说明下我们的配置文件,都是类似格式的,假如内网是192.168.0.3,外网是123.123.123.123,配置文件如下:

    $db['salver']['hostname'] = '192.168.0.3:3306';
    //$db['salver']['hostname'] = '123.123.123.123:3306';

    这个时候就是外网是注释的状态。走的是内网。
    说下思路,就是一个配置文件,复制出来2分放到别的地方,这两份一个里面设置的是内网,一个里面设置的是外网,如果内网不通的情况下,判断当前用的是内网还是外网,如果是内网的情况下,就把外网的配置文件复制到网站文件里,如果内网通了,就把内网的配置文件再复制到网站文件里。就相当于是内网IP是主,外网IP是备一样。把这个脚本放在计划任务里,1分钟执行一次。

    复制代码 代码如下:

    #!/bin/bash
    #主从数据库的内外网IP
    master_IP_N=
    master_IP_W=
    salver_IP_N=
    salver_IP_W=
    #mongo的内外网IP
    mongo_IP_W=
    mongo_IP_N=
    #redis的主从内外网IP
    redis_master_IP_W=
    redis_master_IP_N=
    redis_slave_IP_W=
    redis_slave_IP_N=
    #sphinx的内外网IP
    sphinx_IP_W=
    sphinx_IP_N=
    #网站配置文件的位置
    database_path=/home/caoy/database.php
    mongo_path=/home/caoy/over_sea_stock.php
    redis_path=/home/caoy/Rediska_connector.php
    sphinx_path=/home/caoy/SphinxConnector.php
    config_path=/data/check_ip_config/
    #检测当前使用的网卡
    function check_ip(){
    IP_config=`cat $1  |grep $2 | cut -c1-2`
    if [ "$IP_config" == "//" ];then
            ip_status=1
    else
            ip_status=0
    fi
    }
    #判断内网网卡是否故障
    function check_network(){
    nmap -sP $1 | grep "1 host up" >/dev/null || (sleep 5 ; nmap -sP $1) | grep "1 host up" >/dev/null
    #ping $1 -c 5 > /dev/null
    if [[ "$?" == "1" ]]; then
            check_ip $database_path $1
            if [[ "$ip_status" == "0" ]];then
                    cp -r $config_path/database_w.php $database_path
                    echo "cp database_w.php is ok!"
            fi
            check_ip $mongo_path $1
            if [[ "$ip_status" == "0" ]];then
                    cp -r $config_path/over_sea_stock_w.php $mongo_path
                    echo "cp over_sea_stock_w.php is ok!"
            fi
            check_ip $redis_path $1
            if [[ "$ip_status" == "0" ]];then
                    cp -r $config_path/Rediska_connector_w.php $redis_path
                    echo "cp Rediska_connector_w.php is ok!"
            fi
            check_ip $sphinx_path $1
            if [[ "$ip_status" == "0" ]];then
                    cp -r $config_path/SphinxConnector_w.php $sphinx_path
                    echo "cp SphinxConnector_w.php is ok!"
            fi
    else
            check_ip $database_path $1
            if [[ "$ip_status" == "1" ]];then
                    cp -r $config_path/database_n.php $database_path
                    echo "cp database_n.php is ok!"
            fi
            check_ip $mongo_path $1
            if [[ "$ip_status" == "1" ]];then
                    cp -r $config_path/over_sea_stock_n.php $mongo_path
                    echo "cp over_sea_stock_n.php is ok!"
            fi
            check_ip $redis_path $1
            if [[ "$ip_status" == "1" ]];then
                    cp -r $config_path/Rediska_connector_n.php $redis_path
                    echo "cp Rediska_connector_n.php is ok!"
            fi
            check_ip $sphinx_path $1
            if [[ "$ip_status" == "1" ]];then
                    cp -r $config_path/SphinxConnector_n.php $sphinx_path
                    echo "cp SphinxConnector_n.php is ok!"
            fi
    fi
    }
    #检测各个网卡是否通畅
    check_network $master_IP_N
    check_network $salver_IP_N
    check_network $mongo_IP_N
    check_network $redis_master_IP_N
    check_network $redis_slave_IP_N
    check_network $sphinx_IP_N

    您可能感兴趣的文章:
    • 分享个简易版Linux服务器初始化Shell脚本
    • Linux shell脚本基础学习详细介绍(完整版)
    • 利用Shell脚本实现远程MySQL自动查询
    • linux服务器安全加固shell脚本代码
    • 如何调试Linux shell脚本
    • linux下监视进程 崩溃挂掉后自动重启的shell脚本
    • 自动重启服务的shell脚本代码
    • linux shell脚本基础知识学习
    • 学习shell脚本之前的基础知识[图文]
    • linux中mysql备份shell脚本代码
    • Linux下使用Shell脚本实现ftp的自动上传下载的代码小结
    • 获取两个日期间隔时间的shell脚本代码
    • 判断文件是否存在的shell脚本代码
    • kill特定进程的shell脚本代码
    • 查找目录下同名但不同后缀名文件的shell脚本代码
    • 在指定目录查找指定后缀文件的shell脚本代码
    • 统计网卡流量的两段shell脚本(使用ifconfig)
    • shell脚本作为保证PHP脚本不挂掉的守护进程实例分享
    上一篇:如何调试Linux shell脚本
    下一篇:shell判断文件,目录是否存在或者具有权限的代码
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    用shell脚本实现自动切换内网和外网实现高可用 用,shell,脚本,实现,自动,