源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

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

  • 时间:2020-05-04 23:00 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:用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分钟执行一次。
[u]复制代码[/u] 代码如下:
#!/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
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部