Chuyển tới nội dung chính

🚀 Cài Đặt Ceph Cluster

📋 Giới Thiệu

Ceph là một nền tảng lưu trữ phân tán mã nguồn mở, cung cấp:

  • Object storage
  • Block storage
  • File system storage
  • Khả năng mở rộng tới exabyte
  • Không có single point of failure

💻 Yêu Cầu Hệ Thống

Môi Trường Lab

  • OS: CentOS 8
  • 3 Node với 3 ổ đĩa bổ sung (sdb, sdc, sdd)

🛠️ Các Bước Cài Đặt

1. Chuẩn Bị Môi Trường

# Đăng nhập root và thêm hosts
sudo -i
sudo tee -a /etc/hosts<<EOF
192.168.1.231 ceph-01 ceph-01.localdomain
192.168.1.232 ceph-02 ceph-02.localdomain
192.168.1.233 ceph-03 ceph-03.localdomain
EOF

# Cấu hình hostname cho 3 node
hostname ceph-01 # Trên node 1
ssh ceph-02 hostname ceph-02 # Trên node 2
ssh ceph-03 hostname ceph-03 # Trên node 3

# Thiết lập SSH không cần password
ssh-keygen
ssh-copy-id ceph-01
ssh-copy-id ceph-02
ssh-copy-id ceph-03

# Cập nhật hệ thống
dnf update -y
dnf upgrade -y

# Cài đặt các gói cần thiết
dnf install -y python3 lvm2 podman

2. Cài Đặt Cephadm

# Tải cephadm
curl --silent --remote-name --location https://github.com/ceph/ceph/raw/pacific/src/cephadm/cephadm

# Cấp quyền thực thi
chmod +x cephadm

# Cài đặt cephadm
./cephadm add-repo --release pacific
./cephadm install

# Cài đặt ceph-common
dnf install -y ceph-common

# Kiểm tra cephadm đã trong PATH
which cephadm

3. Bootstrap Ceph Cluster

# Khởi tạo cluster trên node đầu tiên
cephadm bootstrap --mon-ip 192.168.1.231

Output mẫu:

Verifying podman|docker is present...
Verifying lvm2 is present...
Verifying time synchronization is in place...
Unit chronyd.service is enabled and running
Repeating the final host check...
podman ✓
systemctl ✓
lvm2 ✓
chronyd ✓
Host looks OK
Cluster fsid: 588df728-316c-11ec-b956-005056aea762
Verifying IP 192.168.1.231 port 3300 ...
Mon IP 192.168.1.231 is in CIDR network 192.168.1.0/24
Mon IP 192.168.1.231 port 3300 is available
...
Dashboard is now available at:
URL: https://ceph-01:8443/
User: admin
Password: 6vwjmv7xr5

4. Thêm Các Node Vào Cluster

# Copy SSH key từ node đầu tiên
ssh-copy-id -f -i /etc/ceph/ceph.pub root@ceph-02
ssh-copy-id -f -i /etc/ceph/ceph.pub root@ceph-03

# Thêm node vào cluster
ceph orch host add ceph-02 192.168.1.232
ceph orch host add ceph-03 192.168.1.233

# Kiểm tra các node
ceph orch host ls

Output mẫu:

HOST     ADDR           LABELS  STATUS  
ceph-01 192.168.1.231 _admin
ceph-02 192.168.1.232
ceph-03 192.168.1.233

5. Triển Khai OSDs

# Kiểm tra thiết bị lưu trữ
ceph orch device ls

Output mẫu:

Hostname  Path      Type  Serial  Size   Health   Ident  Fault  Available
ceph-01 /dev/sdb ssd 10.7G Unknown N/A N/A Yes
ceph-01 /dev/sdc ssd 10.7G Unknown N/A N/A Yes
ceph-01 /dev/sdd ssd 10.7G Unknown N/A N/A Yes
ceph-02 /dev/sdb ssd 10.7G Unknown N/A N/A Yes
ceph-02 /dev/sdc ssd 10.7G Unknown N/A N/A Yes
ceph-02 /dev/sdd ssd 10.7G Unknown N/A N/A Yes
ceph-03 /dev/sdb ssd 10.7G Unknown N/A N/A Yes
ceph-03 /dev/sdc ssd 10.7G Unknown N/A N/A Yes
ceph-03 /dev/sdd ssd 10.7G Unknown N/A N/A Yes
# Kiểm tra trạng thái OSD sau khi apply
ceph osd tree

Output mẫu:

ID  CLASS  WEIGHT   TYPE NAME         STATUS  REWEIGHT  PRI-AFF
-1 0.08817 root default
-5 0.02939 host ceph-01
1 ssd 0.00980 osd.1 up 1.00000 1.00000
4 ssd 0.00980 osd.4 up 1.00000 1.00000
7 ssd 0.00980 osd.7 up 1.00000 1.00000
-7 0.02939 host ceph-02
0 ssd 0.00980 osd.0 up 1.00000 1.00000
3 ssd 0.00980 osd.3 up 1.00000 1.00000
6 ssd 0.00980 osd.6 up 1.00000 1.00000
-3 0.02939 host ceph-03
2 ssd 0.00980 osd.2 up 1.00000 1.00000
5 ssd 0.00980 osd.5 up 1.00000 1.00000
8 ssd 0.00980 osd.8 up 1.00000 1.00000

6. Triển Khai Monitor Daemon

# Thêm ceph-mon vào tất cả node
ceph orch apply mon --placement="ceph-01,ceph-02,ceph-03"

7. Triển Khai Manager Daemon

# Thêm ceph-mgr vào tất cả node
ceph orch apply mgr --placement="ceph-01,ceph-02,ceph-03"

8. Gán Label Cho Các Node

# Gán label osd-node
ceph orch host label add ceph-01 osd-node
ceph orch host label add ceph-02 osd-node
ceph orch host label add ceph-03 osd-node

# Gán label mon
ceph orch host label add ceph-01 mon
ceph orch host label add ceph-02 mon
ceph orch host label add ceph-03 mon

# Gán label mgr
ceph orch host label add ceph-01 mgr
ceph orch host label add ceph-02 mgr
ceph orch host label add ceph-03 mgr

💾 Quản Lý Ổ Đĩa Trong Ceph

1. Kiểm Tra Ổ Đĩa Có Sẵn

# Liệt kê tất cả ổ đĩa
lsblk

# Kiểm tra ổ đĩa có thể sử dụng cho Ceph
ceph orch device ls

Output mẫu:

# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 50G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 49G 0 part /
sdb 8:16 0 10G 0 disk
sdc 8:32 0 10G 0 disk
sdd 8:48 0 10G 0 disk

2. Yêu Cầu Về Ổ Đĩa

cảnh báo

Các điều kiện ổ đĩa có thể sử dụng cho Ceph:

  • Chưa được mount
  • Không chứa partition table
  • Không được sử dụng bởi các service khác
  • Kích thước tối thiểu 5GB

3. Chuẩn Bị Ổ Đĩa Mới

# Xóa partition table (cẩn thận khi sử dụng)
sudo sgdisk --zap-all /dev/sdX

# Xóa filesystem signature
sudo wipefs -a /dev/sdX

4. Thêm OSD Mới

4.1 Thêm Tự Động

# Thêm tất cả ổ đĩa có sẵn
ceph orch apply osd --all-available-devices

# Kiểm tra tiến trình
ceph orch osd status

4.2 Thêm Thủ Công

# Tạo spec file
cat > osd_spec.yaml << EOF
service_type: osd
service_id: osd_manual
placement:
hosts:
- ceph-01
- ceph-02
- ceph-03
data_devices:
paths:
- /dev/sdb
- /dev/sdc
- /dev/sdd
EOF

# Apply spec
ceph orch apply -i osd_spec.yaml

5. Xóa OSD

# Liệt kê OSD
ceph osd tree

# Đặt OSD out khỏi cluster
ceph osd out osd.{id}

# Chờ dữ liệu được rebalance
ceph -s # Kiểm tra trạng thái

# Xóa OSD
ceph orch osd rm {id} [--replace] [--force]

Output mẫu khi xóa OSD:

# Trước khi xóa
Remapped 1 pgs with 42 objects
Complete: 42/42 objects
2023-01-01 10:00:00.123 INFO Success

# Sau khi xóa
Removed osd.{id}

6. Thay Thế Ổ Đĩa

# Đánh dấu OSD để thay thế
ceph orch device maintenance on {hostname} /dev/sdX

# Chờ dữ liệu được di chuyển
ceph -w

# Xóa OSD cũ
ceph orch osd rm {id} --replace

# Thêm ổ đĩa mới
ceph orch daemon add osd {hostname}:/dev/sdY

7. Mở Rộng Cluster

# Thêm node mới
ceph orch host add {new-host} {ip-address}

# Kiểm tra ổ đĩa trên node mới
ceph orch device ls {new-host}

# Thêm OSD từ node mới
ceph orch apply osd --all-available-devices
mẹo

Các Thực Hành Tốt Nhất:

  • Sử dụng ổ đĩa cùng loại và dung lượng trong một pool
  • Luôn kiểm tra health status sau khi thêm/xóa OSD
  • Đảm bảo đủ không gian trước khi xóa OSD
  • Sử dụng SSD cho journal/cache tiering

✅ Kiểm Tra Sau Cài Đặt

1. Kiểm Tra Trạng Thái Cluster

ceph -s

Output mẫu:

cluster:
id: 588df728-316c-11ec-b956-005056aea762
health: HEALTH_OK
services:
mon: 3 daemons, quorum ceph-01,ceph-02,ceph-03 (age 5m)
mgr: ceph-01.wgdjcn(active, since 41m), standbys: ceph-02.rmltzq
osd: 9 osds: 9 up, 9 in
data:
pools: 0 pools, 0 pgs
objects: 0 objects, 0 B
usage: 9 GiB used, 87 GiB / 96 GiB avail
pgs:

2. Kiểm Tra Services

ceph orch ps

Output mẫu:

NAME                  HOST     PORTS        STATUS         REFRESHED  AGE  MEM USE  MEM LIM  VERSION  IMAGE ID      CONTAINER ID
mgr.ceph-01.wgdjcn ceph-01 *:9283 running (41m) 6s ago 41m 449M - 16.2.6 02a72919e474 c58a64249f9b
mon.ceph-01 ceph-01 running (41m) 6s ago 41m 209M 2048M 16.2.6 02a72919e474 952d7
mon.ceph-02 ceph-02 running (36m) 7s ago 36m 208M 2048M 16.2.6 02a72919e474 f2d22
mon.ceph-03 ceph-03 running (35m) 8s ago 35m 207M 2048M 16.2.6 02a72919e474 bcc00
osd.0 ceph-02 running (31m) 6s ago 31m 411M 4096M 16.2.6 02a72919e474 e27d1
osd.1 ceph-01 running (31m) 6s ago 31m 411M 4096M 16.2.6 02a72919e474 e27d2

3. Kiểm Tra Dashboard

  • URL: https://[MON-IP]:8443/
  • Default user: admin
  • Password: Từ output của lệnh bootstrap

4. Các Lỗi Thường Gặp

  • HEALTH_WARN: Monitor clock skew
  • HEALTH_WARN: OSD full/nearfull
  • HEALTH_ERR: Insufficient standby MDS daemons

🔍 Xác Minh Cài Đặt

# Kiểm tra service
systemctl status ceph-\*.service
systemctl status ceph-osd@\*

# Kiểm tra log
ceph log last 100

📚 Tài Liệu Tham Khảo