據(jù)備份、保留策略與Standalone到Scalable遷移:一份完整運維手冊)
【免費下載鏈接】KrawlKrawl is a customizable, lightweight, cloud-native web deception server and anti-crawler that creates fake web applications with low-hanging vulnerabilities using realistic, randomly generated decoy data and AI-generated HTML templates.項目地址https://gitcode.com/gh_mirrors/kr/Krawl點擊查看免費下載Krawl 是一款輕量級、云原生的 Web 欺騙服務(wù)器Honeypot與反爬蟲工具。本文將從零講清三件運維必會的事Krawl 數(shù)據(jù)備份怎么開、數(shù)據(jù)保留策略如何工作以及如何在需要擴(kuò)容時把StandaloneSQLite模式平滑遷移到 ScalablePostgreSQL模式全程附帶配置項說明與操作步驟適合新手直接照做。為什么蜜罐數(shù)據(jù)值得認(rèn)真對待Krawl 的核心價值在于持續(xù)捕獲攻擊者的訪問日志、憑據(jù)竊取嘗試和攻擊指紋。一旦數(shù)據(jù)庫丟失已積累的IP 信譽與攻擊者畫像全部清零封禁列表banlist導(dǎo)出的依據(jù)消失防火墻聯(lián)動失效歷史攻擊回溯與取證能力歸零。因此備份 保留策略是 Krawl 生產(chǎn)部署的兩個保底機(jī)制而 Standalone → Scalable 遷移則是流量增長后的升級路徑。 官方文檔入口docs/backups.md、docs/deployment-modes.md一鍵開啟 Krawl 數(shù)據(jù)庫自動備份Krawl 內(nèi)置了定時備份任務(wù)dump-krawl-data默認(rèn)是關(guān)閉的需要在配置中手動打開。備份配置方法config.yaml編輯項目根目錄的 config.yaml修改backups段backups: path: backups # 備份文件保存目錄 cron: */30 * * * * # 備份頻率默認(rèn)每 30 分鐘一次 enabled: true # 必須改為 true 才啟用對應(yīng)的環(huán)境變量為KRAWL_BACKUPS_PATH、KRAWL_BACKUPS_CRON、KRAWL_BACKUPS_ENABLED適合 Docker / K8s 部署時注入。兩種模式下的備份原理備份方式隨部署模式自動切換無需手動區(qū)分源碼src/tasks/db_dump.py模式工具產(chǎn)出文件特點StandaloneSQLitePythonsqlite3.backup()APIbackups/krawl_backup.db原子一致快照先寫臨時文件再原子重命名壞備份永遠(yuǎn)不會覆蓋好備份ScalablePostgreSQLpg_dumpbackups/db_dump.sql標(biāo)準(zhǔn) SQL 轉(zhuǎn)儲帶--no-owner --no-privileges300 秒超時防掛起恢復(fù)方法也很簡單# Standalone先停 Krawl再覆蓋數(shù)據(jù)庫文件 cp backups/krawl_backup.db data/krawl.db # Scalable導(dǎo)入 SQL 轉(zhuǎn)儲 psql -h localhost -U krawl -d krawl backups/db_dump.sql如何驗證備份任務(wù)真的在跑ls -la backups/ # 文件存在且時間戳是最新的 docker logs krawl-server | grep dump-krawl-data # 查看任務(wù)日志K8s 用 kubectl logsKrawl 配套的 Grafana 監(jiān)控面板可用于觀察備份任務(wù)與整體運行狀態(tài)?? 注意備份文件每次運行都會覆蓋上一次建議定期把backups/目錄同步到對象存儲或異地才能抵御硬件級故障。數(shù)據(jù)保留策略Krawl 保留什么、刪除什么備份解決意外丟失保留策略data retention解決數(shù)據(jù)庫無限膨脹。Krawl 每天自動清理過期數(shù)據(jù)由database.retention_days控制默認(rèn)30 天# config.yaml database: path: data/krawl.db retention_days: 30永遠(yuǎn)保留的數(shù)據(jù)不受保留期影響?所有憑據(jù)捕獲記錄credential capture attempts? 所有可疑訪問日志與蜜罐觸發(fā)記錄? 有可疑歷史記錄的IP 及其分類歷史自動清理的數(shù)據(jù)? 超過保留期的非可疑訪問日志? 無攻擊歷史的過期 IP 條目? 孤兒攻擊檢測記錄與孤兒載荷/聚類有統(tǒng)計無成員的幽靈數(shù)據(jù)清理任務(wù) src/tasks/db_retention.py 按1 萬行/批分批刪除避免長時間鎖表和 WAL 暴漲刪除完成后還會自動修正累計計數(shù)器并刷新表統(tǒng)計信息保證儀表盤數(shù)字不失真。每日清理的時間線時間任務(wù)作用每天 08:30pre-retention-cleanup重新復(fù)查舊日志的可疑標(biāo)記不再命中規(guī)則的取消標(biāo)記交給保留任務(wù)清理每天 09:00db-retention真正執(zhí)行過期數(shù)據(jù)刪除與孤兒數(shù)據(jù)清掃在 Scalable 多副本模式下這兩個任務(wù)都標(biāo)記了single_pod: True由 Redis 租約保證同一時刻只在一個 Pod 上執(zhí)行避免重復(fù)刪除。Krawl 儀表盤的數(shù)據(jù)總覽表保留策略正是圍繞這些攻擊數(shù)據(jù)表做精細(xì)化清理Standalone vs Scalable一張表看懂兩種模式遷移前先確認(rèn)你是否真的需要擴(kuò)容。兩種模式差異如下詳見 docs/deployment-modes.mdStandaloneScalable數(shù)據(jù)庫SQLiteWAL 模式PostgreSQL緩存進(jìn)程內(nèi)存字典Redis30s 熱路徑 / 2min 表格 / 10min 預(yù)熱三級 TTL副本數(shù)僅 11可水平擴(kuò)展外部依賴無PostgreSQL Redis適用場景開發(fā)、單機(jī)、低流量生產(chǎn)、高可用、高流量Krawl 攻擊者排行榜數(shù)據(jù)在遷移后應(yīng)完整保留這是遷移成功的關(guān)鍵驗證點Standalone 到 Scalable 遷移分步教程遷移腳本 scripts/migrate_sqlite_to_postgres.py 會讀取 SQLite 全部表 → 在 PostgreSQL 建表 → 分批默認(rèn) 1000 行/批失敗自動退化為逐行插入→ 最后打印源/目標(biāo)行數(shù)比對摘要。遷移前置檢查清單重要先備份cp data/krawl.db data/krawl.db.backup徹底停止 Krawl遷移期間絕不能有實例連著 SQLite否則會出現(xiàn)寫鎖與數(shù)據(jù)不一致PostgreSQL 已啟動且可訪問目標(biāo)數(shù)據(jù)庫已存在PostgreSQL 主機(jī)有足夠磁盤空間Docker Compose 環(huán)境的遷移步驟# 1. 停掉 Standalone 棧 docker compose down # 2. 只啟動 Scalable 棧中的 PostgreSQL 和 Redis docker compose -f docker/docker-compose.scalable.yaml up -d postgres redis # 3. 等待 PostgreSQL 就緒 docker compose -f docker/docker-compose.scalable.yaml exec postgres pg_isready -U krawl -d krawl # 4. 執(zhí)行遷移核對輸出的行數(shù)比對是否一致 python scripts/migrate_sqlite_to_postgres.py \ --sqlite-path data/krawl.db \ --postgres-host localhost \ --postgres-user krawl \ --postgres-password krawl \ --postgres-database krawl # 5. 啟動完整 Scalable 棧 docker compose -f docker/docker-compose.scalable.yaml up -d常用參數(shù)還有--batch-size批大小、--drop-existing遷移前清空目標(biāo)表。也可以借助 docker/docker-compose.scalable.yaml 掛載./data卷在容器內(nèi)執(zhí)行遷移。KubernetesHelm環(huán)境的遷移K8s 場景下 SQLite 數(shù)據(jù)放在 PVC 里Helm chart 自帶一次性遷移 Job模板見 helm/templates/migration-job.yaml先把 Krawl 縮容到 0 副本--set replicaCount0釋放 PVC 文件鎖同時開啟--set migration.enabledtrue并啟用 PostgreSQL/Redis等待 Job 完成kubectl wait --forconditioncomplete job/release-krawl-migrate --timeout600skubectl logs job/release-krawl-migrate核對行數(shù)比對再執(zhí)行helm upgrade切換--set modescalable、--set migration.enabledfalse、--set replicaCount2。遷移后必做三件事登錄儀表盤核對 IP、攻擊日志、統(tǒng)計圖表與遷移前一致SQLite 備份至少保留幾天確認(rèn)無誤再刪清理舊資源K8s 中舊 PVC不會隨模式切換自動刪除確認(rèn)后可手動回收Docker 環(huán)境則刪除data/krawl.db釋放空間。 遷移失敗怎么辦把krawl.db.backup恢復(fù)回data/krawl.db以 Standalone 模式重新拉起即可回滾。新手常見坑位速查坑說明備份默認(rèn)關(guān)閉backups.enabled默認(rèn)為false不開就從來沒有備份文件備份互相覆蓋每次運行覆蓋上一次務(wù)必異地留存邊跑邊遷移遷移時 Krawl 必須完全停止K8s 要縮容到 0 副本只遷移不核對腳本結(jié)尾的行數(shù)比對摘要一定要看一眼刪掉舊備份太早建議至少觀察幾天再回收舊 SQLite 數(shù)據(jù)相關(guān)文檔與源碼路徑備份文檔docs/backups.md部署模式與遷移完整指南docs/deployment-modes.md備份任務(wù)源碼src/tasks/db_dump.py保留策略任務(wù)src/tasks/db_retention.py、src/tasks/pre_retention_cleanup.py遷移腳本scripts/migrate_sqlite_to_postgres.pyScalable 部署清單docker/docker-compose.scalable.yaml配置文件示例config.yaml贊分享【免費下載鏈接】KrawlKrawl is a customizable, lightweight, cloud-native web deception server and anti-crawler that creates fake web applications with low-hanging vulnerabilities using realistic, randomly generated decoy data and AI-generated HTML templates.項目地址https://gitcode.com/gh_mirrors/kr/Krawl點擊查看免費下載相關(guān)推薦打造你的專屬桌面伙伴DyberPet開源框架終極指南打造你的專屬桌面伙伴DyberPet開源框架終極指南 你是否曾夢想過讓喜歡的角色真正住進(jìn)你的電腦桌面不只是簡單的動畫展示而是能與你互動、成長、甚至幫助桌面應(yīng)用AI 應(yīng)用HoloISO備份與恢復(fù)完整系統(tǒng)遷移與數(shù)據(jù)保護(hù)策略HoloISO備份與恢復(fù)完整系統(tǒng)遷移與數(shù)據(jù)保護(hù)策略 HoloISO是SteamOS 3 Holo 的Arch Linux發(fā)行版實現(xiàn)為PC用戶提供完整的Ste操作系統(tǒng)6步一鍵生成OpenCore EFI新手黑蘋果配置工具實戰(zhàn)教程6步一鍵生成OpenCore EFI新手黑蘋果配置工具實戰(zhàn)教程 OpCore Simplify 是一款實現(xiàn) OpenCore EFI自動配置 的黑蘋果配置工具開發(fā)工具CLI上一篇React Native Skia 渲染模式指南Retained Mode 與 Immediate Mode 的對比、選型與組合實踐下一篇placeholderkv 內(nèi)存分配器性能調(diào)優(yōu)實戰(zhàn)基于 jemalloc 5.3.0 TUNING.md 的配置指南與源碼級原理剖析創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考