Đến nội dung chính
Infra Notes
DOCS / UTF-8
Deployment // Triển khai hệ thốngceph

Ceph — Cluster Installation

DOC PATH deployments/ceph/cluster-installation

Doc Type
Deployment
Technology
ceph
Status
Active
Tags
CephcephadmpodmanOSD

Bài triển khai dùng Ubuntu Server 24.04 LTS, Ceph Tentacle 20.2.3, Podman 4.9.3, ba VM và một raw disk khoảng 15 GiB trên mỗi VM. Điều chỉnh phiên bản và tài nguyên theo yêu cầu của môi trường; không dùng cấu hình lab nhỏ làm cơ sở sizing cho production.

Thành phần Cấu hình trong bài
Orchestrator/runtime cephadm + Podman; Python 3, systemd, time sync, LVM2 và SSH sẵn sàng.
MON 3 daemon trên ba host, quorum 3/3.
MGR 2 daemon trên hai host, 1 active + 1 standby.
OSD 3 BlueStore OSD; mỗi host một data device, tách OS disk.
Management Network Orchestrator host address và SSH connectivity.
Public Network MON public addresses, client/OSD front traffic, Dashboard/API.
Cluster Network OSD back traffic: replication, recovery, backfill.

Chuẩn bị mapping hostname ↔ Management IP ↔ Public IP ↔ Cluster IP ↔ data disk cho từng host. Lấy tên interface và disk từ OS; đối chiếu inventory trước khi chọn device. Architecture trình bày topology; không cần dựng lại sơ đồ trong Installation.

Trên từng host, kiểm tra hostname, time sync, network và device dự kiến dùng cho OSD. wipefs -n chỉ đọc metadata; không dùng lệnh xóa ở bước này.

Terminal window
hostnamectl
cat /etc/os-release
ip -br link
ip -br addr
ip route
getent hosts <host-1> <host-2> <host-3>
timedatectl
chronyc tracking
podman info
lsblk -o NAME,SIZE,TYPE,FSTYPE,MOUNTPOINTS
wipefs -n <osd-device>
pvs
vgs
lvs

OS disk, partition đang mount, LVM volume hoặc device đã thuộc BlueStore không phù hợp để tạo OSD mới.

Kiểm tra kết nối giữa các host trên cả ba mạng, phân giải DNS và truy cập registry. Trong mô hình triển khai, default route đi qua Management Network. Chrony phải đồng bộ, Leap status=Normal; clock skew ảnh hưởng MON dù ping vẫn thành công.

Clone VM có thể sao chép cả machine-id và SSH host key. Kiểm tra trên từng host:

Terminal window
cat /etc/machine-id
ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pub

Nếu trùng, xử lý VM identity trước bootstrap. Tạo lại machine-id/SSH host keys theo quy trình của OS, kiểm tra sshd -t và reboot trên VM clone mới; không áp dụng máy móc cho node đã chạy workload. Sau đó xác nhận mỗi host có identity riêng, SSH hoạt động và time sync vẫn đạt.

Trên tất cả host, kiểm tra Python 3, systemd, LVM2, SSH và Chrony. Ví dụ cài Podman từ OS repository trên Ubuntu:

Terminal window
python3 --version
systemctl --version
systemctl is-active ssh
systemctl is-active chrony
apt update
apt install -y podman
podman --version
podman info

Quy trình này chọn Podman, không dùng --docker. Giữ runtime nhất quán trên các host để dễ kiểm tra và bảo trì.

Quy trình dùng standalone cephadm. Nếu APT source theo phiên bản hoặc bản phân phối trả 404, kiểm tra repository hỗ trợ trước khi chuyển cách cài. <ceph-release> là placeholder; chọn release/image tương thích với môi trường.

Terminal window
curl --fail --location --output ./cephadm \
https://download.ceph.com/rpm-<ceph-release>/el9/noarch/cephadm
chmod +x ./cephadm
./cephadm version
# Chỉ install sau khi xác nhận đúng source/version
install -o root -g root -m 0755 ./cephadm /usr/local/sbin/cephadm
hash -r
command -v cephadm
cephadm version
cephadm check-host --expect-hostname <host-1>

Bản cephadm từ distro có thể được PATH ưu tiên hơn bản standalone. Kiểm tra command -v, package inventory và version; nếu gỡ package cũ, xem trước dependency impact. Không ghi đè/gỡ mọi package Ceph chỉ để xử lý một PATH mismatch.

Terminal window
cephadm --image quay.io/ceph/ceph:v<ceph-release> pull
cephadm --image quay.io/ceph/ceph:v<ceph-release> inspect-image
cephadm --image quay.io/ceph/ceph:v<ceph-release> shell -- ceph --version
cephadm list-networks
ss -lntup

Kết quả mong đợi: host check đạt, CLI trong container đúng phiên bản đã chọn, Public/Cluster CIDR xuất hiện trên đúng interface. Trước bootstrap, kiểm tra các port 3300/6789 của MON và 8443 của Dashboard chưa bị chiếm; thiết lập firewall theo network plan.

Bootstrap từ MON public address. Nếu admin host không cài ceph CLI, dùng cephadm shell -- ceph … cho mọi lệnh Ceph phía dưới.

Terminal window
cephadm --image quay.io/ceph/ceph:v<ceph-release> bootstrap \
--mon-ip <mon-public-ip> \
--cluster-network <cluster-network-cidr> \
--skip-monitoring-stack

--skip-monitoring-stack giảm thành phần khởi tạo ban đầu, Dashboard vẫn được tạo; bỏ tùy chọn này nếu muốn bootstrap cả monitoring stack. Giai đoạn này tạo FSID, MON/MGR đầu tiên, config/keyring và cephadm SSH key, chưa provision raw OSD disk.

Terminal window
cephadm shell -- ceph -s
cephadm shell -- ceph health detail
cephadm shell -- ceph fsid
cephadm shell -- ceph mon stat
cephadm shell -- ceph mgr stat
cephadm shell -- ceph config dump

Trước khi provision OSD, HEALTH_WARN có thể do số OSD thấp hơn replica size; kiểm tra health detail để loại trừ warning khác. Public Network phải chứa MON IP, Cluster Network đúng CIDR đã chọn. Bảo vệ admin keyring; không đưa secret vào ghi chú.

Cài public key của cluster vào SSH account được chọn trên host mới. Ví dụ dùng root qua Management IP; chỉ áp dụng khi chính sách SSH cho phép:

Terminal window
ssh-copy-id -f -i /etc/ceph/ceph.pub root@<management-ip-2>
ssh-copy-id -f -i /etc/ceph/ceph.pub root@<management-ip-3>
ceph orch host add <host-2> <management-ip-2>
ceph orch host add <host-3> <management-ip-3>
ceph orch host ls

Tên host phải khớp hostname thực tế; xác nhận SSH/runtime trên từng host trước khi thêm. Host address trong orchestrator phục vụ management, không cần đổi sang MON Public address. Nếu host đầu tiên có address khác network plan, kiểm tra rồi cập nhật đúng Management IP bằng host-management workflow.

Terminal window
ceph orch apply mon --placement="<host-1>,<host-2>,<host-3>" --dry-run
ceph orch apply mgr --placement="<host-1>,<host-2>" --dry-run
ceph orch apply mon --placement="<host-1>,<host-2>,<host-3>"
ceph orch apply mgr --placement="<host-1>,<host-2>"
ceph quorum_status -f json-pretty
ceph mgr stat

Explicit placement giữ daemon trên đúng control plane host khi inventory mở rộng; cần xác định cả số lượng và vị trí dịch vụ. Kết quả mong đợi: quorum 3/3, MGR khả dụng với một standby; active MGR có thể chuyển host khi failover.

Chỉ tạo OSD sau khi orchestrator báo device Available và preflight không thấy filesystem/LVM cũ.

Terminal window
ceph orch device ls --refresh --wide
ceph orch daemon add osd <host-1>:<osd-device-1>
# Kiểm tra OSD vừa tạo trước khi tiếp tục host kế tiếp
ceph osd tree
ceph orch daemon add osd <host-2>:<osd-device-2>
ceph osd tree
ceph orch daemon add osd <host-3>:<osd-device-3>

Tạo từng OSD, chờ nó up và in, rồi mới tiếp tục device tiếp theo. Cách này khoanh vùng lỗi nhanh hơn provisioning hàng loạt.

Provisioning ghi metadata lên disk mục tiêu. Chọn từng device cụ thể thay vì --all-available-devices để tránh service rule tự sử dụng disk mới ngoài dự kiến. Sau provisioning, device chuyển sang AVAILABLE=No và có LVM/BlueStore metadata là trạng thái mong đợi.

Terminal window
ceph orch ps --daemon-type osd --refresh
ceph orch device ls --refresh --wide
ceph osd metadata <osd-id> -f json-pretty

Đối chiếu hostname, front_addr với Public Network, back_addr với Cluster Network; CRUSH tree phải đặt OSD dưới đúng host. OSD IDs do cluster cấp, không suy ra từ số thứ tự host. Luôn lấy OSD ID từ inventory thực tế; một OSD thay thế có thể nhận ID mới.

Terminal window
ceph -s
ceph health detail
ceph mon stat
ceph mgr stat
ceph osd tree
ceph orch ps

Đọc kết quả theo từng lớp: health detail, MON quorum, MGR standby, OSD up/in và host failure domain trong CRUSH tree. Kiểm tra Dashboard chỉ là lớp xác nhận bổ sung, không thay thế CLI validation.

Lấy Dashboard endpoint bằng ceph mgr services. Biểu đồ IOPS/latency có thể chưa có dữ liệu khi monitoring stack chưa được cấu hình.

Triệu chứng Nguyên nhân cần kiểm tra Cách xác nhận / xử lý
APT Release file 404 Repository không có release cho phiên bản/OS đã chọn. Kiểm tra source được hỗ trợ hoặc chọn standalone cephadm đúng version.
Gọi nhầm cephadm version Distro package/PATH che standalone. Kiểm tra command -v, version và package inventory.
Bash vẫn trỏ binary đã gỡ Command hash còn path cũ. hash -r, kiểm tra lại path.
ceph: command not found trên host Host chưa cài CLI phù hợp. Chạy cluster admin bằng cephadm shell -- ceph ....
Host add/daemon deployment lỗi SSH, hostname hoặc prerequisite chưa đúng. Kiểm tra management path, public key và host check.
Device Available=No sau tạo OSD Disk đã thuộc BlueStore. Đối chiếu OSD metadata; không wipe disk đang phục vụ dữ liệu.
Chart Dashboard trống Bootstrap bỏ monitoring stack. Triển khai/validate monitoring trong Operations Reference.

Phạm vi quy trình kết thúc ở bước xác nhận cài đặt Ceph; triển khai compute và tích hợp OpenStack không nằm trong quy trình này.