應用ceph技術打造軟體定義儲存新局
TRANSCRIPT
打造軟體定義儲存新局應用 Ceph技術
Alex Lau ( 劉俊賢 )Software [email protected]
SUSE Enterprise Storage 4
SUSE 領先提供企業級 cephfs 及 iSCSI 連接 SES4. 用戶可以直接利用 TCP/IP 連接 iSCSI 協議和 cephfs. iSCSI Target 驅動建立於 RDB 上( RADOS block device ). 任何 iSCSI Initiator 可以經過網絡連接 SES4
基本 ceph 叢集
LIBRADOS
OSD MON
OSD
OSD
MON
MON
MDS
MDS
MDS
RADOS對象
塊
文件介面
CEPHFS
RDB
RADOSGW
介面 :‒ 對象‒ 塊‒ 文件
MON:‒ 叢集 Map
OSD:‒ 對象數據
MDS:‒ cephfs
Ceph Monitor
Paxos RoleProposers
Acceptors
Learners
Leader
Mon
OSDMAP
MONMAP
PGMAP
CRUSHMAP
Paxos Service
Paxos
LevelDB
K/V K/V K/V
Log
…
ObjectStore Daemon
FileStore
OSD
OSDOSD OSD
PG PG PG PG …
Object Store
FileStore
FileJournal
DBObjectMap
低層 IO 操作FileJournal:
‒ 數據完整DBobjectMap:
‒ KeyValue map 給寫功能
FileStore 後台
FileStore
OSD
Disk Disk Disk
BtrfsXFS ext4
FileStore
OSD
FileStore
OSD
OSD MON
OSD
OSD
MON
MON
RADOS
OSD 管理數據安全所有寫操作在文件系統上 :
‒ XFS, BTRFS
ACID:‒ 保護數據‒ Atomicity, Consistency,
Isolation, Durability
BlueFS
META
DataDataData RocksDB
Allocator
Block Block Block
BlueStore 後台 BlueStore
Rocksdb‒ 對象 Metadata
‒ ceph Key/Value 數據Block 設備
‒ 數據直接讀寫不再需要文件系統
‒ 寫操作減半
cephfs MeatData Server
OSD MON
OSD
OSD
MON
MON
MDS
MDS
MDS
RADOS
CephFSClient
META
DataDataData
MDS 存數據在 RADOS‒ 文作 , 目錄
POSIX 文件系統相容上不提供文件內容只需要當使用 cephfs
高可用性和可擴展性
Ceph 對象關口
LIBRADOS
OSD MON
OSD
OSD
MON
MON
RADOS
RADOSGW
RADOSGW
S3 API
Swift API
RESTful 關口連接 ceph‒ S3 相容‒ Swift 相容
CephFS
POSIX 文件系統相容上MDS 存數據在 RADOS
‒ 不提供文件內容Linux 核心模塊和 FUSE
高可用性和可擴展性‒ Inline Data
‒ SnapShots
‒ 多個文件系統
libcephfs
librados
OSD MON
OSD
OSD
MON
MON
MDS
MDS
MDS
RADOS
FUSE cephfsKernel cephfs.ko
Block Storage
File System
Object Storage
001011010101010111011011101110001011010
使用 ceph 存儲的方法 ?SUSE 領先提供 iSCSI
Remote ClusterData Encrypted
at Rest
MonitorNodes
Management Node
Heterogeneous OS Access
RADOS gateway
RESTful api
iSCSI
001110111010110101101011010110110111010001110111101110100101101011101111011011
111010110101101101110100111010110101010
iSCSI 架構技術背景協議 :
‒ 經過 TCP/IP 連接 Block storage
‒ 任何 iSCSI Initiators 可以經過 TCP/IP 連接 iSCSI Target
‒ iSCSI Targets, 伺服器提供本地 block 訪問SCSI and iSCSI:
‒ iSCSI 命令和回應打包裹‒ iSCSI TCP 包含 SCSI 命令
遠程存取 :‒ iSCSI Initiators 可以把遠程的 Block 當作本地硬碟處理‒ 存儲被連接後可以直接使用不同文件系統 XFS, brtfs ….
‒ 用戶可以直接使用 iSCSI Target 始動
Public Network
OSD1 OSD2 OSD3 OSD4
iSCSI RBD 沒有驅動前… PRESENT
FUTURE
£€
$
Target System
RBD Block LIO to ISCSI
Initiator System
iSCSI 加 LIO 有什麼問題 ? 缺少一些功能
LIO over RBD: ‒ 不支持 “ atomic compare and write”
‒ 不支持 “ persistent group reservations”
iSCSI:‒ 不支持 iSCSI Active/Active Multiple Path MPIO
iSCSI LIO 在 RBD 驅動上的優點支持更多的系統平台連接 ceph:
‒ 不需要成為叢集的一部份像 radosgw 一樣標準 iSCSI 介面 :
‒ 大部份操集系統支持 iSCSI Initiators
LIO Linux IO Target:‒ Linux 核心實作 iSCSI Target
靈活的組態 :‒ Targetcli 經過 lrbd 工具動態設定
設定 RBD iSCSI 入口介紹 lrbd
易用建立 :‒ 由開始 SES2.0 已經支持 iSCSI
‒ Targetcli 支持多點設定技術背景 :
‒ JSON 格式‒ Target, Portals, Pools, Auth
‒ 設定狀態保存在 ceph 叢集內Related Link:
‒ https://github.com/swiftgist/lrbd
‒ https://github.com/swiftgist/lrbd/wiki
19
Public Network
OSD1 OSD2 OSD3 OSD4
Multiple Path 支持 iSCSI RBDPRESENT
FUTURE
£€
$
Cluster Network
iSCSI Gateway
RBD Module
iSCSI Gateway
RBD Module
iSCSI Initiator
RBD image
如何管理 ceph 存儲的增長和費用 ?
Easily scale and manage data storage
Control storage growth and manage costs
Support today’s investment and adapt to the future
$
PRESENT
FUTURE
£€
$
介紹 openATTIC
Easily scale and manage data storage
SUSE Enterprise Storage 管理工具前景
開源項目 : ‒ 替代專用存儲管理系統
企業級應用 :‒ 支持傳統存儲管理 , 使用統一介面 e.g. NAS, SAN
SDS 支持 :‒ 支持 ceph 的管理和監視叢集狀態 , 簡化 ceph 複雜的操作
openATTIC 功能現有功能現在的網頁介面RESTful API
‒ Software Defined Storage
統一存儲‒ NAS (NFS, CIFS, HTTP)
‒ SAN (iSCSI, Fiber Channel)
卷鏡像‒ DRBD
文件系統‒ LVM, XFS, Btrfs, ext3/4
監控‒ 內置 Nagios / Icinga
‒ ceph 管理 (WIP)
openATTIC 架構技術內容後台 :
‒ Python (Django)
‒ Django REST Framework
‒ Nagios / Icinga & PNP4Nagios
‒ Linux tools‒ LVM, LIO, DRBD
‒ ceph API ‒ librados, librbd
網頁前台 :‒ AngularJS
‒ Bootstrap
‒ REST API
自動化測試‒ Python unit tests
‒ Gatling‒ RESTful API
‒ Protractor / Jasmine ‒ WebUI test
openATTIC 架構概述
Django
Linux OS Tools
openATTIC SYSTEMD
RESTful API
PostgreSQL
DBUS
ShellCeph Storage Cluster
librados/librbd
Web UI REST Client
HTTP
NoDB
如何管理 ceph 的費用 ?
Control storage growth and manage costs
$
最低硬體建議OSD Storage Node
‒ 2GB RAM per OSD
‒ 1.5GHz CPU core per OSD
‒ 10GEb public and backend
‒ 4GB RAM for cache tier
MON Monitor Node‒ 3 Mons minimal
‒ 2GB RAM per node
‒ SSD System OS
‒ Mon and OSD should not be virtualized
‒ Bonding 10GEb
SUSE 存儲價格
JBOD Storage
Mid-rangeArray
Mid-rangeNAS
High-endDisk Array
SUSE 企業存儲
Fully FeaturedNAS Device
Entry-levelDisk Array
Thin Provisioning隨需配置
傳統存儲配置 SDS 隨需配置
Data
Allocated
Data
Allocated
Volume A
Volume B
Data
Data
AvailableStorage
Volume A
Volume B
多層次的使用 ceph 存儲多寫應用 多讀應用
需要快寫的應用 :• e.g. 視像數據• e.g. 很多 IoT 數據
需要快讀的應用 :• e.g. 視像流傳播• e.g. 大數據分析
快寫層Hot Pool
一般層Cold Pool
快讀層Hot Pool
SUSE Enterprise Storage Cluster
一般層Cold Pool
如何計算多個存儲價格 ?
1000$ = 1000G 2000MB rw4 PCIe = 4000$ = 8000MB rw 4T Storage 400,000 IOPS4$ per G
250$ = 1000G, 500MB rw16 Driver = 4000$ = 8000MB rw16T Storage 100,000 IOPS1$ per G
250$ = 8000G 150MB rw16 Driver = 4000$ = 2400MB rw128T Storage 2000 IOPS0.1$ per G
Control Costs
如何使用 EC 減低存儲費用 ? $
Copy Copy Copy
對象存儲
Replication Pool
SES CEPH CLUSTSER
Control CostsErasure Coded Pool
SES CEPH CLUSTSER
多點複製數據• 300% 數據空間使用• 低延遲 , 快恢復
一份數據加奇偶校驗數據• 120% 數據空間使用• CPU 差換數據恢復
對象存儲
Data Data Data Data
Parity ParityData Data Data Data
Data Data
公有雲對比私有雲 ceph 使用H270-H70 – 40000$ 美金
- 48 Core * 8 : 384 核心- 32G * 32: 1T 記億體- 1T * 16: 16T SSD- 40GbE * 8
R120-T30 – 5700$ 美金 * 7- 48 Core * 7 : 336 核心- 8 * 16G * 7 : 896G 記億體- 1T * 2 * 7 : 14T SSD- 8T * 6 * 7 : 336T HDD - 40GbE * 7- 10GbE * 14
1000 用戶使用5$ - 網站 = 5000$ 美金8 個月 = 40000$ 美金EC 5+2 大約等於 250T2500 用戶使用 100GB2$ 存儲 = 5000$8 個月 = 40000$
ceph 開發者 / POC
OSD1OSD2OSD3OSD4
MON1
OSD5OSD6OSD7OSD8
MON2
OSD9OSD10OSD11OSD12
MON3
Dual 1G Network
300$ 300$
6T = 220$220 * 3 = 660$
512G = 150$
300$
6T = 220$220 * 3 = 660$
512G = 150$
6T = 220$220 * 3 = 660$
512G = 150$
DevOps 的故事 ?介紹 salt
Support today’s investment and adapt to the future
PRESENT
FUTURE
£€
$
Salt 加強 ceph 維護功能DeepSea
‒ https://github.com/SUSE/DeepSea
‒ Salt state 文件幫助管理及建立 ceph
產品支持‒ SUSE OpenStack cloud, SUSE manager ‒ SUSE Enterprise Storage並行操作
客制化模塊靈活設計
‒ Default Jinja2 + YAML ( stateconf )
‒ Pydsl if you like python directly, json, pyobject, etc
ceph 叢集快速安裝例子Git repo for fast deploy and benchmark
- https://github.com/AvengerMoJo/Ceph-Saltstack
Demo recording- https://asciinema.org/a/4hmdsrksn0fd8fgpssdgqsjdb
1) Salt 基本設定2) Git clone 拷貝模塊到 salt 的 _modules 目錄3) Saltutil.sync_all 到所有 minion 系統節點 4) ntp_update 更新所有統節點5) 創造 MONs 節點和集的 keys 6) 系統清除硬碟分區及預備 OSD7) Crushmap 及 RADOSGW 設定
SUSE Enterprise Storage 減低存儲用費用和管理成本
減低管理
加快相容控制成本