0
0
Lập trình
Flame Kris
Flame Krisbacodekiller

🎯 Tìm Hiểu Corosync: Trái Tim Của Cụm Proxmox Cho Homelab Ổn Định

Đăng vào 1 ngày trước

• 7 phút đọc

📝 Giới Thiệu

Cài đặt một cụm Proxmox giống như mở khóa một siêu năng lực mới, phải không nào? Bạn có thể:

  • Quản lý nhiều máy chủ từ một giao diện duy nhất
  • Di chuyển máy ảo (VM) một cách sống động như trong The Matrix
  • Cảm thấy như một sysadmin thực thụ (dù chỉ đang mặc pijama)

Xin đừng phán xét cụm lộn xộn của tôi... pve1 đã quyết định nghỉ ngơi và những VM này chỉ là những mô hình thử nghiệm!

Nhưng có một điều mà tôi chưa bao giờ dừng lại để suy nghĩ về những gì thực sự xảy ra bên trong để mọi thứ hoạt động như vậy. Nó chỉ... hoạt động, bạn biết không?

Điều gì đã thay đổi ý nghĩ của tôi? Gần đây, tại nơi làm việc, tôi đã phải nghiên cứu về công nghệ cụm và tôi đã rơi vào cái hố sâu của việc tìm hiểu về Corosync - thành phần quan trọng giữ cho các cụm Proxmox không bị rơi vào hỗn loạn. Đó là một trong những khoảnh khắc "aha!" mà mọi thứ đột nhiên trở nên rõ ràng!

Vậy hôm nay, hãy cùng tìm hiểu xem tôi đã học được gì về Corosync, tại sao nó lại quan trọng, và trả lời câu hỏi lớn cho chúng ta, những người yêu thích homelab: "Tôi có nên quan tâm đến những thứ này không?"


🤝 Corosync Thực Chất Là Gì?

Hãy nghĩ về Corosync như là hệ thống thần kinh của cụm.

Đây là phần mềm mã nguồn mở cho phép tất cả các máy chủ Proxmox của bạn trò chuyện với nhau, liên tục kiểm tra xem mọi người có còn sống hay không và chia sẻ các bản cập nhật quan trọng. Nếu không có nó, cụm của bạn sẽ giống như một nhóm chat mà không ai biết ai còn trực tuyến.

Các Nhiệm Vụ Chính Của Corosync:

  1. 📋 Quản Lý Thành Viên

    • Theo dõi ai đang ở trong câu lạc bộ
    • Biết chính xác các nút đang hoạt động tại thời điểm đó
  2. 💬 Nhắn Tin

    • Đảm bảo lệnh đến tất cả các nút
    • "Chào mọi người, chúng ta sẽ khởi động VM 101 trên nút 3!"
  3. ⚖️ Quản Lý Quorum

    • Hệ thống "đa số quy định"
    • Đây là điều quan trọng! (Thêm về điều này trong một chút)

⚖️ Hiểu Về "Quorum" - Dân Chủ Của Cụm

Nếu bạn chỉ nhớ một điều từ bài viết này, hãy khiến nó là Quorum. Nó thực chất là dân chủ cho các máy chủ - quyết định chỉ xảy ra khi đa số đồng ý.

🧠 Vấn Đề "Split-Brain" Đáng Sợ

Hãy để tôi mô tả cho bạn điều gì có thể sai lầm mà không có quorum:

Hãy tưởng tượng bạn có một cụm 4 nút, và đột nhiên mạng của bạn gặp sự cố. Cụm bị tách thành hai nhóm, mỗi nhóm gồm hai nút.

Nếu không có quy tắc quorum, cả hai nhóm sẽ nghĩ:

  • "Những người kia chắc chắn đã gặp sự cố!"
  • "Chúng ta mới là cụm thật sự!"
  • "Hãy khởi động tất cả các VM mà đã ở trên các nút khác!"

Kết quả? Cả hai phía đều cố gắng chạy cùng một VM, ghi vào cùng một kho lưu trữ, và tạo ra hỗn loạn số. Tình huống ác mộng này được gọi là split-brain, và vâng, nó đáng sợ như tên gọi! 😱

Cách Quorum Giải Quyết Vấn Đề

Giải pháp thật đơn giản:
Đa Số Quy Định
Chỉ có nhóm có nhiều hơn một nửa tổng số phiếu mới có thể tiếp tục hoạt động.

  • Có 3 nút và 2 nút đang hoạt động? ✅ Bạn có quorum (2 > 1.5)
  • Có 4 nút và chỉ có 2 nút đang hoạt động? ❌ Không có quorum (2 = 2, không lớn hơn)
  • Có 5 nút và 3 nút đang hoạt động? ✅ Bạn có quorum (3 > 2.5)

Bất kỳ nhóm nào không có đa số sẽ vào "chế độ an toàn" và dừng tất cả hoạt động của cụm. Điều này được gọi là fencing, và mặc dù có vẻ khắc nghiệt, nhưng tốt hơn nhiều so với việc bị hỏng dữ liệu!

Khi bạn thấy dấu X đỏ đáng sợ này trong Proxmox:

Nút của bạn đang nói: "Tôi đang ở thiểu số, vì vậy tôi sẽ không tham gia để tránh gây ra vấn đề!"

💥 Khi Mọi Thứ Trở Nên Căng Thẳng

Các nút thực sự nghiêm túc về "an toàn trước hết". Nếu một nút mất liên lạc với cụm quá lâu (thường sau vài chục giây), nó có thể khởi động lại chính nó như một biện pháp phòng ngừa!

Tôi đã học được điều này theo cách khó khăn khi một sự cố mạng ngắn đã khiến một trong những nút của tôi hoảng loạn và khởi động lại. Không vui chút nào khi bạn có những VM quan trọng đang chạy!

Bạn có thể theo dõi diễn biến trong thời gian thực trong các nhật ký hệ thống của mình:


🔢 Tại Sao Số Lẻ Là Bạn Đồng Hành Của Bạn

Đây là lý do tại sao mọi người khuyên bạn nên có số nút lẻ:

Quorum=⌊Tổng Số Nút2⌋+1 \text{Quorum} = \left\lfloor \frac{\text{Tổng Số Nút}}{2} \right\rfloor + 1Quorum=⌊2Tổng Số Nút​⌋+1

Hãy để tôi phân tích nó với các ví dụ thực tế:

Nút Có Thể Tồn Tại Tại Sao?
3 nút 1 hỏng 2 còn lại > 1.5 ✅
4 nút 1 hỏng 2 còn lại = 2 ❌ Nguy cơ chia 2v2!
5 nút 2 hỏng 3 còn lại > 2.5 ✅

Điều rút ra?
Số chẵn = tiềm năng chia 50/50 = thời gian tồi tệ

Hãy giữ số nút là 3, 5 hoặc 7 để có một cuộc sống cụm hạnh phúc hơn!


🏢 Cấu Hình "Doanh Nghiệp" (hay còn gọi là Thừa Thãi Đối Với Hầu Hết Chúng Ta)

Nếu bạn đang chạy những thứ quan trọng, đây là những gì các chuyên gia khuyên:

  • Mạng dự phòng độc lập cho Corosync
  • Switch vật lý riêng biệt chỉ cho lưu lượng cụm
  • Nhiều NIC trên mỗi nút
  • Cơ bản là, hãy coi lưu lượng Corosync như thể nó được làm bằng vàng

Đối với một homelab? Thật ra... có thể không xảy ra. Nhưng tốt để biết "thực hành tốt nhất" trông như thế nào!


🏡 Phương Pháp Homelab Thực Tế

Đây là những gì tôi thực sự đang chạy (và nó hoạt động tốt!):

Mọi thứ đều qua một NIC duy nhất trên mỗi nút - quản lý, lưu lượng VM, Corosync, tất cả. Có hoàn hảo không? Không. Có hoạt động không? Hoàn toàn có!

⚠️ Cẩn Thận Với Những Cạm Bẫy Này:

  1. Saturation Mạng

    • Đừng cố gắng di chuyển VM trong khi tải lên ISO trong khi sao lưu trong khi... bạn hiểu rồi
    • Tôi chắc chắn đã làm cho cụm của mình không hài lòng khi quá tham vọng với các chuyển giao đồng thời
  2. Switch Rẻ Tiền

    • Cái switch $20 có thể tiết kiệm nhưng có thể gây ra sự cố cụm ngẫu nhiên
    • Đầu tư vào một thứ gì đó tốt nếu bạn gặp phải vấn đề về độ ổn định

Lời khuyên của tôi? Bắt đầu đơn giản với các NIC đơn. Chỉ thêm phức tạp khi bạn thực sự gặp vấn đề!


🤔 "Nhưng Tôi Chỉ Có 2 Nút!"

Một cụm 2 nút không tốt cho High Availability (vì mất một nút = mất quorum), nhưng hoàn toàn ổn nếu bạn chỉ muốn quản lý dễ hơn!

Mẹo Phục Hồi Khẩn Cấp

Khi một nút chết trong một cụm 2 nút, đây là cứu cánh của bạn:

Copy
# Kiểm tra xem bạn đã mất quorum chưa
$ pvecm status
# Kết quả: Quorum: Không 😱

# Nói với nút còn sống rằng giờ đây nó là một cụm 1 nút
$ pvecm expected 1

# Kiểm tra lại
$ pvecm status
# Kết quả: Quorum: Có 🎉

Mẹo chuyên nghiệp: QDevice đến giải cứu!
Bạn cũng có thể thêm một QDevice - cơ bản là một người bỏ phiếu thứ ba nhỏ (như một Raspberry Pi) giúp giải quyết bế tắc trong các cụm 2 nút. Nó phức tạp hơn một chút để thiết lập nhưng đáng để tìm hiểu nếu bạn bị kẹt với 2 nút lâu dài.

Xem:

  • Thảo luận trên Diễn đàn Proxmox về QDevice
  • Wiki Chính Thức của Proxmox về QDevice

💭 Suy Nghĩ Cuối Cùng

Vậy đó là những gì tôi đã học về Corosync - người hùng không được công nhận giữ cho các cụm Proxmox của chúng ta không bị rơi vào hỗn loạn!

Tóm lại:

  • Hiểu về Quorum (đa số quyết định!)
  • Giữ cho mạng ổn định (đặc biệt là độ trễ)
  • Sử dụng số lẻ nút khi có thể
  • Đừng suy nghĩ quá nhiều cho một homelab

Sự tuyệt vời của việc homelabbing là học các khái niệm doanh nghiệp và sau đó tìm ra điều gì thực sự quan trọng cho thiết lập của bạn. Bạn không cần các mạng 10Gb dư thừa và switch doanh nghiệp - bạn chỉ cần hiểu các nguyên tắc và áp dụng chúng cho thực tế của bạn (và ngân sách)!

Cấu hình cụm của bạn như thế nào? Bạn có đang chạy số nút lẻ như được khuyến nghị, hay đang sống mạo hiểm với số chẵn? Hãy cho tôi biết trong phần bình luận!


Bạn thấy điều này hữu ích? Hãy để lại một ❤️ và theo dõi để biết thêm về những cuộc phiêu lưu homelab và những chuyến phiêu lưu học Devops của tôi nữa! Tôi luôn phá hỏng mọi thứ và (thường là) sửa chữa chúng, vì vậy còn nhiều điều nữa để chia sẻ!

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào