Logo

Personal Ops Runbook

Personal runbook covering infrastructure operations for Cloud, Kubernetes, OpenStack, and Ceph environments. Includes deployment and teardown procedures, node management, cluster monitoring setup, and incident response workflows compiled from day-to-day operational work. Intended strictly for personal reference — configurations and scripts are environment-specific and not guaranteed to work as-is elsewhere.

Lỗi Host Offline sau khi gỡ _no_schedule trong Ceph Orchestrator


🔍 Tổng quan

Trong quá trình triển khai Ceph với cephadm, bạn có thể dùng nhãn _no_schedule để tạm thời ngăn hệ thống tự động phân bổ dịch vụ lên một node cụ thể.

Tuy nhiên, bạn có thể gặp trường hợp kỳ lạ: ngay khi gỡ _no_schedule, node lập tức chuyển sang trạng thái “Offline”, dù bạn vẫn SSH được bằng IP và hệ thống hoạt động bình thường.

Bài viết này chia sẻ nguyên nhân, cách khắc phục và cách tránh gặp lại lỗi này – dưới dạng một tình huống thực tế trong môi trường production.

⚠️ Tình huống thực tế

✅ Khi có _no_schedule, mọi thứ bình thường:

ceph orch host ls

Trạng thái trước khi gỡ cờ _no_schedule

HOST              ADDR         LABELS              STATUS
CEPH-LAB-OSD-078  10.237.7.78  osd _no_schedule    OK

❌ Gỡ _no_schedule → Status thành Offline:

ceph orch host label rm CEPH-LAB-OSD-078 _no_schedule

✅ Khi không _no_schedule, Status thành Offline:

ceph orch host ls

Trạng thái sau khi gỡ cờ _no_schedule

HOST              ADDR         LABELS              STATUS
CEPH-LAB-OSD-078  10.237.7.78  osd                 Offline

🧪 Triệu chứng & kiểm tra

  • SSH bằng IP 10.237.7.78 → OK
  • SSH bằng hostname CEPH-LAB-OSD-078 → ❌ Không resolve được
  • Dù SSH được, cephadm không thể deploy container
  • Khi thêm bản ghi hostname vào /etc/hosts trên MON → Hoạt động lại bình thường

📌 Phân tích nguyên nhân

cephadm dựa vào tên host để kết nối

Khi gỡ _no_schedule, cephadm sẽ tìm cách:

  • Kết nối tới host theo hostname, không phải IP
  • Deploy các service (OSD, MON, MGR,…) qua SSH và podman/ceph-volume

→ Nếu tên host không resolve được → cephadm sẽ đánh dấu node là Offline

Hệ thống DNS hoặc /etc/hosts không đầy đủ

Ở farm này, không có bản ghi CEPH-LAB-OSD-078 trong /etc/hosts hay DNS nội bộ → Resolve hostname thất bại

Ở các farm khác, hệ thống DNS hoặc file hosts có cấu hình đầy đủ nên không gặp lỗi

🗂️ So sánh giữa các môi trường

Farm có lỗi Farm hoạt động bình thường
Không resolve được hostname Có bản ghi DNS hoặc /etc/hosts
SSH bằng hostname lỗi SSH bằng hostname OK
Gỡ _no_schedule là Offline Gỡ _no_schedule bình thường

🔧 Cách khắc phục

✅ Cách nhanh: Thêm vào /etc/hosts trên MON nodes

echo "10.237.7.78 CEPH-LAB-OSD-078" >> /etc/hosts

Áp dụng cho tất cả MON/MGR node để đảm bảo cephadm có thể resolve.

Lưu ý: cần thực hiện trên mọi node điều phối cephadm, không chỉ 1 node.

✅ Cách bền vững: Cấu hình hệ thống DNS nội bộ

  • Cập nhật DNS nội bộ hoặc sử dụng dịch vụ như dnsmasq, unbound
  • Thêm bản ghi CEPH-LAB-OSD-078 trỏ tới 10.237.7.78

✅ Kiểm tra hostname & ssh từ MON

ping -c1 CEPH-LAB-OSD-078
ssh cephadmin@CEPH-LAB-OSD-078

Nếu cả hai đều OK, bạn đã khắc phục thành công.

🔁 Cách tránh lỗi trong tương lai

  • Dùng IP để thêm host: ceph orch host add HOST IP LABEL
  • Nhưng cephadm vẫn yêu cầu hostname có thể resolve
  • Khi đặt tên node, nên đồng bộ hostname với hệ thống DNS/hosts

🧠 Sơ đồ ASCII mô tả quá trình

┌─────────────┐
│  MON Node   │
└──────┬──────┘
       │
       │ SSH tới hostname
       ▼
┌────────────────────────────┐
│ Resolve "CEPH-LAB-OSD-078" │──┐
└────────────────────────────┘  │
     ▲                          │
     │ (FAIL: không có DNS)     │
     ▼                          ▼
┌────────────┐          ┌────────────┐
│SSH thất bại│          │Node Offline│
└────────────┘          └────────────┘

✅ Tổng kết

Việc cần làm Lệnh/Thao tác
Xác minh lỗi ceph orch host ls
Kiểm tra SSH/IP ssh cephadmin@<IP>
Kiểm tra SSH/hostname ssh cephadmin@<hostname>
Khắc phục tạm thời Thêm vào /etc/hosts
Khắc phục lâu dài Thêm bản ghi DNS
Xác minh Ping hostname + ssh

✨ Ưu – Nhược điểm

Ưu điểm Nhược điểm
Xử lý nhanh chóng qua /etc/hosts Không bền vững nếu node nhiều
Có thể tự động hóa Cần đồng bộ với các MON khác
Không cần reset node Yêu cầu thao tác tay hoặc DNS nội bộ

📣 Lời khuyên

Khi triển khai Ceph bằng cephadm, hãy đảm bảo rằng tất cả hostname đều có thể resolve từ MON/MGR.

Bạn có thể:

  • Thiết lập DNS nội bộ
  • Duy trì ansible để sync file /etc/hosts
  • Dùng FQDN nếu hệ thống lớn
  • Kiểm tra định kỳ bằng script ping + ssh hostname từ MON

🏁 Kết luận

Trong môi trường Ceph dùng cephadm, sự phụ thuộc vào hostname có thể gây lỗi khó đoán nếu DNS hoặc file hosts không đầy đủ. Việc “node offline” sau khi gỡ _no_schedule là dấu hiệu rõ ràng rằng hostname không được resolve đúng cách.

Chìa khóa là đảm bảo hệ thống tên (name resolution) nhất quán và đầy đủ – điều tưởng nhỏ nhưng cực kỳ quan trọng trong các hệ thống distributed như Ceph.