Xóa node khỏi cluster
Điều kiện
- Cluster phải có ≥ 4 server (dưới 4: liên hệ Lightbits Support).
- Gate của
delete server: node phải ở trạng thái Unattached. Delete sớm sẽ báo lỗicannot delete server whose nodes are not in Unattached state.
Máy trạng thái
disable server → node Inactive → [chờ hết DurationToTurnIntoPermanentFailure, mặc định 4h]
→ node Unattached → delete server (xóa entry server + node + etcd)
Thiết lập biến môi trường thông tin các node liên quan
ADMIN_NODE=10.237.94.100
CURRENT_NODE=10.237.94.104
OLD_NODE_IPADDR=10.237.94.104
OLD_NODE_HOSTNAME=oss-nvme-04
source ~/lightos-system-jwt
EP=https://${CURRENT_NODE}:443
Quy trình chuẩn
# 1.1. Xem list servers và lấy thông tin UUID tại đây (lưu ý không lấy thông Node UUID)
[root@vm-admin-01 ~]# lbcli --endpoint $EP -J "$LIGHTOS_JWT" list servers
NAME UUID State RiskOfServiceLoss State LightOSVersion
oss-nvme-01 a0d5bf2a-2ef6-5ff9-953b-592531939f78 Enabled NoRiskOfServiceLoss 3.18.2b26868114363
oss-nvme-02 a17b6c72-5a59-5c33-a699-61bdc24b9b54 Enabled NoRiskOfServiceLoss 3.18.2b26868114363
oss-nvme-03 88940976-0aa4-5506-852b-e5861d3816cb Enabled NoRiskOfServiceLoss 3.18.2b26868114363
oss-nvme-04 a173b57d-648b-4e52-9c14-a6c04dfd6c8b Enabled NoRiskOfServiceLoss 3.18.2b26868114363
oss-nvme-05 35b83b77-a97d-43a5-8325-39f84ac67605 Enabled NoRiskOfServiceLoss 3.18.2b26868114363
# 1.2. Xem lại list nodes
[root@vm-admin-01 ~]# lbcli --endpoint $EP -J "$LIGHTOS_JWT" list nodes
Name UUID State NVMe endpoint Failure domains Capacity Used Local rebuild progress
oss-nvme-01-0 e8bc0737-a4af-5538-8952-3cdf63a20f96 Active 10.237.95.101:4420 [oss-nvme-01] 61 TiB 0 B None
oss-nvme-02-0 ef732732-4c12-5e22-8bf4-eb3dddbd0cc7 Active 10.237.95.102:4420 [oss-nvme-02] 61 TiB 0 B None
oss-nvme-03-0 5c5b6d5d-21c0-51e2-9c02-359936ae9c70 Active 10.237.95.103:4420 [oss-nvme-03] 61 TiB 0 B None
oss-nvme-04-0 f2a4f333-9aaf-45fe-bcab-d479c20bb634 Active 10.237.95.104:4420 [oss-nvme-04] 61 TiB 0 B None
oss-nvme-05-0 8861a8fc-b72b-4129-b9e9-1fe77a5a6e82 Active 10.237.95.105:4420 [oss-nvme-05] 61 TiB 0 B None
# 1.3. Lấy nhanh SRV_UUID node cần gỡ
SRV_UUID=$(lbcli --endpoint $EP -J "$LIGHTOS_JWT" list servers | grep ${OLD_NODE_HOSTNAME} | awk '{print $2}')
# 2. Hạ Ha timer 4h -> 1h
## 2.1 (Tùy chọn) Hạ timer 4h -> 1h để rút ngắn thời gian chờ
[root@vm-admin-01 ~]# lbcli --endpoint $EP -J "$LIGHTOS_JWT" update cluster-config --parameter=DurationToTurnIntoPermanentFailure --value=1h
## 2.2. Verify lại kết quả
[root@vm-admin-01 ~]# lbcli --endpoint $EP -J "$LIGHTOS_JWT" get cluster-config --parameter=DurationToTurnIntoPermanentFailure
Cluster Config Parameter Value
DurationToTurnIntoPermanentFailure 1h0m0s
# 4. Disable
[root@vm-admin-01 ~]# lbcli --endpoint $EP -J "$LIGHTOS_JWT" disable server --uuid ${SRV_UUID}
# 5. Sau khi disable, node chuyển sang trạng thái Inactive
[root@vm-admin-01 ~]# lbcli --endpoint $EP -J "$LIGHTOS_JWT" list nodes
Name UUID State NVMe endpoint Failure domains Capacity Used Local rebuild progress
oss-nvme-01-0 e8bc0737-a4af-5538-8952-3cdf63a20f96 Active 10.237.95.101:4420 [oss-nvme-01] 61 TiB 0 B None
oss-nvme-02-0 ef732732-4c12-5e22-8bf4-eb3dddbd0cc7 Active 10.237.95.102:4420 [oss-nvme-02] 61 TiB 0 B None
oss-nvme-03-0 5c5b6d5d-21c0-51e2-9c02-359936ae9c70 Active 10.237.95.103:4420 [oss-nvme-03] 61 TiB 0 B None
oss-nvme-04-0 f2a4f333-9aaf-45fe-bcab-d479c20bb634 Inactive 10.237.95.104:4420 [oss-nvme-04] 61 TiB 0 B None
oss-nvme-05-0 8861a8fc-b72b-4129-b9e9-1fe77a5a6e82 Active 10.237.95.105:4420 [oss-nvme-05] 61 TiB 0 B None
# 6. Delete khi Unattached
## 6.1 Chắc chắn node đã chuyển sang trạng thái Unattached
[root@vm-admin-01 ~]# lbcli --endpoint $EP -J "$LIGHTOS_JWT" list nodes
Name UUID State NVMe endpoint Failure domains Capacity Used Local rebuild progress
oss-nvme-01-0 e8bc0737-a4af-5538-8952-3cdf63a20f96 Active 10.237.95.101:4420 [oss-nvme-01] 61 TiB 0 B None
oss-nvme-02-0 ef732732-4c12-5e22-8bf4-eb3dddbd0cc7 Active 10.237.95.102:4420 [oss-nvme-02] 61 TiB 0 B None
oss-nvme-03-0 5c5b6d5d-21c0-51e2-9c02-359936ae9c70 Active 10.237.95.103:4420 [oss-nvme-03] 61 TiB 0 B None
oss-nvme-04-0 f2a4f333-9aaf-45fe-bcab-d479c20bb634 Unattached 10.237.95.104:4420 [oss-nvme-04] 61 TiB 0 B None
oss-nvme-05-0 8861a8fc-b72b-4129-b9e9-1fe77a5a6e82 Active 10.237.95.105:4420 [oss-nvme-05] 61 TiB 0 B None
## 6.2 Delete node đã Unattached và verify lại
[root@vm-admin-01 ~]# lbcli --endpoint $EP -J "$LIGHTOS_JWT" delete server --uuid ${SRV_UUID}
[root@vm-admin-01 ~]# lbcli --endpoint $EP -J "$LIGHTOS_JWT" list nodes
Name UUID State NVMe endpoint Failure domains Capacity Used Local rebuild progress
oss-nvme-01-0 e8bc0737-a4af-5538-8952-3cdf63a20f96 Active 10.237.95.101:4420 [oss-nvme-01] 61 TiB 0 B None
oss-nvme-02-0 ef732732-4c12-5e22-8bf4-eb3dddbd0cc7 Active 10.237.95.102:4420 [oss-nvme-02] 61 TiB 0 B None
oss-nvme-03-0 5c5b6d5d-21c0-51e2-9c02-359936ae9c70 Active 10.237.95.103:4420 [oss-nvme-03] 61 TiB 0 B None
oss-nvme-05-0 8861a8fc-b72b-4129-b9e9-1fe77a5a6e82 Active 10.237.95.105:4420 [oss-nvme-05] 61 TiB 0 B None
Chọn hướng để action
Hướng A — Chờ: không làm gì, chờ node đã bị disable từ trạng thái Inactive chuyển sang trạng thái Unattached.
Hướng B — Evict ngay: chạy lệnh dưới để kiểm flag trước xem version có hỗ trợ hay không rồi mới đi tiếp:
[root@vm-admin-01 light-app]# lbcli --endpoint $EP -J "$LIGHTOS_JWT" disable server --help 2>&1 | grep -iE "evict|force"
To force disabling a server, even if it may lead to risk of service loss, use the --force flag
--evict-data Evict data from the server (optional, default: false). NOTE: This option is not currently supported
--force Force disable, bypass risk of service loss checks (optional, default: false)
Ở version hiện tại thì output trên thì không có cách nào xóa node ngay lập tức, bắt buộc phải chờ đủ DurationToTurnIntoPermanentFailure. Phương án evict chỉ có từ 3.19.x. Cách nhanh duy nhất trên 3.18.2 là hạ timer xuống 1h trước khi disable.
Quy trình nhanh cho hướng B (bỏ chờ — evict, Technology Preview)
- Phải enable Evict Data feature trước (xem doc "Enabling the Evict Data Feature").
- Chỉ áp dụng cho server đang Enabled (đã lỡ disable thì enable lại rồi mới evict).
- Evict có thể fail nếu các server còn lại thiếu dung lượng trống chứa dữ liệu dời sang.
lbcli disable server --name=<server_name> --evict-data # migrate ngay, xong -> Unattached -> delete
lbcli disable server --name=<server_name> --force --evict-data # node da chet/RiskOfServiceLoss (hong phan cung)
C3 — Gỡ etcd member của oss-nvme-04
### [REF]
etcdctl member list
### [NODE REMOVE]
systemctl disable --now etcd
### [REF]
etcdctl member remove <id>
etcdctl member list
# Dọn key registry
etcdctl get --prefix /registry/discovery-service --keys-only
etcdctl del /registry/discovery-service/${SRV_UUID}
Verify sau delete
Command thực hiện
[root@vm-admin-01 ~]# lbcli --endpoint $EP -J "$LIGHTOS_JWT" list servers
NAME UUID State RiskOfServiceLoss State LightOSVersion
oss-nvme-01 a0d5bf2a-2ef6-5ff9-953b-592531939f78 Enabled NoRiskOfServiceLoss 3.18.2b26868114363
oss-nvme-02 a17b6c72-5a59-5c33-a699-61bdc24b9b54 Enabled NoRiskOfServiceLoss 3.18.2b26868114363
oss-nvme-03 88940976-0aa4-5506-852b-e5861d3816cb Enabled NoRiskOfServiceLoss 3.18.2b26868114363
oss-nvme-05 35b83b77-a97d-43a5-8325-39f84ac67605 Enabled NoRiskOfServiceLoss 3.18.2b26868114363
[root@vm-admin-01 ~]# lbcli --endpoint $EP -J "$LIGHTOS_JWT" list nodes
Name UUID State NVMe endpoint Failure domains Capacity Used Local rebuild progress
oss-nvme-01-0 e8bc0737-a4af-5538-8952-3cdf63a20f96 Active 10.237.95.101:4420 [oss-nvme-01] 61 TiB 0 B None
oss-nvme-02-0 ef732732-4c12-5e22-8bf4-eb3dddbd0cc7 Active 10.237.95.102:4420 [oss-nvme-02] 61 TiB 0 B None
oss-nvme-03-0 5c5b6d5d-21c0-51e2-9c02-359936ae9c70 Active 10.237.95.103:4420 [oss-nvme-03] 61 TiB 0 B None
oss-nvme-05-0 8861a8fc-b72b-4129-b9e9-1fe77a5a6e82 Active 10.237.95.105:4420 [oss-nvme-05] 61 TiB 0 B None
[root@oss-nvme-01 ~]# etcdctl member list
35049cb5f985d69e, started, oss-nvme-05, https://10.237.95.105:2380, http://localhost:2379,https://10.237.95.105:2379, false
49675b756efdbdb4, started, oss-nvme-02, https://10.237.95.102:2380, http://localhost:2379,https://10.237.95.102:2379, false
92786a305fae6ea5, started, oss-nvme-03, https://10.237.95.103:2380, http://localhost:2379,https://10.237.95.103:2379, false
dcea60084de74739, started, oss-nvme-01, https://10.237.95.101:2380, http://localhost:2379,https://10.237.95.101:2379, false
Dừng service + gỡ package + xóa jwt/CA cũ trên node 10.237.94.104
Stop LightOS services
systemctl stop api-service cluster-manager node-manager duroslight-0 gftl lightbox-exporter discovery-service etcd 2>/dev/null
Remove all LightOS packages
dnf remove -y lightos duroslight management-node-manager management-cluster-manager management-api-service management-profile-generator management-lbcli discovery-service discovery-client management-lightbox-exporter management-upgrade-manager klight_utils userlbe etcd gftl 2>/dev/null
Remove leftover JWT + old CA/etcd data that poison next deploy
rm -f /root/lightos-system-jwt /root/lightos-default-admin-jwt
rm -rf /etc/lightos /etc/etcd/ssl /var/lib/etcd /var/lib/lightos* 2>/dev/null
ls /root/lightos-*jwt* 2>/dev/null | wc -l
ls /etc/etcd/ssl 2>/dev/null | wc -l
rpm -qa | grep -icE "lightos|duros|node-manager|cluster-manager|api-service|discovery|etcd|gftl|userlbe"
Kỳ vọng kết quả: 0/0/0.
Reboot node để nhả md126
Reboot qua Ansible từ ADMIN
cat > /tmp/all3.ini << 'EOF'
10.237.94.104
EOF
cd ~/light-app
ansible -i /tmp/all3.ini all -m reboot -a "reboot_timeout=1200" -b -u root
Reboot trực tiếp trên node
reboot
Sau reboot wipe các ổ NVMe
# Stop leftover raid0 (NOT md127 = OS raid1)
for m in /dev/md12[0-6]; do
[ -e "$m" ] && mdadm --detail "$m" 2>/dev/null | grep -q "raid0" && mdadm --stop "$m" && echo "stopped $m"
done
# Wipe 8 data drives (nvme0-7), NOT sda/sdb/md127
for d in 0 1 2 3 4 5 6 7; do wipefs -a /dev/nvme${d}n1 >/dev/null 2>&1; done
for d in 0 1 2 3 4 5 6 7; do nvme format /dev/nvme${d}n1 --lbaf=1 --force >/dev/null 2>&1; done
lsblk | grep -cE "nvme[0-7]n1"
grep -q md126 /proc/mdstat && echo 1 || echo 0
grep -q md127 /proc/mdstat && echo 0 || echo 1
Kỳ vọng 8/0/0.
Hậu kỳ
- Inventory: xóa node khỏi 3 section trong
hosts+ xóa filehost_vars/<node>.ymlnếu sử dụng deploy bằng Ansible. - Trả cluster-config: set
DurationToTurnIntoPermanentFailurevề giá trị gốc (vd4h0m0s) nếu đã hạ. - Nếu tái sử dụng, dọn node đã xóa cho sạch sẽ: gỡ package lightos/etcd,
rm -rf /var/lib/etcd /etc/lightos*, wipe + format 8 ổ NVMe, tắt repo online.
Lưu ý
- Endpoint lbcli phải trỏ vào 1 trong các node còn lại, không trỏ node sắp xóa.
- Timer là tham số toàn cluster: để giá trị thấp = node down quá hạn là bị coi permanent failure và kích rebuild → production nên giữ mặc định, chỉ hạ tạm khi thao tác.
- Khi xóa node phải xác định capaciy, cluster phải stable, số lượng node còn lại để tránh thiếu quorum.