Lightbits Private Cloud — Evicting Data (Technology Preview)
Mục lục
- Evicting Data (Technology Preview) — Evict dữ liệu (bản xem trước công nghệ)
- Additional Considerations and Limitations — Các lưu ý và giới hạn bổ sung
- Enabling the Evict Data Feature — Bật tính năng Evict Data
- Disabling and Evicting a Server — Disable và evict một server
- Monitoring the Eviction — Theo dõi quá trình eviction
- List Servers Detailed View — Xem chi tiết danh sách server
- Canceling an Evict Process — Hủy một tiến trình evict
- Nguồn tham khảo
Evicting Data (Technology Preview) — Evict dữ liệu (bản xem trước công nghệ)
Lưu ý: Đây là một technology preview; không nên dùng trong môi trường production.
Trong một số trường hợp, bạn cần evict một server và chuyển dữ liệu trên các node của nó sang những server khác trong cluster. Thao tác này do người dùng khởi tạo và sẽ migrate toàn bộ tài nguyên của server (ví dụ: volume, snapshot) sang các server khác trong cluster. Dữ liệu trên các volume có RF=1 hiện chưa thể migrate được, và tiến trình evict sẽ thất bại. Chức năng evict cho phép migrate các volume gắn với server này trước khi thực hiện thao tác bảo trì disable server, đảm bảo các volume vẫn ở trạng thái fully protected.
Tiến trình evict server có thể được dùng khi bạn cần thực hiện bảo trì có kế hoạch trên server mà không muốn việc bảo trì ảnh hưởng tới tính sẵn sàng của dữ liệu trong cluster. Nó cũng có thể dùng trong trường hợp các node của một server trở nên không khả dụng và bạn muốn kích hoạt việc evict dữ liệu ngay lập tức thay vì chờ các node chuyển sang trạng thái permanently failed.
Nếu sau khi evict xong mà server không còn cần thiết nữa, hãy nhớ delete và gỡ server đó khỏi cluster (delete server API).
Lưu ý: Vì đây là tính năng đang ở giai đoạn tech preview, tính năng này mặc định bị tắt và cần được bật lên mới sử dụng được (tức là lbcli enable feature-flag evict-data (Technology Preview)).
Additional Considerations and Limitations — Các lưu ý và giới hạn bổ sung
-
Để evict một server thành công, hãy đảm bảo có đủ server/tài nguyên/dung lượng khả dụng để tiếp nhận dữ liệu evict ra từ server đó.
-
Cluster phải có ít nhất bốn server (không hỗ trợ evict trên cluster có ba server)
-
Việc evict một server có các volume được đặt bằng placement affinity (PrimaryFD) vẫn chạy được, nhưng các rule PrimaryFD sẽ bị bỏ qua.
-
Không thể evict một server có các volume RF=1. Những volume này phải được xóa trước khi evict server.
-
Chỉ một tiến trình evict được chạy tại một thời điểm. Gọi evict API khi tiến trình evict không được hỗ trợ có thể gây ra hành vi ngoài dự kiến.
-
Tốt nhất nên chạy tiến trình evict khi tất cả các server khác đều khỏe mạnh và các node đều khả dụng.
-
Hãy nhớ theo dõi tiến trình evict và đảm bảo nó đã hoàn tất trước khi thực hiện bất kỳ hoạt động bảo trì nào khác trong cluster (upgrade, restart, v.v.).
Nguồn: https://documentation.lightbitslabs.com/lightbits-private-cloud/disabling-a-server--evict-data
Enabling the Evict Data Feature — Bật tính năng Evict Data
Để evict dữ liệu khỏi một server, trước tiên tính năng này phải được bật. Sau khi bật, dữ liệu có thể được evict khỏi server bằng cách gọi disable server kèm flag evict-data. Xem "Disabling and Evicting a Server" bên dưới để biết thêm thông tin.
Để bật tính năng evict dữ liệu, hãy dùng lệnh sau:
lbcli enable feature-flag evict-data
Xem trang lbcli enable feature-flag evict-data (Technology Preview) trong Lightbits CLI Guide để biết thêm thông tin.
Lưu ý: Khi một server được evict, các event cũng sẽ được sinh ra để cho biết trạng thái của tiến trình eviction. Để biết thêm thông tin, xem Lightbits Supported Events.
Nguồn: https://documentation.lightbitslabs.com/lightbits-private-cloud/enabling-the-evict-data-feature
Disabling and Evicting a Server — Disable và evict một server
Theo mặc định, khi bạn disable một server, nó sẽ không evict dữ liệu và các node sẽ chuyển sang trạng thái inactive - ảnh hưởng tới tính sẵn sàng của dữ liệu. Khi các node đã inactive, dữ liệu chỉ được migrate sau khi khoảng DurationToTurnIntoPermanentFailure trôi qua (mặc định là 4 giờ). Khi thêm flag evict-data, server sẽ chuyển sang trạng thái disabling và việc migration sẽ bắt đầu ngay lập tức. Trong quá trình eviction, các volume vẫn ở trạng thái fully protected, và chỉ khi tất cả volume đã được migrate thành công sang những server khác trong cluster thì các node của server mới chuyển sang inactive và server mới bị disable.
lbcli disable server --name={server_name} —-evict-data
Lưu ý: Chỉ server có trạng thái "Enabled" mới có thể bị disable.
Nếu các node trên server bị evict đã không khả dụng và server đó (hoặc bất kỳ server nào khác trong cluster) đang ở trạng thái RiskOfServiceLoss hoặc SourceOfRiskOfServiceLoss, evict server API sẽ thất bại. Nếu vẫn cần evict server sau khi đã cân nhắc rủi ro, bạn có thể chạy disable server với flag --force.
lbcli disable server —name={name} --force —-evict-data
-
Khi server được kích hoạt để disable, trạng thái của server sẽ chuyển thành 'Disabling'.
-
Việc eviction diễn ra trong khi ở trạng thái 'Disabling'. Điều này được thực hiện bằng cách tận dụng Rebalance. Nếu một tiến trình migration trước đó vẫn đang chạy (ví dụ, một lần rebalance đã được kích hoạt trước đó), các migration đi vào server đang bị disable sẽ bị dừng lại.
-
Events:
-
Disable server:
- ServerDisableOperation - Initiated / completed / FailedToComplete
-
Evict process:
- ServerEviction - Initiated / completed / FailedToComplete
-
Failed Evictions
-
Nếu migration thất bại, điều đó nghĩa là việc evict server thất bại, và server sẽ quay lại trạng thái 'Enabled'. Lần eviction cuối cùng sẽ ở trạng thái 'Failed', kèm theo lỗi cho biết migration đã thất bại. Một event sẽ được phát ra cho cả việc eviction thất bại lẫn việc disable server thất bại. Bạn nên chạy get server API để lấy trạng thái Evict, tiến độ và thông báo lỗi. Lưu ý rằng ngay cả khi eviction thất bại, vẫn có thể một phần dữ liệu đã được migrate thành công sang server khác. Không có tiến trình rollback, và thuật toán dynamic rebalance sẽ cân bằng lại dữ liệu nếu cần.
-
Khi thuật toán rebalance không tìm được cách evict toàn bộ volume khỏi server đang bị evict, tiến trình eviction sẽ thất bại. Nguyên nhân của vấn đề này có thể là do thiếu dung lượng trống trên các server.
-
Các nguyên nhân gây lỗi trong lúc rebalance tài nguyên bao gồm:
-
Node đích trở nên đầy trong lúc eviction (do có dữ liệu mới từ người dùng).
-
Một node trên server nguồn trở nên inactive trong lúc eviction.
-
Một node trên server đích trở nên inactive trong lúc eviction (hoặc bất kỳ node nào trong cluster).
-
Nếu tiến trình dynamic rebalance chạy song song với tiến trình evict, điều này có thể khiến evict thất bại trong một số trường hợp.
-
-
Nếu evict thất bại vì một trong các lý do trên, sau khi vấn đề được khắc phục (tức là tất cả node đã trở lại active và tiến trình rebalance đã kết thúc), bạn có thể thử chạy lại tiến trình evict.
-
Khi eviction hoàn tất (tức là tất cả các node của server đã ở trạng thái unattached), trạng thái của server sẽ chuyển thành 'Disabled'.
Nguồn: https://documentation.lightbitslabs.com/lightbits-private-cloud/disabling-and-evicting-a-server
Monitoring the Eviction — Theo dõi quá trình eviction
Khi một thao tác disable server được khởi tạo, trạng thái của nó sẽ chuyển thành "Disabling". Trường LastEviction của một server hiển thị trạng thái và tiến độ của lần eviction gần nhất đã được thực hiện cho server đó. Nó cũng bao gồm cả lần eviction hiện tại.
lbcli list servers --output-format=yaml
or
lbcli get server --name <server_name> --output-format=yaml
List Servers Detailed View — Xem chi tiết danh sách server
Dưới đây là output mẫu của LastEviction (output format: yaml):
Lưu ý rằng đây là thông tin của lần eviction gần nhất đã phát ra, hoặc của lần đang diễn ra.
| Field | Mô tả |
|---|---|
| endTime | Cho biết thời điểm một lần eviction hoàn tất. |
| errorMessage | Thông báo lỗi chi tiết cho một lần eviction thất bại. |
| progress | Phần trăm dữ liệu đã được chuyển của quá trình eviction. 100% nghĩa là toàn bộ dữ liệu đã được chuyển xong. |
| startTime | Cho biết thời điểm một lần eviction bắt đầu. |
| status | Có các trạng thái sau: Failed, Evicting, và Completed. |
LastEviction:
endTime: null
errorMessage: ""
progress: 0
startTime: "2024-02-06T11:09:56.250098246Z"
status: Evicting
Lưu ý: Nếu một lần eviction thất bại, trạng thái sẽ là "Failed" và thông báo lỗi sẽ nêu rõ nguyên nhân thất bại.
Nguồn: https://documentation.lightbitslabs.com/lightbits-private-cloud/monitoring-the-eviction
Canceling an Evict Process — Hủy một tiến trình evict
Tiến trình evict có thể bị hủy ở bất kỳ thời điểm nào bằng cách enable lại server. Việc này sẽ dừng tiến trình migration. Lưu ý rằng một số volume đã hoàn tất migration sẽ nằm lại trên các node đích, còn những volume chưa hoàn tất migration sẽ nằm lại trên các node nguồn (server bị evict). Nếu cần thiết và thuật toán dynamic rebalancing phát hiện dữ liệu chưa được cân bằng đúng trong cluster, tiến trình dynamic rebalance của cluster sẽ cân bằng lại dữ liệu giữa các node trong cluster ở chế độ nền mà không ảnh hưởng tới tính sẵn sàng của dữ liệu.
Server cũng có thể được enable nếu tiến trình evict đã hoàn tất và server đang ở trạng thái disabled. Trong trường hợp này, server sẽ tham gia lại cluster ở trạng thái rỗng (vì toàn bộ dữ liệu đã được evict), và thuật toán dynamic rebalancing sẽ cân bằng lại dữ liệu nếu cần.
Khi server đã trở lại trạng thái enabled, các node trên server cũng sẽ trở lại trạng thái active.
lbcli enable server —name={name}
Lưu ý: Chỉ server đang ở trạng thái "Disabling" hoặc "Disabled" mới có thể được enable.
-
Khi server được kích hoạt để enable, trạng thái của server sẽ chuyển thành 'Enabling'.
-
Tiến trình eviction sẽ dừng lại và server sẽ chuyển sang trạng thái Enabled.
-
Events:
-
Disable server:
ServerEnabledOperation- Initiated / completed / FailedToComplete.
-
Evict process:
ServerEvictionAborted- Initiated / completed.
Nguồn: https://documentation.lightbitslabs.com/lightbits-private-cloud/canceling-an-evict-process
Nguồn tham khảo
- Evicting Data (Technology Preview) — https://documentation.lightbitslabs.com/lightbits-private-cloud/disabling-a-server--evict-data
- Enabling the Evict Data Feature — https://documentation.lightbitslabs.com/lightbits-private-cloud/enabling-the-evict-data-feature
- Disabling and Evicting a Server — https://documentation.lightbitslabs.com/lightbits-private-cloud/disabling-and-evicting-a-server
- Monitoring the Eviction — https://documentation.lightbitslabs.com/lightbits-private-cloud/monitoring-the-eviction
- Canceling an Evict Process — https://documentation.lightbitslabs.com/lightbits-private-cloud/canceling-an-evict-process
Ghi chú về nguồn
- Cả 5 URL đều fetch thành công.
- Nhãn phiên bản của các trang gốc: bốn trang ở 3.20.x; riêng Disabling and Evicting a Server hiển thị 3.19.x.
- Cấu trúc heading giữ nguyên theo bản gốc. Lưu ý ba trang (Enabling the Evict Data Feature, Disabling and Evicting a Server, Canceling an Evict Process) trong bản gốc chỉ có H1, không có heading cấp dưới; hai trang còn lại có một heading
###(Additional Considerations and Limitations, List Servers Detailed View) — bản dịch giữ đúng cấp###đó, không nâng lên##. - Các lệnh
lbclitrong bản gốc dùng dấu gạch dài (em dash “—”) thay vì hai dấu gạch ngang, ví dụ—-evict-datavà—name={name}. Đây là lỗi của tài liệu gốc và được giữ nguyên 100% theo yêu cầu không sửa code dù một ký tự; nếu copy để chạy thật, cần thay bằng--. - Trong mục Events của hai trang cuối, bản gốc có khoảng trắng thừa bên trong backtick (
`ServerEnabledOperation `,`ServerEvictionAborted `); giữ nguyên. - Bản gốc Disabling and Evicting a Server có câu "If there is is still a need..." (lặp từ "is") và mục 2 viết "while 'Disabling', This is done..." (dấu phẩy nối câu); bản dịch truyền đạt đúng ý mà không tái tạo lỗi gõ ở phần văn xuôi.
- Bản gốc dùng nhãn "Note"; đều được dịch thành
> **Lưu ý:**.