Failure Domains
Nguồn: Lightbits Private Cloud Administration Guide (3.19.x / 3.20.x)
Trong một data center, failure domain (FD) là một nhóm tài nguyên có khả năng cao cùng gặp sự cố với nhau. Ví dụ, tất cả các server trong cùng một rack có thể được coi là một failure domain, vì nếu xảy ra mất điện hoặc sự cố ảnh hưởng đến rack đó, tất cả server trong rack đều bị tác động.
FD rất quan trọng trong việc thiết kế và quản lý data center, vì chúng giúp đảm bảo rằng ngay cả khi một sự cố xảy ra, một phần tài nguyên trong data center vẫn tiếp tục hoạt động. Chẳng hạn, nếu một rack gặp lỗi, data center vẫn có thể hoạt động bình thường nếu các rack còn lại không bị ảnh hưởng.
Một ví dụ khác về định nghĩa FD là topology dạng lưới (grid), trong đó mỗi node được gán nhãn theo hàng và cột. Khi đó, volume sẽ không được lưu trên hai server cùng hàng hoặc cùng cột.
Người dùng tự định nghĩa FD dựa trên topology của data center và mức độ bảo vệ mà họ yêu cầu. Mỗi server trong cluster có thể được gán vào một hoặc nhiều FD.
Một số yếu tố có thể dùng để định nghĩa failure domain bao gồm:
- Vị trí vật lý: Các tài nguyên ở cùng một vị trí vật lý dễ gặp sự cố cùng nhau hơn — ví dụ: tất cả server trong cùng một rack.
- Hạ tầng dùng chung: Các tài nguyên dùng chung hạ tầng dễ gặp sự cố cùng nhau hơn — ví dụ: tất cả server kết nối vào cùng một nguồn điện.
- Phụ thuộc logic: Các tài nguyên phụ thuộc logic lẫn nhau dễ gặp sự cố cùng nhau — ví dụ: một database server và storage đi kèm.
Failure Domains trong Lightbits
Một Lightbits storage cluster bao gồm một tập hợp phân tán các server. Mỗi server có thể đặt ở các nhóm vật lý hoặc logic khác nhau.
Trong quá trình cài đặt Lightbits server, các server có thể được gán nhãn với danh sách FD. Để hoạt động bình thường, cần tối thiểu ba server có FD không giao nhau. Các nhãn này phải tương ứng với các failure domain logic và/hoặc vật lý mà người dùng muốn phân bổ server theo đó.
Logic nhân bản của Lightbits storage cluster sử dụng thông tin FD này để đảm bảo mỗi replica của dữ liệu volume sẽ được phân phối đến các server không dùng chung failure domain. Điều này đảm bảo rằng sự cố trong một failure domain đơn lẻ (ví dụ: mất điện nguồn của một rack cụ thể) chỉ ảnh hưởng đến một replica duy nhất, giữ cho cluster tiếp tục đảm bảo tính khả dụng của dữ liệu.
Lưu ý: Như đã đề cập ở phần trước, các server có thể được cấu hình dạng single hoặc dual instance. Các quy tắc FD tương tự cũng áp dụng cho dual instance, vì cả hai node trong một server dùng chung tài nguyên vật lý. Nhiều replica của một volume sẽ không bao giờ được đặt trên cùng một server, vì bất kỳ sự cố server nào thường ảnh hưởng đến cả hai node.
Proactive Rebalance
Khi chế độ proactive rebalance được bật, cluster sẽ tự động cân bằng dung lượng lưu trữ — ngăn chặn tình huống một storage node trong cluster sắp đạt trạng thái read-only trong khi các node khác vẫn còn dung lượng trống để phục vụ thêm.
Trong quá trình proactive rebalance một volume, trạng thái bảo vệ của volume được duy trì theo trạng thái các node trong cluster. Khi một volume di chuyển khỏi node nguồn, hệ thống sẽ tạo thêm một replica tạm thời của volume đó; replica trên node nguồn sẽ được xóa sau khi node đích đã đồng bộ đủ toàn bộ dữ liệu cần thiết của volume.
Phần dưới đây mô tả các điều kiện kích hoạt proactive rebalance. Ngưỡng read-only được xác định dựa trên:
- Dung lượng lưu trữ effective của cluster.
- RAM khả dụng dành cho metadata.
Các lý do kích hoạt việc di chuyển volume (rebalance) bao gồm:
- Node sắp đạt trạng thái read-only:
- Node nguồn đủ điều kiện để di chuyển volume nếu mức sử dụng của node đang trong phạm vi 10% so với ngưỡng read-only.
-
Node đích đủ điều kiện nhận volume nếu còn ít nhất 30% dung lượng trống so với ngưỡng read-only.
-
Mất cân bằng dung lượng trong cluster:
- Có một node trong cluster có mức sử dụng dưới 20%.
- Chênh lệch dung lượng giữa hai node mất cân bằng nhất vượt quá 30%. Cụ thể: nếu node có mức sử dụng cao nhất là X% và node có mức sử dụng thấp nhất là Y%, rebalancing xảy ra khi X − Y > 30.
Ví dụ CLI cho Proactive Rebalance
Kích hoạt chế độ proactive rebalance bằng cách bật feature-flag:
lbcli enable feature-flag proactive-rebalance [flags]
Ví dụ:
enable a feature proactive rebalance with given feature flag name
lbcli --jwt $JWT enable feature-flag proactive-rebalance
Tắt chế độ proactive rebalance bằng cách vô hiệu hóa feature-flag:
lbcli disable feature-flag proactive-rebalance [flags]
Ví dụ:
disable a feature flag proactive rebalance with given feature flag name
lbcli --jwt $JWT disable feature-flag proactive-rebalance