【云小課】基礎服務第63課 華為云基礎服務2020年工單熱點問題(存儲篇)
1062
2025-03-31
一、背景
在生產環(huán)境中,有客戶架構為阿里云線上環(huán)境及線下IDC需要內網互通,互聯(lián)采用阿里云使用第三方深信服云產品與線下IDC側Cisco防火墻ipsec打通實現(xiàn),主要用于定時阿里云文件及數(shù)據(jù)備份至IDC,在生產應用中無故隧道會不定時中斷,聯(lián)系深信服及思科售后排查均沒有結果,但是進行手動的重啟阿里云上深信服設備隧道立即恢復,在兩邊網絡工程師排查無果后,想到去編寫監(jiān)控腳本,如果隧道終端去利用python重啟深信服設備,從而恢復隧道,數(shù)據(jù)傳輸延遲timeout及使用斷點續(xù)傳,當網絡層面異常無法解決時,換另一種思路來解決問題。
二、技術要點
2.1 編寫隧道監(jiān)控腳本
由于線上阿里云側為公有云,且為配置EIP及NAT網關,ecs均采用前端公網SLB負責業(yè)務請求接入,其內部無法出公網,隧道監(jiān)控腳本想告警出來發(fā)送至微信及后續(xù)的去操作深信服需要公網連通,因此在線下IDC側放置檢查及重啟腳本。
2.2 深信服重啟
利用Python編寫去操作深信服,web頁面模擬登錄,主要利用到了selenium模塊,logging來記錄日志。
利用阿里云ECS API來操作重啟深信服設備。
三、源碼
3.1 隧道檢測腳本
檢測隧道連通性,如果隧道終端告警至微信及釘釘,其次觸發(fā)深信服重啟腳本。
#!/bin/bash #檢測內網地址 IP=10.10.10.2 dir="/sangfor/Shscripts/pdc/" if [ ! -d ${dir} ];then mkdir -p ${dir} fi echo 1 > ${dir}pdcping.lock while true do #日志分割歸檔 Time=`date +%F` TIME="${Time} 23:59" if [ "${data}" == "${TIME}" ];then mkdir ${dir}${Time} && mv ${dir}pdcping.log ${dir}${Time}-pingpdc.log mv ${dir}${Time}-pingpdc.log ${dir}${Time} fi find ${dir} -mtime +7 -type d -exec rm -rf {} \; find ${dir} -mtime +7 -name "*-pingpdc.log" -exec rm -rf {} \; data=`date +%F' '%H:%M` data1=`date +%F' '%H:%M:%S` echo "------------${data1}---------------">>${dir}pingpdc.log ping -c 10 ${IP} >>${dir}pingpdc.log if [ $? -eq 1 ];then STAT=`cat ${dir}pdcping.lock` if [ ${STAT} -eq 1 ];then /usr/local/python34/bin/python3 /sangfor/Pysangfor/sangfor_public.py echo 0 > ${dir}pdcping.lock else continue fi else STAT=`cat ${dir}pdcping.lock` if [ ${STAT} -eq 0 ];then echo 1 > ${dir}pdcping.lock else continue fi fi done
為防止隧道檢測腳本異常,另外編寫監(jiān)控監(jiān)測腳本的腳本配合定時任務來定時監(jiān)控,如果異常,重新拉起。
#!/bin/bash num=$(ps -ef |grep pdc.sh|wc -l) cmd="/usr/bin/nohup /bin/bash /sangfor/Shscripts/pdc/pdc.sh &" if [ ${num} -lt 2 ];then ${cmd} fi
配合定時任務
* * * * * /bin/bash /sangfor/Shscripts/pdc/checkpdc.sh
3.2 深信服操作腳本
A 依賴軟件及python3.4版本安裝
yum -y install zlib-devel zlib readline-devel openssl-devel wget gcc-c++ Xvfb lrzsz firefox cd /tmp wget -c https://www.python.org/ftp/python/3.4.5/Python-3.4.5.tgz tar -zxvf Python-3.4.5.tgz cd Python-3.4.5 ./configure --prefix=/usr/local/python34 make && make install echo "export PATH=$PATH:/usr/local/python34/bin" >/etc/profile.d/python34.sh source /etc/profile.d/python34.sh
B pip安裝
cd /tmp wget https://bootstrap.pypa.io/get-pip.py python3 get-pip.py
C 安裝python模塊
pip3 install selenium pip3 install pyvirtualdisplay pip3 install xvfbwrapper
D 下載安裝geckodriver
cd /tmp wget -c https://github.com/mozilla/geckodriver/releases/download/v0.16.1/geckodriver-v0.16.1-linux64.tar.gz tar zxvf geckodriver-v0.16.1-linux64.tar.gz cp geckodriver /usr/bin/
github地址
模擬web登錄操作深信服
cat > /sangfor/Pysangfor/sangfor_public.py< 通過阿里云ECS API操作深信服設備 #!/bin/env python3 # -*- coding:UTF-8 -*- # _author:kaliarch from aliyunsdkcore import client from aliyunsdkecs.request.v20140526 import RebootInstanceRequest,StartInstanceRequest,StopInstanceRequest import time import os import logging class ecsOper(): def __init__(self,logger): self.clentoper = client.AcsClient(' 四、效果展示 查看檢查腳本日志已經進行了切割,且保留7天的日志,防止日志過大占用過多磁盤空間 微信告警信息 釘釘告警信息 查看python腳本深信服重啟日志 五、總結 其簡單的實現(xiàn)了故障自愈,利用其思路客戶配合很多業(yè)務,例如簡單的應用重啟等。 【生長吧!Python】有獎征文火熱進行中:https://bbs.huaweicloud.com/blogs/278897 Python
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。