# Docker中怎么部署Ceph存儲集群
## 前言
Ceph作為開源的分布式存儲系統,以其高可靠性、高擴展性和高性能著稱。傳統部署方式需要多臺物理機或虛擬機,而借助Docker容器化技術,我們可以快速搭建Ceph集群環境。本文將詳細介紹在Docker環境中部署Ceph存儲集群的全過程。
---
## 一、環境準備
### 1.1 硬件要求
- 至少3個節點(推薦4節點:1管理節點+3OSD節點)
- 每個節點建議配置:
- 4核CPU
- 8GB內存
- 50GB系統盤 + 額外未格式化磁盤(用于OSD)
- 千兆網絡環境
### 1.2 軟件要求
- Docker 20.10+
- Docker Compose 1.29+
- Ceph容器鏡像(推薦使用官方`ceph/daemon`)
```bash
# 檢查Docker版本
docker --version
docker-compose --version
# 拉取Ceph鏡像
docker pull ceph/daemon:latest-octopus
docker network create --subnet=172.18.0.0/16 ceph-net
主機名 | IP地址 | 角色 |
---|---|---|
ceph-mon1 | 172.18.0.11 | Monitor + Manager |
ceph-osd1 | 172.18.0.21 | OSD + MDS + RGW |
ceph-osd2 | 172.18.0.22 | OSD |
ceph-osd3 | 172.18.0.23 | OSD |
docker run -d --name ceph-mon1 \
--net ceph-net --ip 172.18.0.11 \
-e MON_IP=172.18.0.11 \
-e CEPH_PUBLIC_NETWORK=172.18.0.0/16 \
-v /etc/ceph:/etc/ceph \
-v /var/lib/ceph/:/var/lib/ceph/ \
ceph/daemon:latest-octopus mon
docker exec ceph-mon1 ceph -s
預期輸出應顯示mon: 1 daemons
的健康狀態
# 在每個OSD節點上執行
lsblk # 確認磁盤路徑(如/dev/sdb)
docker run -d --name ceph-osd1 \
--net ceph-net --ip 172.18.0.21 \
--privileged=true \
--pid=host \
-v /dev/:/dev/ \
-v /etc/ceph:/etc/ceph \
-v /var/lib/ceph/:/var/lib/ceph/ \
-e OSD_DEVICE=/dev/sdb \
-e OSD_TYPE=disk \
ceph/daemon:latest-octopus osd
#!/bin/bash
for node in 21 22 23; do
docker run -d --name ceph-osd${node} \
--net ceph-net --ip 172.18.0.${node} \
... # 同上參數
done
docker run -d --name ceph-mds1 \
--net ceph-net \
-v /etc/ceph:/etc/ceph \
-v /var/lib/ceph/:/var/lib/ceph/ \
ceph/daemon:latest-octopus mds
docker run -d --name ceph-rgw1 \
--net ceph-net \
-p 8080:8080 \
-v /etc/ceph:/etc/ceph \
-v /var/lib/ceph/:/var/lib/ceph/ \
ceph/daemon:latest-octopus rgw
docker exec ceph-mon1 ceph config generate-minimal-conf > /etc/ceph/ceph.conf
[global]
fsid = $(docker exec ceph-mon1 ceph fsid)
mon initial members = ceph-mon1
mon host = 172.18.0.11
public network = 172.18.0.0/16
cluster network = 172.18.0.0/16
osd pool default size = 3
osd pool default min size = 1
docker exec ceph-mon1 ceph osd pool create rbd_pool 128 128
docker exec ceph-mon1 ceph osd pool application enable rbd_pool rbd
docker exec ceph-mon1 ceph -s
健康狀態應為HEALTH_OK
docker exec ceph-mon1 ceph osd tree
docker exec ceph-mon1 rados bench -p rbd_pool 10 write --no-cleanup
version: '3'
services:
mon:
image: ceph/daemon:latest-octopus
command: mon
environment:
- MON_IP=172.18.0.11
- CEPH_PUBLIC_NETWORK=172.18.0.0/16
networks:
ceph-net:
ipv4_address: 172.18.0.11
volumes:
- /etc/ceph:/etc/ceph
- /var/lib/ceph:/var/lib/ceph
osd1:
image: ceph/daemon:latest-octopus
command: osd
environment:
- OSD_DEVICE=/dev/sdb
# 其他參數...
networks:
ceph-net:
driver: bridge
ipam:
config:
- subnet: 172.18.0.0/16
/var/lib/ceph/mon/
目錄權限docker logs ceph-mon1
dmesg | grep ceph
docker exec ceph-mon1 ping 172.18.0.21
數據持久化:
--mount
代替-v
綁定掛載監控方案:
docker run -d --name ceph-grafana \
-p 3000:3000 \
-v /etc/ceph:/etc/ceph \
ceph/daemon:latest-octopus grafana
備份策略:
/etc/ceph
和/var/lib/ceph/bootstrap-*
目錄ceph-volume
工具導出OSD數據通過Docker部署Ceph集群大幅簡化了環境搭建過程,但需要注意: - 生產環境建議使用Kubernetes編排 - OSD性能對磁盤IO敏感,建議使用SSD - 網絡延遲會顯著影響集群性能
附錄: - Ceph官方文檔 - Docker存儲驅動選擇指南 “`
注:實際部署時請根據具體環境調整參數,本文示例基于Ceph Octopus版本。建議先在測試環境驗證后再應用于生產環境。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。