🚀 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
warning
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
tip
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