Skip to content

Nuface Blog

隨意隨手記 Casual Notes

Menu
  • Home
  • About
  • Services
  • Blog
  • Contact
  • Privacy Policy
  • Login
Menu

Proxmox 自動化災難復原與雲端 Orchestration 實戰

Posted on 2025-10-312025-10-31 by Rico

🔰 引言

傳統的災難復原 (DR) 方案通常需要人工介入:
管理者接到告警後登入系統、選擇備份、手動還原。

這樣的方式雖可行,但在真正的緊急狀況下(例如主機室斷電、勒索病毒攻擊),
反應時間長、流程不一致、容易出錯。

因此,現代企業開始導入 自動化災難復原 (Automated Disaster Recovery, ADR),
讓系統能依據事件自動啟動復原動作、同步資料、甚至在異地自動重建服務。

本文將介紹:
1️⃣ ADR 架構與流程設計概念
2️⃣ Proxmox + PBS + API + Ansible / Terraform 整合方式
3️⃣ 真實實戰範例與自動化工作流設計


🧩 一、自動化災難復原 (ADR) 架構概觀

架構示意圖

 ┌──────────────────────────────────────────────────────┐
 │                      監控層 (Monitoring Layer)       │
 │ Prometheus → Grafana → Alertmanager → Webhook/Slack  │
 └───────────────┬──────────────────────────────────────┘
                 │ 事件觸發
 ┌────────────────┴────────────────┐
 │            Orchestration 層       │
 │ Ansible / Terraform / N8N / AWX  │
 └──────────────┬───────────────────┘
                 │ 執行自動化動作
 ┌────────────────┴────────────────┐
 │            執行層 (Execution Layer) │
 │ Proxmox VE + PBS + API + Ceph     │
 └──────────────────────────────────┘

🧠 二、自動化復原流程概念

階段觸發來源行為工具
1️⃣ 偵測事件Prometheus / Grafana Alert發現主機節點或 PBS 掛線Alertmanager
2️⃣ 通知階段Webhook / Slack / Email通知管理者與自動化系統Alertmanager / Webhook
3️⃣ Orchestration自動執行 Playbook / Script驅動復原流程Ansible / Terraform
4️⃣ 資料復原從遠端 PBS 或雲端備份復原重建 VM、網路、服務Proxmox API + PBS
5️⃣ 驗證與回報驗證系統可用性、發送報告自動確認完成狀態API + Grafana Alert

⚙️ 三、Proxmox API + Ansible 整合實戰

Proxmox 的 REST API 幾乎涵蓋所有操作,可與 Ansible 搭配實現自動化復原。

1️⃣ Ansible 連線設定

在 /etc/ansible/hosts 加入:

[pve_cluster]
pve-node01 ansible_host=10.0.0.11
pve-node02 ansible_host=10.0.0.12

設定變數:

proxmox_api_url: "https://10.0.0.11:8006/api2/json"
proxmox_user: "root@pam"
proxmox_token_id: "dr-automation"
proxmox_token_secret: "xxxxxxx"

2️⃣ 自動化復原 Playbook 範例

---
- name: Proxmox Automated VM Recovery
  hosts: localhost
  gather_facts: no
  tasks:
    - name: Restore VM from remote PBS
      uri:
        url: "{{ proxmox_api_url }}/nodes/pve-node02/qemu"
        method: POST
        headers:
          Authorization: "PVEAPIToken={{ proxmox_user }}!{{ proxmox_token_id }}={{ proxmox_token_secret }}"
        body_format: json
        body:
          vmid: 301
          restore: "pbs:remote-pbs/vm-301"
          unique: 1
          pool: "production"
      register: restore_result

    - name: Print restore job status
      debug:
        var: restore_result

此 Playbook 可直接由 Alertmanager 或 AWX 觸發,
在異地自動還原指定的 VM,整個流程無需人工操作。


☁️ 四、Terraform 自動化建置範例

Terraform 可用於在異地或雲端自動建立 Proxmox VM 環境。

Terraform 範例設定

provider "proxmox" {
  pm_api_url = "https://10.0.0.11:8006/api2/json"
  pm_user    = "root@pam"
  pm_api_token_id = "dr-automation"
  pm_api_token_secret = "xxxxxxx"
}

resource "proxmox_vm_qemu" "dr_vm" {
  name        = "dr-webserver"
  target_node = "pve-node02"
  clone       = "ubuntu-template"
  cores       = 4
  memory      = 8192
  disk {
    size = "40G"
    storage = "local-lvm"
  }
  network {
    bridge = "vmbr0"
  }
}

執行自動建置:

terraform init
terraform apply -auto-approve

此流程可作為「備援 VM」的自動佈署流程,
可在 PBS 同步完成後,快速在異地重建服務。


🧮 五、Alertmanager + N8N 自動化工作流實例

工作流程圖

[Prometheus] 
   ↓
[Grafana Alert] 
   ↓
[Alertmanager]
   ↓  (Webhook Trigger)
[N8N / Ansible Playbook]
   ↓
[Proxmox API → PBS → Restore VM]
   ↓
[Slack 通知 / 報告上傳]

範例 Webhook 觸發流程

當 Prometheus 偵測節點離線時,Alertmanager 發送:

{
  "receiver": "proxmox-dr",
  "status": "firing",
  "alerts": [
    {
      "labels": {
        "alertname": "PVE_Node_Down",
        "instance": "pve-node01",
        "severity": "critical"
      },
      "annotations": {
        "description": "Proxmox node pve-node01 is unreachable"
      }
    }
  ]
}

N8N 或 Ansible 解析此事件後,觸發自動化復原流程。


🧰 六、自動化驗證與回報

完成自動還原後,可自動驗證 VM 狀態:

pvesh get /nodes/pve-node02/qemu/301/status/current

若回傳:

{"status":"running"}

則代表復原成功。

接著透過 API 回傳至 Grafana 或 Slack:

✅ VM 301 已成功從 remote PBS 還原並啟動。

🧠 七、延伸應用:雲端多區域 Orchestration

在混合雲環境中,可將 DR 自動化拓展至多地區:

雲端區域任務工具
AWS建立 EC2 臨時節點,掛載 PBS S3 備份Terraform / CLI
Azure自動開啟 Blob Snapshots 作為備份來源Azure Functions
GCP使用 Cloud Run 執行 DR 任務自動觸發API / N8N
On-PremProxmox 節點自動復原 / 重啟Ansible / API

✅ 結語

透過 Proxmox VE + PBS + API + Orchestration 工具 的整合,
企業可以打造出一個:

  • 自動偵測異常
  • 自動化復原
  • 跨區域同步
  • 多雲協作

的智能化災難復原平台。

這不只是節省人力,更代表企業 IT 架構的彈性與可持續性大幅提升。

💬 下一篇將進入系列最終章:
「Proxmox 企業級應用與治理框架」,
彙整從虛擬化、備援、安全到雲端整合的全貌,
打造企業級開源虛擬化治理藍圖。

Recent Posts

  • Postfix + Let’s Encrypt + BIND9 + DANE Fully Automated TLSA Update Guide
  • Postfix + Let’s Encrypt + BIND9 + DANE TLSA 指紋自動更新完整教學
  • Deploying DANE in Postfix
  • 如何在 Postfix 中部署 DANE
  • DANE: DNSSEC-Based TLS Protection

Recent Comments

  1. Building a Complete Enterprise-Grade Mail System (Overview) - Nuface Blog on High Availability Architecture, Failover, GeoDNS, Monitoring, and Email Abuse Automation (SOAR)
  2. Building a Complete Enterprise-Grade Mail System (Overview) - Nuface Blog on MariaDB + PostfixAdmin: The Core of Virtual Domain & Mailbox Management
  3. Building a Complete Enterprise-Grade Mail System (Overview) - Nuface Blog on Daily Operations, Monitoring, and Performance Tuning for an Enterprise Mail System
  4. Building a Complete Enterprise-Grade Mail System (Overview) - Nuface Blog on Final Chapter: Complete Troubleshooting Guide & Frequently Asked Questions (FAQ)
  5. Building a Complete Enterprise-Grade Mail System (Overview) - Nuface Blog on Network Architecture, DNS Configuration, TLS Design, and Postfix/Dovecot SNI Explained

Archives

  • December 2025
  • November 2025
  • October 2025

Categories

  • AI
  • Apache
  • Cybersecurity
  • Database
  • DNS
  • Docker
  • Fail2Ban
  • FileSystem
  • Firewall
  • Linux
  • LLM
  • Mail
  • N8N
  • OpenLdap
  • OPNsense
  • PHP
  • QoS
  • Samba
  • Switch
  • Virtualization
  • VPN
  • WordPress
© 2025 Nuface Blog | Powered by Superbs Personal Blog theme