Triển khai CEPH Cluster: Hướng dẫn Chi tiết từ A đến Z

Giới thiệu về CEPH

CEPH là hệ thống lưu trữ phân tán mã nguồn mở, cung cấp khả năng mở rộng vô hạn, hiệu suất cao và độ tin cậy vượt trội. Bài viết này hướng dẫn chi tiết cách triển khai CEPH cluster trong môi trường production với các node được phân tách rõ ràng theo chức năng.

Yêu cầu Hệ thống

Phần cứng Tối thiểu

  • Monitor Nodes: 3 node, mỗi node 2 CPU, 4GB RAM, 40GB disk

  • OSD Nodes: 4 node, mỗi node 4 CPU, 8GB RAM, multiple disks

  • Network: 10Gbps recommended cho cả public và cluster network

Phân bổ Disk

Host Disk Type Số lượng Dung lượng
data1 SSD 3 300GB each
data2 SSD 3 300GB each
data3 HDD 2 250GB each
data4 HDD 2 250GB each

Quy hoạch Mạng

Sơ đồ Mạng

Public Network: 172.10.10.0/24 - Client communication
Cluster Network: 172.10.20.0/24 - Data replication/rebalancing

IP Allocation

Host IP SSH Public IP Cluster IP
mon1 10.10.210.81 172.10.10.81 172.10.20.81
mon2 10.10.210.82 172.10.10.82 172.10.20.82
mon3 10.10.210.83 172.10.10.83 172.10.20.83
data1 10.10.210.85 172.10.10.85 172.10.20.85
data2 10.10.210.86 172.10.10.86 172.10.20.86
data3 10.10.210.87 172.10.10.87 172.10.20.87
data4 10.10.210.88 172.10.10.88 172.10.20.88
## Chuẩn bị Hệ thống

### Cập nhật và Cài đặt Gói cơ bản

Thực hiện trên tất cả các node:

# Cập nhật hệ thống
sudo apt -y update && sudo apt -y upgrade

# Cài đặt các gói cần thiết
sudo apt -y install chrony net-tools jq curl wget

# Cấu hình Chrony
sudo systemctl restart chronyd
sudo timedatectl set-timezone Asia/Ho_Chi_Minh

# Tắt auto-upgrade
sudo sed -i 's/1/0/g' /etc/apt/apt.conf.d/20auto-upgrades

Cấu hình Hostname và Network

Trên từng node, cấu hình hostname cho phù hợp:

# Trên mon1
sudo hostnamectl set-hostname mon1

# Trên mon2
sudo hostnamectl set-hostname mon2

# Trên mon3
sudo hostnamectl set-hostname mon3

# Trên các data node
sudo hostnamectl set-hostname data1
# ... tương tự cho data2, data3, data4

Cấu hình /etc/hosts

Thêm các mục sau vào /etc/hosts trên tất cả các node:

172.10.10.81 mon1
172.10.10.82 mon2
172.10.10.83 mon3
172.10.10.85 data1
172.10.10.86 data2
172.10.10.87 data3
172.10.10.88 data4

Cài đặt Docker

CEPH sử dụng container để triển khai các services:

# Thêm Docker repository
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# Cài đặt Docker
sudo apt update -y
sudo apt -y install docker-ce docker-ce-cli containerd.io

# Khởi động và kích hoạt Docker
sudo systemctl enable docker
sudo systemctl start docker

Cài đặt CEPH

Cài đặt Cephadm trên mon1

# Thêm repository Ceph
wget -q -O- 'https://download.ceph.com/keys/release.asc' | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/cephadm.gpg
echo "deb https://download.ceph.com/debian-reef/ $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/cephadm.list > /dev/null

# Cài đặt cephadm
sudo apt update
sudo apt -y install cephadm

Bootstrap Cluster

# Khởi tạo cluster
sudo cephadm bootstrap \
  --mon-ip 172.10.10.81 \
  --cluster-network 172.10.20.0/24 \
  --initial-dashboard-user admin \
  --initial-dashboard-password 'Cloud360.vn'

# Cài đặt công cụ quản lý Ceph
sudo apt -y install ceph-common

Cấu hình SSH Key Distribution

# Cài đặt sshpass
sudo apt -y install sshpass

# Phân phối SSH key đến các node
sshpass -p 'MAuySZ0aC' ssh-copy-id -f -i /etc/ceph/ceph.pub -o StrictHostKeyChecking=no root@mon2
sshpass -p 'MAuySZ0aC' ssh-copy-id -f -i /etc/ceph/ceph.pub -o StrictHostKeyChecking=no root@mon3
sshpass -p 'MAuySZ0aC' ssh-copy-id -f -i /etc/ceph/ceph.pub -o StrictHostKeyChecking=no root@data1
sshpass -p 'MAuySZ0aC' ssh-copy-id -f -i /etc/ceph/ceph.pub -o StrictHostKeyChecking=no root@data2
sshpass -p 'MAuySZ0aC' ssh-copy-id -f -i /etc/ceph/ceph.pub -o StrictHostKeyChecking=no root@data3
sshpass -p 'MAuySZ0aC' ssh-copy-id -f -i /etc/ceph/ceph.pub -o StrictHostKeyChecking=no root@data4

Thêm Host vào Cluster

# Thêm các host vào cluster
ceph orch host add mon2 172.10.10.82
ceph orch host add mon3 172.10.10.83
ceph orch host add data1 172.10.10.85
ceph orch host add data2 172.10.10.86
ceph orch host add data3 172.10.10.87
ceph orch host add data4 172.10.10.88

# Gán nhãn cho các host
ceph orch host label add mon1 _admin
ceph orch host label add mon2 _admin
ceph orch host label add mon3 _admin
ceph orch host label add data1 osd
ceph orch host label add data2 osd
ceph orch host label add data3 osd
ceph orch host label add data4 osd

Triển khai Monitor Services

# Triển khai MON trên 3 node
ceph orch apply mon --placement="mon1,mon2,mon3"

# Kiểm tra trạng thái MON
ceph mon stat

Quản lý OSD

Kiểm tra Devices

# Liệt kê tất cả devices trong cluster
ceph orch device ls

Thêm OSD Devices

# Thêm OSD cho data1 (SSD)
ceph orch daemon add osd data1:/dev/sdb
ceph orch daemon add osd data1:/dev/sdc
ceph orch daemon add osd data1:/dev/sdd

# Thêm OSD cho data2 (SSD)
ceph orch daemon add osd data2:/dev/sdb
ceph orch daemon add osd data2:/dev/sdc
ceph orch daemon add osd data2:/dev/sdd

# Thêm OSD cho data3 (HDD)
ceph orch daemon add osd data3:/dev/sdb
ceph orch daemon add osd data3:/dev/sdc

# Thêm OSD cho data4 (HDD)
ceph orch daemon add osd data4:/dev/sdb
ceph orch daemon add osd data4:/dev/sdc

Điều chỉnh Device Class

# Thiết lập OSD class cho SSD (OSD 0-5)
for osd_id in {0..5}; do
  ceph osd crush rm-device-class $osd_id
  ceph osd crush set-device-class ssd $osd_id
done

# Thiết lập OSD class cho HDD (OSD 6-9)
for osd_id in {6..9}; do
  ceph osd crush rm-device-class $osd_id
  ceph osd crush set-device-class hdd $osd_id
done

Cấu hình Cluster

Thiết lập Ceph Configuration

# Tắt autoscaling
ceph config set global osd_pool_default_pg_autoscale_mode off

# Tắt balancer
ceph balancer off

# Thiết lập kích thước replication
ceph config set global osd_pool_default_size 2
ceph config set global osd_pool_default_min_size 1

# Cấu hình recovery ratio
ceph config set global mon_osd_min_in_ratio 0.5

# Tắt memory autotune
ceph config set osd osd_memory_target_autotune false

Tạo CRUSH Rules

# Tạo CRUSH rule cho SSD
ceph osd crush rule create-replicated ssd_rule default host ssd

# Tạo CRUSH rule cho HDD
ceph osd crush rule create-replicated hdd_rule default host hdd

Kiểm tra và Giám sát

Kiểm tra Trạng thái Cluster

# Trạng thái tổng quan
ceph -s

# Kiểm tra health
ceph health detail

# Xem cây OSD
ceph osd tree

# Kiểm tra dung lượng
ceph df

Kiểm tra Services

# Liệt kê tất cả services
ceph orch ls

# Kiểm tra host
ceph orch host ls

# Kiểm tra OSD
ceph osd stat

Monitoring với Dashboard

Truy cập Ceph Dashboard tại: https://mon1:8443

  • Username: admin

  • Password: Cloud360.vn

Useful Commands for Maintenance

# Xem thông tin OSD
ceph osd df tree

# Kiểm tra PG distribution
ceph pg stat

# Xem thông tin monitor
ceph mon stat

# Kiểm tra usage detail
ceph osd pool ls detail

Troubleshooting Common Issues

OSD Failure

# Restart OSD
ceph orch daemon restart osd.<osd_id>

# Redeploy OSD
ceph orch daemon rm osd.<osd_id>
ceph orch daemon add osd <host>:<device>

Disk Issues

# Kiểm tra disk health
ceph device ls

# Scan devices
ceph orch device scan

Kết luận

Bạn đã triển khai thành công CEPH cluster với cấu hình production-ready. Cluster đã được tối ưu hóa với:

  • Phân tách rõ ràng giữa public và cluster network

  • OSD được phân loại theo device class (SSD/HDD)

  • Cấu hình replication phù hợp cho môi trường production

  • Hệ thống monitoring qua dashboard

Tác giả: Mạnh Hoàng

Tôi là Hoàng Mạnh, người sáng lập blog SysadminSkills.com. Tôi viết về quản trị hệ thống, bảo mật máy chủ, DevOps và cách ứng dụng AI để tự động hóa công việc IT. Blog này là nơi tôi chia sẻ những gì đã học được từ thực tế – đơn giản, ngắn gọn và áp dụng được ngay.

3 Trả lời “Triển khai CEPH Cluster: Hướng dẫn Chi tiết từ A đến Z

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *