主页 > 知识库 > 用shell脚本实现自动切换内网和外网实现高可用

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

热门标签:打电话机器人接我是他的秘书 揭阳智能电话机器人推荐 百度地图标注错了有责任吗 华锋e路航港口地图标注 客服外呼系统怎么样 如果做线上地图标注 地图标注员都是年轻人 河南信誉好的不封卡电话外呼系统 江苏云电销机器人公司

首先说明下我们的配置文件,都是类似格式的,假如内网是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脚本不挂掉的守护进程实例分享

标签:娄底 许昌 巴彦淖尔 淘宝邀评 金昌 赤峰 邵阳 马鞍山

巨人网络通讯声明:本文标题《用shell脚本实现自动切换内网和外网实现高可用》,本文关键词  用,shell,脚本,实现,自动,;如发现本文内容存在版权问题,烦请提供相关信息告之我们,我们将及时沟通与处理。本站内容系统采集于网络,涉及言论、版权与本站无关。
  • 相关文章
  • 下面列出与本文章《用shell脚本实现自动切换内网和外网实现高可用》相关的同类信息!
  • 本页收集关于用shell脚本实现自动切换内网和外网实现高可用的相关信息资讯供网民参考!
  • 推荐文章