文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

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

2022-06-04 21:41

关注

首先说明下我们的配置文件,都是类似格式的,假如内网是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

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-服务器
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯