1 核心組件介紹
Object
Ceph最底層的存儲單元是Object對象,每個Object包含元數據和原始數據。
OSD
OSD全稱Object Storage Device,也就是負責響應客戶端請求返回具體數據的進程。一個Ceph集群一般都有很多個OSD。
PG
PG全稱Placement Grouops,是一個邏輯的概念,一個PG包含多個OSD。引入PG這一層其實是為了更好的分配數據和定位數據。
Monitor
一個Ceph集群需要多個Monitor組成的小集群,它們通過Paxos同步數據,用來保存OSD的元數據。
RADOS
RADOS全稱Reliable Autonomic Distributed Object Store,是Ceph集群的精華,用戶實現數據分配、Failover等集群操作。
Libradio
Librados是Rados提供庫,因為RADOS是協議很難直接訪問,因此上層的RBD、RGW和CephFS都是通過librados訪問的,目前提供PHP、Ruby、Java、Python、C和C++支持。
CRUSH
CRUSH是Ceph使用的數據分布算法,類似一致性哈希,讓數據分配到預期的地方。
RBD
RBD全稱RADOS block device,是Ceph對外提供的塊設備服務。
RGW
RGW全稱RADOS gateway,是Ceph對外提供的對象存儲服務,接口與S3和Swift兼容。
MDS
MDS全稱Ceph Metadata Server,是CephFS服務依賴的元數據服務。
CephFS
CephFS全稱Ceph File System,是Ceph對外提供的文件系統服務。
2 安裝準備
操作系統:CentOS Linux release 7.4.1708 (Core)
內核版本:3.10.0-693.el7.x86_64
服務器使用規劃
Node | Host Name | Ceph Deploy | Ceph Admin | Mon | OSD | MDS | MGR | RGW |
192.168.2.241 | node1 | √ | √ | √ | √ | √ | ||
192.168.2.242 | node2 | √ | √ | √ | √ | |||
192.168.2.243 | node3 | √ | √ | |||||
192.168.2.244 | node4 | √ | ||||||
192.168.2.245 | node5 | √ |
存儲準備
node4、node5兩個osd節點單獨掛載一個5G大小的存儲盤
目錄規劃
/install ? ? ? ? ? #用來存放安裝文件
創建以上目錄(node1)
mkdir?/install
依次修改主機名,xx請替換1-5
hostnamectl?set-hostname?nodexx
配置免密訪問(管理節點)
ssh-keygen ssh-copy-id?node1 ssh-copy-id?node2 ssh-copy-id?node3 ssh-copy-id?node4 ssh-copy-id?node5
修改主機hosts配置(管理節點)
vi?/etc/hosts 192.168.2.241?node1 192.168.2.242?node2 192.168.2.243?node3 192.168.2.244?node4 192.168.2.245?node5
同步hosts配置到其他節點
scp?/etc/hosts?node2:/etc/ scp?/etc/hosts?node3:/etc/ scp?/etc/hosts?node4:/etc/ scp?/etc/hosts?node5:/etc/
關閉防火墻(所有節點)
setenforce?0 systemctl?stop?firewalld?&&?systemctl?disable?firewalld
時間同步(所有節點)
yum?install?ntp?ntpdate?-y ntpdate?cn.pool.ntp.org systemctl?enable?ntpd systemctl?start?ntpd
內核優化(node1)
vi?/etc/sysctl.conf net.ipv4.tcp_fin_timeout?=?2 net.ipv4.tcp_tw_reuse?=?1? net.ipv4.tcp_tw_recycle?=?1? net.ipv4.tcp_syncookies?=?1? net.ipv4.tcp_keepalive_time?=?600? net.ipv4.tcp_keepalive_probes?=?5? net.ipv4.tcp_keepalive_intvl?=?15 net.ipv4.ip_local_port_range?=?1024?65000 net.ipv4.tcp_max_syn_backlog?=?262144 net.ipv4.tcp_max_tw_buckets?=5000 net.ipv4.tcp_syn_retries?=?1 net.ipv4.tcp_synack_retries?=?1 net.core.somaxconn?=?16384 net.core.netdev_max_backlog?=?16384 net.ipv4.tcp_max_orphans?=?16384
同步到其他節點
scp?/etc/sysctl.conf?node2:/etc scp?/etc/sysctl.conf?node3:/etc scp?/etc/sysctl.conf?node4:/etc scp?/etc/sysctl.conf?node5:/etc vi?/etc/security/limits.conf soft?nofile?1024000 hard?nofile?1024000 root?soft?nofile?1024000 root?hard?nofile?1024000
同步到其他節點
scp?/etc/security/limits.conf?node2:/etc/security scp?/etc/security/limits.conf?node3:/etc/security scp?/etc/security/limits.conf?node4:/etc/security scp?/etc/security/limits.conf?node5:/etc/security
生效配置(所有節點)
sysctl?-p
修改環境配置(所有節點)
echo?"ulimit?-HSn?102400"?>>?/etc/profile
添加yum源
cat?<<?EOM?>?/etc/yum.repos.d/ceph.repo [Ceph-SRPMS] name=Ceph?SRPMS?packages baseurl=https://mirrors.aliyun.com/ceph/rpm-mimic/el7/SRPMS/ enabled=1 gpgcheck=0 type=rpm-md [Ceph-aarch74] name=Ceph?aarch74?packages baseurl=https://mirrors.aliyun.com/ceph/rpm-mimic/el7/aarch74/ enabled=1 gpgcheck=0 type=rpm-md [Ceph-noarch] name=Ceph?noarch?packages baseurl=https://mirrors.aliyun.com/ceph/rpm-mimic/el7/noarch/ enabled=1 gpgcheck=0 type=rpm-md [Ceph-x86_64] name=Ceph?x86_64?packages baseurl=https://mirrors.aliyun.com/ceph/rpm-mimic/el7/x86_64/ enabled=1 gpgcheck=0 type=rpm-md EOM
同步到其他節點
scp?/etc/yum.repos.d/ceph.repo?node2:/etc/yum.repos.d scp?/etc/yum.repos.d/ceph.repo?node3:/etc/yum.repos.d scp?/etc/yum.repos.d/ceph.repo?node4:/etc/yum.repos.d scp?/etc/yum.repos.d/ceph.repo?node5:/etc/yum.repos.d
清理緩存(所有節點)
yum?makecache
3 集群部署
安裝依賴(所有節點)
yum?install?-y?https://mirrors.aliyun.com/epel/epel-release-latest-7.noarch.rpm
安裝ceph(所有節點)
yum?-y?install?epel-release?ceph?ceph-radosgw?ceph-common?deltarpm
安裝ceph-deploy(node1執行)
yum?install?-y?ceph-deploy
創建一個名稱為mycluster的集群,如果沒有指定--clster,默認名稱為ceph,集群節點(mon)包括node{1,2,3}(node1執行)
cd?/install ceph-deploy?--cluster?mycluster?new?node{1,2,3}
修改ceph配置文件,增加網段(生產環境以實際為準,建議public和cluster使用不同的段)
vi?ceph.conf public?network?=?192.168.2.0/24 cluster?network?=?192.168.2.0/24 mon_allow_pool_delete?=?true osd?pool?default?size?=?2 osd?pool?default?min?size?=?1 osd?pool?default?pg?num?=?64 osd?pool?default?pgp?num?=?64
創建和初始化監控節點并收集所有的秘鑰(node1執行)
ceph-deploy?mon?create-initial
將配置文件和管理秘鑰復制到管理節點和ceph節點(node1執行)
ceph-deploy?admin?node{1,2,3,4,5}
部署mgr(node1執行)
ceph-deploy?mgr?create?node{1,2}
部署osd(node1執行)
ceph-deploy?osd?create?--data?/dev/sdb?node4 ceph-deploy?osd?create?--data?/dev/sdb?node5
4 啟用Dashboard
先查看dashboard狀態
ceph?mgr?services
啟用dashboard
ceph?mgr?module?enable?dashboard
生成自簽名證書
ceph?dashboard?create-self-signed-cert cd?/install openssl?req?\ -new?-nodes?\ -x509?\ -subj?"/O=IT/CN=ceph-mgr-dashboard"?\ -days?3650?\ -keyout?dashboard.key?\ -out?dashboard.crt?\ -extensions?v3_ca
啟用證書
ceph?config-key?set?mgr?mgr/dashboard/crt?-i?dashboard.crt ceph?config-key?set?mgr?mgr/dashboard/key?-i?dashboard.key
不用證書功能的時候,可以選擇禁用證書
ceph?config?set?mgr?mgr/dashboard/ssl?false
注:更換證書后,需要重啟dashboard
ceph?mgr?module?disable?dashboard ceph?mgr?module?enable?dashboard
配置服務地址、端口(生產環境中,mgr的訪問地址建議使用域名或者負載IP)
ceph?config?set?mgr?mgr/dashboard/server_addr?192.168.2.241 ceph?config?set?mgr?mgr/dashboard/server_port?8443
創建用戶
ceph?dashboard?set-login-credentials?admin?admin
重啟mgr
systemctl?restart?ceph-mgr@node1
瀏覽器訪問
https://192.168.2.241:8443
5 塊存儲
任意ceph集群主機執行
創建存儲池,命名為ec,pg和pgs分配為64(這里只是測試,生產環境請按公式計算pg和pgs)
ceph?osd?pool?create?ec?64?64
rbd方式啟用該存儲池
ceph?osd?pool?application?enable?ec?rbd
創建用戶client.ec,用于客戶端掛載訪問
ceph?auth?get-or-create?client.ec?\ mon?'allow?r'??\ osd?'allow?rwx?pool=ec'?\ -o?/etc/ceph/ceph.client.ec.keyring
遠端客戶端掛載
檢查客戶端內核版本,內核版本建議在2.6.34以上版本
uname?-r
檢查當前內核版本是否支持rbd
modprobe?rbd?&&?lsmod|grep?rbd
在hosts配置添加ceph集群主機映射
vi?/etc/hosts 192.168.2.241?node1 192.168.2.242?node2 192.168.2.243?node3 192.168.2.244?node4 192.168.2.245?node5
考慮到國外下載慢的問題,配置國內鏡像源
cat?<<?EOM?>?/etc/yum.repos.d/ceph.repo [Ceph-SRPMS] name=Ceph?SRPMS?packages baseurl=https://mirrors.aliyun.com/ceph/rpm-mimic/el7/SRPMS/ enabled=1 gpgcheck=0 type=rpm-md [Ceph-aarch74] name=Ceph?aarch74?packages baseurl=https://mirrors.aliyun.com/ceph/rpm-mimic/el7/aarch74/ enabled=1 gpgcheck=0 type=rpm-md [Ceph-noarch] name=Ceph?noarch?packages baseurl=https://mirrors.aliyun.com/ceph/rpm-mimic/el7/noarch/ enabled=1 gpgcheck=0 type=rpm-md [Ceph-x86_64] name=Ceph?x86_64?packages baseurl=https://mirrors.aliyun.com/ceph/rpm-mimic/el7/x86_64/ enabled=1 gpgcheck=0 type=rpm-md EOM
清理緩存
yum?makecache
安裝依賴
yum?install?-y?https://mirrors.aliyun.com/epel/epel-release-latest-7.noarch.rpm
安裝ceph客戶端
yum?-y?install?ceph-common
將服務端生成的用戶秘鑰(client.ec)拷貝到客戶端服務器
scp?-r?/etc/ceph/ceph.client.ec.keyring?node5:/etc/ceph
驗證用戶權限,由于沒有使用admin賬號,所以每次都需要指定訪問用戶
ceph?-s?--name?client.ec
在存儲池ec上創建塊設備(磁盤),命名為ec,分配最大存儲空間10G
rbd?create?ec/ec?--size?10G?--image-format?2?--image-feature?layering?--name?client.ec
查看創建的塊設備
rbd?info?ec/ec?--name?client.ec 或 rbd?info?-p?ec?ec?--name?client.ec
將塊設備映射到本地磁盤
rbd?map?ec/ec?--name?client.ec
格式化磁盤,可以選擇格式化成ext4或xfs
mkfs.ext4?/dev/rbd0
創建掛載目錄
mkdir?/ecdata
將盤符掛載到該目錄
mount?/dev/rbd0?/ecdata
查看掛載狀態
df?-h rbd?showmapped
擴容
rbd?resize?--size?xxG?pool-name/image-name
擴容存儲空間后,在客戶端不會立即生效,需要在客戶端執行如下操作
#針對ext文件系統,rbd0為映射的本地設備名 blockdev?--getsize64?/dev/rbd0 resize2fs?/dev/rbd0 #針對xfs文件系統,還需要執行如下命令,mnt為掛載點 xfs_growfs?/mnt
創建快照
rbd?snap?create?ec/ec@ec-snap
回滾快照(出現回滾失敗時,需要先解除掛載和本地映射)
rbd?snap?rollback?ec/ec@ec-snap
克隆快照
rbd?snap?protect?ec/ec@ec-snap rbd?snap?clone?ec/ec@ec-snap?new-ec-pool
6 文件存儲
服務端
部署mds(node1執行),啟用文件存儲時創建
ceph-deploy?mds?create?node2
創建存儲池
ceph?osd?pool?create?cephfs_data?64 ceph?osd?pool?create?cephfs_metadata?64
創建文件系統
ceph?fs?new?cephfs?cephfs_metadata?cephfs_data
查看MDS服務器狀態
ceph?mds?stat
創建用戶
ceph?auth?get-or-create?client.cephfs?\ mon?'allow?r'?\ mds?'allow?r,allow?rw?path=/'?\ osd?'allow?rw?pool=cephfs_data'?\ -o?/etc/ceph/ceph.client.cephfs.keyring
同步key到其他節點
scp?/etc/ceph/ceph.client.cephfs.keyring?node2:/etc/ceph scp?/etc/ceph/ceph.client.cephfs.keyring?node3:/etc/ceph
查看用戶key
ceph?auth?get-key?client.cephfs
客戶端
掛載ceph文件系統(啟用cephx認證后,必須指定授權用戶),其中192.168.2.241為mon地址
mount?-t?ceph?node1:6789:/?/data?-o?name=cephfs,secret=AQAHs9RdRVLkOBAAYl1JZqYupcHnORttIo+Udg==
或
echo?"AQAHs9RdRVLkOBAAYl1JZqYupcHnORttIo+Udg=="?>?/etc/ceph/cephfskey mount?-t?ceph?node1:6789:/?/data?-o?name=cephfs,secretfile=/etc/ceph/cephfskey
寫入數據測試(1G)
dd?if=/dev/zero?of=/data/file2?bs=1M?count=1024
開機自動掛載
echo?"node1:6789:/?/data/?ceph?name=cephfs,secret=AQAHs9RdRVLkOBAAYl1JZqYupcHnORttIo+Udg==,_netdev,noatime?0?0"?>>?/etc/fstab
或
echo?"node1:6789:/?/data/?ceph?name=cephfs,secretfile=/etc/ceph/cephfskey,_netdev,noatime?0?0"?>>?/etc/fstab
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。