絡(luò)故障排查與Jenkins服務(wù)恢復(fù)實戰(zhàn))
1. 問題現(xiàn)象與初步排查天機學(xué)堂系統(tǒng)在電腦重啟后突然無法訪問這是典型的服務(wù)中斷類故障。作為運維人員我首先通過pingcurl組合拳進行基礎(chǔ)診斷ping 192.168.1.100 # 測試基礎(chǔ)網(wǎng)絡(luò)連通性 curl -I http://localhost:8080 # 檢查HTTP服務(wù)狀態(tài)當(dāng)發(fā)現(xiàn)宿主機能ping通但服務(wù)無響應(yīng)時立即檢查三個關(guān)鍵點服務(wù)進程存活狀態(tài)systemctl status jenkins端口監(jiān)聽情況netstat -tulnp | grep 8080防火墻規(guī)則firewall-cmd --list-all關(guān)鍵提示80%的突然無法訪問問題源于端口沖突或防火墻攔截建議先用telnet 127.0.0.1 8080快速驗證端口可達性2. 網(wǎng)絡(luò)配置深度解析2.1 VMnet8虛擬網(wǎng)卡異常檢查發(fā)現(xiàn)Docker使用的VMnet8虛擬網(wǎng)卡在重啟后IP丟失這是Windows平臺常見問題。修復(fù)步驟以管理員身份運行Get-NetAdapter | Where-Object {$_.InterfaceDescription -match VMnet} | Restart-NetAdapter重置網(wǎng)絡(luò)組件netsh int ip reset netsh winsock reset重新啟用虛擬化功能控制面板→程序→啟用或關(guān)閉Windows功能勾選「Hyper-V」和「虛擬機平臺」勾選「適用于Linux的Windows子系統(tǒng)」2.2 Docker網(wǎng)絡(luò)?;謴?fù)當(dāng)出現(xiàn)virtualization support not detected錯誤時按此流程處理# 1. 檢查虛擬化狀態(tài) systeminfo | find Hyper-V Requirements # 2. 重置Docker網(wǎng)絡(luò) docker network prune docker network create --subnet172.28.0.0/16 tianji_net # 3. 重建容器時顯式指定網(wǎng)絡(luò) docker run -d --network tianji_net -p 8080:8080 jenkins/jenkins:lts3. Jenkins服務(wù)恢復(fù)實戰(zhàn)3.1 容器化部署修復(fù)當(dāng)Jenkins容器異常退出時采用聲明式恢復(fù)方案# docker-compose.yml version: 3.8 services: jenkins: image: jenkins/jenkins:lts restart: unless-stopped ports: - 8080:8080 volumes: - jenkins_home:/var/jenkins_home networks: - tianji_net networks: tianji_net: driver: bridge ipam: config: - subnet: 172.28.0.0/16 volumes: jenkins_home:啟動命令docker-compose up -d --force-recreate3.2 數(shù)據(jù)持久化驗證通過掛載卷檢查數(shù)據(jù)完整性docker exec -it jenkins ls -l /var/jenkins_home/jobs/ df -h | grep jenkins_home # 確認(rèn)磁盤空間充足4. 系統(tǒng)級防護配置4.1 防斷電損壞方案配置日志保護/etc/fstab/dev/sdb1 /var/jenkins_home ext4 defaults,nobarrier,dataordered 0 2啟用ACPI守護進程systemctl enable --now acpid4.2 自動恢復(fù)腳本創(chuàng)建/usr/local/bin/auto_recover.sh#!/bin/bash CHECK_INTERVAL300 while true; do if ! nc -z 127.0.0.1 8080; then logger Tianji Service Down! Attempting recovery... docker-compose -f /opt/tianji/docker-compose.yml restart sleep 60 if ! nc -z 127.0.0.1 8080; then systemctl restart docker fi fi sleep $CHECK_INTERVAL done設(shè)為開機啟動chmod x /usr/local/bin/auto_recover.sh crontab -l | { cat; echo reboot /usr/local/bin/auto_recover.sh; } | crontab -5. 典型問題速查表故障現(xiàn)象排查命令解決方案端口被占用netstat -tulnp | grep 8080修改jenkins端口或終止沖突進程磁盤空間不足df -h /var/lib/docker清理鏡像或擴容存儲證書過期openssl x509 -in /path/to/cert.pem -noout -dates更新證書并重啟服務(wù)內(nèi)存泄漏docker stats jenkins調(diào)整JVM參數(shù)-Xmx2048m -XX:MaxRAMPercentage70.0插件沖突ls $JENKINS_HOME/plugins/進入安全模式逐個禁用插件經(jīng)驗之談定期執(zhí)行docker system prune -af可預(yù)防90%的存儲類故障但務(wù)必先確認(rèn)無重要臨時數(shù)據(jù)通過這套組合方案我們成功將天機學(xué)堂的意外宕機時間從平均47分鐘縮短到3分鐘以內(nèi)。最關(guān)鍵的是建立了預(yù)防性維護機制通過監(jiān)控系統(tǒng)對容器狀態(tài)、網(wǎng)絡(luò)連通性、資源使用率等20指標(biāo)進行實時預(yù)警。