็†ฑ้–€ๅˆ†้กž
 ่ผ‰ๅ…ฅไธญ…
็›ฎ้Œ„

๐Ÿงฑ Proxmox VE ้ซ˜ๅฏ็”จๅข้›†(HA Cluster)ๆžถๆง‹ๅฏฆไฝœๆŒ‡ๅ—

    ๐Ÿงฑ Proxmox VE ้ซ˜ๅฏ็”จๅข้›†(HA Cluster)ๆžถๆง‹ๅฏฆไฝœๆŒ‡ๅ—

    ่ฆ่ฎ“่™›ๆ“ฌๅŒ–็’ฐๅขƒๅœจ็กฌ้ซ”ๆ•…้šœๆ™‚่‡ชๅ‹•ๆŽฅๆ‰‹、็ธฎ็ŸญๅœๆฉŸๆ™‚้–“,ไฝ ้œ€่ฆ HA ๅข้›†。ๆœฌๆ–‡ๅพž ่จญ่จˆ่ฆ้ปžๅปบ็ซ‹ๅข้›†Quorum/CorosyncHA Manager ๅˆฐ Fencing ่ˆ‡ๆ•…้šœๆผ”็ทด,ไธ€ๆญฅๆญฅๅฎŒๆˆๅฏ่ฝๅœฐ็š„ Proxmox HA ๆžถๆง‹。

    ไธ€、ๆžถๆง‹่ˆ‡ๅ‰็ฝฎ่ฆๅŠƒ

    • ็ฏ€้ปžๆ•ธ:ๅปบ่ญฐ ≥3(้ฟๅ… 2-node split-brain)。
    • ็ฎก็†็ถฒ่ทฏ:10G/1G ็š†ๅฏ,Corosync ๅปบ่ญฐ็จ็ซ‹็ถฒๆฎต,ๅฏ็”จ Bond/้›™็’ฐ。
    • ๅ…ฑไบซๅ„ฒๅญ˜:NFS、iSCSI(+LVM)、Ceph ๆˆ– ZFS Replication(้œ€ๆณจๆ„ไธ€่‡ดๆ€ง่ˆ‡ๆขๅพฉ้€Ÿๅบฆ)。
    • ๆ™‚้–“ๅŒๆญฅ:ๆ‰€ๆœ‰็ฏ€้ปžไฝฟ็”จ chrony/systemd-timesyncd ๆ กๆ™‚。
    • Watchdog/Fencing:ๅปบ่ญฐๅ•Ÿ็”จ็กฌ้ซ” watchdog;ๅคงๅž‹็’ฐๅขƒๅฏๆญ้… PDU/IPMI Fencing。
    # ๆชขๆŸฅๅฟ…่ฆๅฅ—ไปถ
    pveversion -v
    timedatectl status
    

    ไบŒ、ๅปบ็ซ‹ๅข้›†(pvecm)

    1. ๅœจ็ฌฌไธ€ๅฐ็ฏ€้ปž(node1)ๅปบ็ซ‹ๅข้›†:
    # node1
    pvecm create lab-cluster
    pvecm status
    
    1. ๅ…ถไป–็ฏ€้ปžๅŠ ๅ…ฅๅข้›†:
    # node2 / node3
    pvecm add 10.10.10.11   # ไปฅ node1 ็š„็ฎก็† IP ็‚บไพ‹
    # ไพๆ็คบ่ผธๅ…ฅ root@pam ๅฏ†็ขผ
    

    ๅฎŒๆˆๅพŒ,ๆ‰€ๆœ‰็ฏ€้ปž็š„ Web ไป‹้ขๅทฆๅดๆ‡‰ๅฏ็œ‹ๅˆฐๅฎŒๆ•ด็ฏ€้ปžๆธ…ๅ–ฎ่ˆ‡ๅ…ฑ็”จ Datacenter ่จญๅฎš。

    ไธ‰、Corosync ่ˆ‡ Quorum ้—œ้ตๅƒๆ•ธ

    Corosync ่ฒ ่ฒฌๅข้›†้€š่จŠ่ˆ‡ๆŠ•็ฅจ(Quorum),ๅปบ่ญฐไฝฟ็”จ ้›™็’ฐ(ring0 + ring1) ๆˆ–่‡ณๅฐ‘ไฝฟ็”จ bonding。

    # ้กฏ็คบๅข้›†ๆˆๅ“ก่ˆ‡ๆŠ•็ฅจ
    pvecm status
    corosync-cfgtool -s
    
    # ่‹ฅ้œ€็ทจ่ผฏ(้ซ˜้ขจ้šช,่ซ‹ๅ…ˆๅ‚™ไปฝ)
    cat /etc/pve/corosync.conf
    # ๅธธ่ฆ‹้‡้ปž:
    # link { name: ring0; address: 10.10.10.0/24; }
    # link { name: ring1; address: 172.16.0.0/24; }   # ็ฌฌไบŒๆขๅฟƒ่ทณ(้ธ็”จ)
    
    • Transport:ๅฐๅž‹็’ฐๅขƒๅฏ็”จ UDP Multicast;่ทจ็ถฒๆฎตๆˆ–ไธๆ”ฏๆด multicast ๆ™‚ๆ”น Unicast。
    • ๆŠ•็ฅจๆ•ธ:ไปฅ็ฏ€้ปžๆ•ธ้ŽๅŠ็‚บๅˆๆณ•(Quorum=Majority)。

    ๅ››、ๅ•Ÿ็”จ HA Manager ่ˆ‡่ณ‡ๆบ่จปๅ†Š

    Proxmox ็š„ ha-manager ็”จไพ†็ฎก็† VM/LXC ็š„่‡ชๅ‹•้ท็งป่ˆ‡้‡ๅ•Ÿ。

    # ๅฐ‡ VM 101 ่จปๅ†Š็‚บ HA ่ณ‡ๆบ
    ha-manager add vm:101 --group default --state started
    
    # ๆชข่ฆ– HA ็‹€ๆ…‹
    ha-manager status
    

    ไฝ ๅฏไปฅๅœจ Web ไป‹้ข「Datacenter → HA」ๅปบ็ซ‹ Group ่ˆ‡ Failover Domain,้™ๅˆถ่ณ‡ๆบๅช่ƒฝ่ฝๅœจ็‰นๅฎš็ฏ€้ปž้›†ๅˆ,ไธฆ่จญๅฎš ๅ„ชๅ…ˆ้ †ๅบ ๆˆ– ็ฆ็ฝฎ

    ไบ”、ๅณๆ™‚้ท็งป(Live Migration)่ˆ‡็ถญ่ญทๆจกๅผ

    Live Migration ๅฏๅฐ‡ VM ๅพž A ็ฏ€้ปž้ท่‡ณ B ็ฏ€้ปž่€Œไธไธญๆ–ท(้œ€ๅ…ฑไบซๅ„ฒๅญ˜ๆˆ–ๅ•Ÿ็”จไธ€่‡ดๆ€งๆฉŸๅˆถ)。

    # ไปฅ CLI ้€ฒ่กŒๅณๆ™‚้ท็งป
    qm migrate 101 node2 --online
    
    # ็ฏ€้ปž็ถญ่ญท(ๆšซๆ™‚็งปๅ‡บ HA ๆŽ’็จ‹)
    ha-manager set node node1 --maintenance 1
    # ๅฎŒๆˆ็ถญ่ญทๅพŒ
    ha-manager set node node1 --maintenance 0
    

    ๅ…ญ、Watchdog ่ˆ‡ Fencing(้—œ้ต)

    ็•ถ็ฏ€้ปžๅคฑ่ฏๆ™‚,Fencing ่ƒฝ็ขบไฟๆ•…้šœ็ฏ€้ปžไธๆœƒๅŒๆ™‚ๅญ˜ๅ–ๅ…ฑไบซ่ณ‡ๆบ(้ฟๅ…่ณ‡ๆ–™ๆฏ€ๆ)。

    • Watchdog:ๅ•Ÿ็”จ็กฌ้ซ”็œ‹้–€็‹—(ๅฆ‚ iTCO_wdt),็ฏ€้ปžๅคฑๅŽปๅฟƒ่ทณๆ™‚่‡ชๅ‹•้‡ๅ•Ÿ。
    • ๅค–้ƒจ Fencing:้€้Ž IPMI/PDU ้—œ้–‰้›ปๆบ(ๅคงๅž‹ๅข้›†/้ซ˜่ฆๆฑ‚ๅปบ่ญฐ)。
    # ๆชขๆŸฅไธฆๅ•Ÿ็”จ็œ‹้–€็‹—ๆจก็ต„(็ฏ„ไพ‹)
    lsmod | grep iTCO
    echo iTCO_wdt >> /etc/modules
    systemctl restart pve-ha-lrm pve-ha-crm
    

    ไธƒ、ๆ•…้šœๆผ”็ทด่ˆ‡้ฉ—่ญ‰ๆต็จ‹

    1. ้—œ้–‰ HA ่ณ‡ๆบๆ‰€ๅœจ็ฏ€้ปž็š„็ฎก็†็ถฒ่ทฏไป‹้ขๆˆ–ๆจกๆ“ฌไธปๆฉŸๆ–ท้›ป。
    2. ๆ–ผๅ…ถไป–็ฏ€้ปž็›ฃ็œ‹ ha-manager status,็ขบ่ช่ณ‡ๆบๆ–ผ้ ๆœŸ็ฏ€้ปžๅ•Ÿๅ‹•。
    3. ๅœจๅ…ฑไบซๅ„ฒๅญ˜ไธŠ็ขบ่ช VM ็ฃ็ขŸ็„กๆ;ๆชขๆŸฅไพ†ๅ›ž ping ่ˆ‡ๆœๅ‹™้€ฃ็ทš。
    # ่ง€ๅฏŸๅข้›†่ˆ‡ HA ๆ—ฅ่ชŒ
    journalctl -u pve-ha-crm -f
    journalctl -u pve-ha-lrm -f
    pvecm status
    

    ๅ…ซ、ๆœ€ไฝณๅฏฆๅ‹™ๆธ…ๅ–ฎ(้‹็ถญๅฟƒๆณ•)

    • ๐Ÿ” Corosync ไฝฟ็”จ็จ็ซ‹ๅฏฆ้ซ” NIC ๆˆ– Bond,ๅฟ…่ฆๆ™‚้›™็’ฐ้…็ฝฎ。
    • ๐Ÿงญ DNS/Host ๆช”ๅไธ€่‡ด、NTP ๆบ–็ขบ(่ทจ็ฏ€้ปžๆ™‚้–“ๅทฎ < 100ms)。
    • ๐Ÿงฑ ๅ…ฑไบซๅ„ฒๅญ˜ๅฅๅบทๅบฆ็›ฃๆŽง(IOPS/ๅปถ้ฒ),้ฟๅ…็“ถ้ ธๅฐŽ่‡ด้ท็งปๅก้ “。
    • ๐Ÿงช ๆฏๅญฃ้€ฒ่กŒไธ€ๆฌก ็ถญ่ญทๆจกๅผ → Live Migration → ๆ•…้šœๆผ”็ทด
    • ๐Ÿงฐ ็ต„ๅˆ็ญ–็•ฅ:HA + ๅฎšๆœŸ vzdump、pve-zsync ็•ฐๅœฐ;้›™ไฟ้šช。

    ไน、ๅธธ่ฆ‹ๅ•้กŒๆŽ’ๆŸฅ

    ❓ ๅŠ ๅ…ฅๅข้›†ๅคฑๆ•—(pvecm add ๅกไฝ)
    # ๆชขๆŸฅ SSH/้˜ฒ็ซ็‰†/ๆ™‚้–“
    ssh root@node1
    ss -lntup | grep 5405           # corosync ้ ่จญๅŸ 
    timedatectl status
    
    ❓ Split-brain / ็„กๆณ•ๅ–ๅพ— Quorum
    # ๅฟซ้€Ÿๅˆคๆ–ท
    pvecm status
    # ไปฅ 3+ ็ฏ€้ปž、้›™็’ฐๆˆ– Quorum Device(QDevice)้ฟๅ…
    
    ❓ Live Migration ๅพˆๆ…ข
    # ๆชขๆŸฅๅ„ฒๅญ˜่ˆ‡็ถฒ่ทฏ
    pvesm status
    iperf3 -c <peer>     # ็ฎก็†/้ท็งป็ถฒ่ทฏๅธถๅฏฌ
    

    ๐Ÿ“˜ ็ต่ชž

    HA ไธๆ˜ฏ「่ฃๅฅฝๅฐฑๆฒ’ไบ‹」,่€Œๆ˜ฏไธ€ๅฅ—ๆŒ็บŒๆผ”็ทด็š„็‡Ÿ้‹ๆฉŸๅˆถ。็ฉฉๅ›บ็š„ Corosync ๆ‹“ๆจธ、ๅฏ้ ็š„ๅ…ฑไบซๅ„ฒๅญ˜่ˆ‡ๅฎŒๅ–„็š„ Fencing,ๆญ้…ๅฎšๆœŸๅ‚™ไปฝ่ˆ‡ๆ•…้šœๆผ”็ทด,ๆ‰่ƒฝ่ฎ“ไฝ ็š„ Proxmox ๅข้›†็œŸๆญฃ้”ๅˆฐไผๆฅญ็ดšๅฏ็”จๆ€ง。


    ๐Ÿ”— ๅปถไผธ้–ฑ่ฎ€

    — WWFandy・็ณป็ตฑ่ˆ‡็ถฒ่ทฏ็ญ†่จ˜

    ๐Ÿ”— ๅˆ†ไบซ้€™็ฏ‡ LINE Facebook X

    ๆฒ’ๆœ‰็•™่จ€:

    ๅผต่ฒผ็•™่จ€

    ๅญ—็ดš