參考文檔:https://wiki.deimos.fr/Ceph_:_performance,_reliability_and_scalability_storage_solution
創(chuàng)新互聯(lián)-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價比沾益網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式沾益網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋沾益地區(qū)。費用合理售后完善,10年實體公司更值得信賴。
Ceph 當(dāng)前的最新的LTS版本為 mimic 13.2.x 和 luminous12.2.x, 通過release信息可以查看到相關(guān)發(fā)布信息.在具體的版本中會說明是否是LTS版本。
每年大約會發(fā)布三到四個穩(wěn)定版,每個穩(wěn)定版都有個名字(如 ‘Firefly’ ),并且會一直提供缺陷修復(fù),至少持續(xù)到下一個穩(wěn)定版發(fā)布。
其它穩(wěn)定版都是 LTS ( Long Term Stable ,長期穩(wěn)定)的,而且會持續(xù)更新,直到發(fā)布了兩個 LTS 。比如 Hammer 發(fā)布之后 Dumpling 才隱退, Jewel 發(fā)布之后 Firefly 才隱退,以此類推?;驹砭褪?,為了修復(fù)缺陷和移植某些重要功能,對 LTS (如 Dumpling )的移植會一直持續(xù)到下一個 LTS 發(fā)布( Firefly 就是 Dumpling 之后的一個 LTS )。下一個 LTS 發(fā)布后,還有可能移植缺陷修正,主要取決于這些問題是否會妨礙升級到下一個 LTS (這里有個實例, Firefly 發(fā)布后還在修復(fù) Dumpling ,一直持續(xù)到 Hammer 發(fā)布,主要是確保 Dumpling 可以平滑地遷移到 Firefly )。
第一個 Ceph 版本是 0.1 ,要回溯到 2008 年 1 月。多年來,版本號方案一直沒變,直到 2015 年 4 月 0.94.1 ( Hammer 的第一個修正版)發(fā)布后,為了避免 0.99 (以及 0.100 或 1.00 ?),我們制定了新策略。
x 將從 9 算起,它代表 Infernalis ( I 是第九個字母),這樣我們第九個發(fā)布周期的第一個開發(fā)版就是 9.0.0 ;后續(xù)的開發(fā)版依次是 9.0.1 、 9.0.2 等等。
具體介紹可以參考官方文檔:
硬件需求說明: http://docs.ceph.com/docs/master/start/hardware-recommendations/
系統(tǒng)需求說明:http://docs.ceph.com/docs/master/start/os-recommendations/
Ceph有兩種安裝方式: 手動部署和使用 ceph-deploy工具部署。
手動部署比較繁瑣,但是對于初學(xué)者而言更加容易理解。 ceph-deploy部署工具的方式適用于大規(guī)模集群的部署。
這里會分別演示兩種部署方式。
ceph-12 luminous版本rpm包地址:https://download.ceph.com/rpm-luminous
ceph-13 mimic版本rpm包地址:https://download.ceph.com/rpm-mimic
官方文檔
在部署之前需要準(zhǔn)備好三臺CentOS主機,我這里使用的是CentOS7.5,并將系統(tǒng)內(nèi)核升級到4.x長期支持版本,相關(guān)的配置信息如下:
local-node-1: 10.0.0.1
local-node-2: 10.0.0.2
local-node-3: 10.0.0.3
配置hosts解析三臺節(jié)點的主機名,并將三臺節(jié)點配置為無密碼認(rèn)證模式。
關(guān)閉防火墻和Selinux
每臺主機節(jié)點至少添加一塊磁盤用于ceph存儲,在實際的生產(chǎn)中可以將多塊盤做raid,ceph 在添加磁盤時會自動格式化,所以此處不需要格式化。
yum install snappy leveldb gdisk python-argparse gperftools-libs -y
添加yum 源,導(dǎo)入key,這里我使用最新的mimic版本:
rpm --import 'https://download.ceph.com/keys/release.asc'
su -c 'rpm -Uvh https://download.ceph.com/rpm-mimic/el7/noarch/ceph-release-1-0.el7.noarch.rpm'
由于國內(nèi)的網(wǎng)絡(luò)問題,這里可以選擇使用阿里云的源,修改repo文件如下:
[Ceph]
name=Ceph packages for $basearch
baseurl=https://mirrors.aliyun.com/ceph/rpm-mimic/el7/$basearch
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://download.ceph.com/keys/release.asc
[Ceph-noarch]
name=Ceph noarch packages
baseurl=https://mirrors.aliyun.com/ceph/rpm-mimic/el7/noarch
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://download.ceph.com/keys/release.asc
[ceph-source]
name=Ceph source packages
baseurl=https://mirrors.aliyun.com/ceph/rpm-mimic/el7/SRPMS
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://download.ceph.com/keys/release.asc
yum install ceph-deploy -y
mkdir /opt/ceph-cluster
[root@local-node-1 ~]# cd /opt/ceph-cluster/
[root@local-node-1 ceph-cluster]# ceph-deploy new local-node-1
==提示==:如果在執(zhí)行ceph-deploy命令時出現(xiàn)如下錯誤,則需要安裝pyhon2-pip
# ceph-deploy new local-node-1
Traceback (most recent call last):
File "/usr/bin/ceph-deploy", line 18, in <module>
from ceph_deploy.cli import main
File "/usr/lib/python2.7/site-packages/ceph_deploy/cli.py", line 1, in <module>
import pkg_resources
ImportError: No module named pkg_resources
# 解決辦法,安裝python2-pip
yum install python2-pip* -y
命令執(zhí)行成功后會在當(dāng)前目錄生成多個配置文件。
[root@local-node-1 ceph-cluster]# ll
total 12
-rw-r--r-- 1 root root 198 Feb 15 15:37 ceph.conf
-rw-r--r-- 1 root root 2993 Feb 15 15:37 ceph-deploy-ceph.log
-rw------- 1 root root 73 Feb 15 15:37 ceph.mon.keyring
如果有多個不同的網(wǎng)絡(luò)接口(通常ceph集群會分公共網(wǎng)絡(luò)為和集群網(wǎng)絡(luò),也稱為public network和Cluster network),在生產(chǎn)環(huán)境中都會將這兩個網(wǎng)絡(luò)分開使用不同的網(wǎng)絡(luò)接口,可以在ceph.conf配置文件的[global]
區(qū)域添加如下參數(shù):
public network = {ip-address}/{netmask} # 公共網(wǎng)絡(luò),用于集群中訪問ceph存儲數(shù)據(jù)和ceph自身的監(jiān)控和控制數(shù)據(jù)
cluster network = {cluster-network/netmask} # 集群網(wǎng)絡(luò),用于ceph osd之間互相同步復(fù)制ceph集群數(shù)據(jù)
如果不進行配置,默認(rèn)只會使用公共網(wǎng)絡(luò)(public network),生產(chǎn)環(huán)境嚴(yán)禁這樣做。
yum install ceph ceph-radosgw -y
在網(wǎng)絡(luò)正常的情況下也可以使用ceph-deploy
來批量部署,實際效果和上述yum安裝軟件一樣:
ceph-deploy install --release mimic local-node-1 local-node-2 local-node-3
在國內(nèi)網(wǎng)絡(luò)不好的情況下,不推薦這么做,執(zhí)行此命令之后,我們通過前臺輸出,可以發(fā)現(xiàn)這步操作做了如下工作:
[root@local-node-1 ~]# ceph -v
ceph version 13.2.4 (b10be4d44915a4d78a8e06aa31919e74927b142e) mimic (stable)
查看節(jié)點狀態(tài)發(fā)現(xiàn)屬于不健康的狀態(tài):
[root@local-node-1 ~]# ceph status
2019-02-15 16:59:28.897 7f8a67b8c700 -1 auth: unable to find a keyring on /etc/ceph/ceph.client.admin.keyring,/etc/ceph/ceph.keyring,/etc/ceph/keyring,/etc/ceph/keyring.bin,: (2) No such file or directory
2019-02-15 16:59:28.897 7f8a67b8c700 -1 monclient: ERROR: missing keyring, cannot use cephx for authentication
[errno 2] error connecting to the cluster
[root@local-node-1 ceph-cluster]# ceph-deploy mon create-initial
[root@local-node-1 ceph-cluster]# ceph-deploy admin local-node-1 local-node-2 local-node-3
[root@local-node-1 ceph-cluster]# ceph-deploy mgr create local-node-1
# ceph-deploy disk list local-node-1
...
[local-node-1][INFO ] Disk /dev/sda: 10.7 GB, 10737418240 bytes, 20971520 sectors
[local-node-1][INFO ] Disk /dev/sdb: 10.7 GB, 10737418240 bytes, 20971520 sectors
使用disk zap
命令會抹掉磁盤上的分區(qū)和數(shù)據(jù)
[root@local-node-1 ceph-cluster]# ceph-deploy disk zap local-node-1 /dev/sdb
創(chuàng)建OSD磁盤,添加三個節(jié)點的三個磁盤:
[root@local-node-1 ceph-cluster]# ceph-deploy osd create --data /dev/sdb local-node-1
[root@local-node-1 ceph-cluster]# ceph-deploy osd create --data /dev/sdb local-node-2
[root@local-node-1 ceph-cluster]# ceph-deploy osd create --data /dev/sdb local-node-3
==注意:== 如果使用LVM邏輯卷來添加OSD,應(yīng)該使用參數(shù) --data volume_group/lv_name
而不是直接使用邏輯卷的路徑。
[root@local-node-1 ceph-cluster]# ceph health
HEALTH_OK
[root@local-node-1 ceph-cluster]# ceph -s
cluster:
id: 6a4812f7-83cb-43e5-abac-f2b8e37db127
health: HEALTH_OK
services:
mon: 1 daemons, quorum local-node-1
mgr: local-node-1(active)
osd: 3 osds: 3 up, 3 in
data:
pools: 0 pools, 0 pgs
objects: 0 objects, 0 B
usage: 3.0 GiB used, 27 GiB / 30 GiB avail
pgs:
檢查節(jié)點端口信息:
[root@local-node-1 ceph-cluster]# netstat -lntp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 859/sshd
tcp 0 0 10.0.0.1:6789 0.0.0.0:* LISTEN 2893/ceph-mon
tcp 0 0 0.0.0.0:6800 0.0.0.0:* LISTEN 3815/ceph-osd
tcp 0 0 0.0.0.0:6801 0.0.0.0:* LISTEN 3815/ceph-osd
tcp 0 0 0.0.0.0:6802 0.0.0.0:* LISTEN 3815/ceph-osd
tcp 0 0 0.0.0.0:6803 0.0.0.0:* LISTEN 3815/ceph-osd
tcp 0 0 0.0.0.0:6804 0.0.0.0:* LISTEN 4049/ceph-mgr
tcp6 0 0 :::22 :::* LISTEN 859/sshd
[root@local-node-2 /]# netstat -lntp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 860/sshd
tcp 0 0 0.0.0.0:6800 0.0.0.0:* LISTEN 2439/ceph-osd
tcp 0 0 0.0.0.0:6801 0.0.0.0:* LISTEN 2439/ceph-osd
tcp 0 0 0.0.0.0:6802 0.0.0.0:* LISTEN 2439/ceph-osd
tcp 0 0 0.0.0.0:6803 0.0.0.0:* LISTEN 2439/ceph-osd
tcp6 0 0 :::22 :::* LISTEN 860/sshd
[root@local-node-3 ~]# netstat -lntp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 861/sshd
tcp 0 0 0.0.0.0:6800 0.0.0.0:* LISTEN 2352/ceph-osd
tcp 0 0 0.0.0.0:6801 0.0.0.0:* LISTEN 2352/ceph-osd
tcp 0 0 0.0.0.0:6802 0.0.0.0:* LISTEN 2352/ceph-osd
tcp 0 0 0.0.0.0:6803 0.0.0.0:* LISTEN 2352/ceph-osd
tcp6 0 0 :::22 :::* LISTEN 861/sshd
至此,ceph 基礎(chǔ)存儲集群部署完成。
http://docs.ceph.com/docs/master/start/quick-ceph-deploy/#
當(dāng)我們有了以上基礎(chǔ)的ceph集群后,可以通過ceph-deploy來擴展集群。
為了實現(xiàn)mon組件的高可用,我們可以在node2和node3上也部署上mon(monitor的數(shù)量必須為奇數(shù)個,1,3,5等,以便在節(jié)點出現(xiàn)故障時進行選舉),同時,我們還需要在node1上添加Matedata Server(mds)組件。
要使用CephFS,我們就必須至少安裝一個metadata sever,執(zhí)行如下命令安裝 metadata server:
[root@local-node-1 ceph-cluster]# ceph-deploy mds create local-node-1
根據(jù)輸出提示可以發(fā)現(xiàn)ceph-mds@local-node-1服務(wù)已經(jīng)啟動。
# netstat -lntp|grep mds
tcp 0 0 0.0.0.0:6805 0.0.0.0:* LISTEN 4549/ceph-mds
在添加第二個mon或者更多mon時,必須先修改admin節(jié)點和將要部署mon節(jié)點的ceph.conf的配置文件,修改mon_initial_members
, mon_host
和 public_network
的相關(guān)配置:
[root@local-node-1 ceph-cluster]# cat ceph.conf
[global]
fsid = 6a4812f7-83cb-43e5-abac-f2b8e37db127
mon_initial_members = local-node-1,local-node-2,local-node-3
mon_host = 10.0.0.1,10.0.0.2,10.0.0.3
auth_cluster_required = cephx
auth_service_required = cephx
auth_client_required = cephx
public_network = 10.0.0.0/24
下發(fā)配置到集群中的所有節(jié)點:
[root@local-node-1 ceph-cluster]# ceph-deploy --overwrite-conf config push local-node-2 local-node-3
更新新的配置到所有的 monitor節(jié)點上:
ceph-deploy --overwrite-conf config push local-node-1 local-node-2 local-node-3
添加mon到local-node-2和local-node-3節(jié)點上:
ceph-deploy mon add local-node-2
ceph-deploy mon add local-node-3
新增 Monitor 后,Ceph 會自動開始同步并形成法定人數(shù)。你可以用下面的命令檢查法定人數(shù)狀態(tài):
# ceph quorum_status --format json-pretty
{
"election_epoch": 14,
"quorum": [
0,
1,
2
],
"quorum_names": [
"local-node-1",
"local-node-2",
"local-node-3"
],
"quorum_leader_name": "local-node-1",
"monmap": {
"epoch": 3,
"fsid": "6a4812f7-83cb-43e5-abac-f2b8e37db127",
"modified": "2019-02-18 13:39:00.705952",
"created": "2019-02-15 17:38:09.329589",
"features": {
"persistent": [
"kraken",
"luminous",
"mimic",
"osdmap-prune"
],
"optional": []
},
"mons": [
{
"rank": 0,
"name": "local-node-1",
"addr": "10.0.0.1:6789/0",
"public_addr": "10.0.0.1:6789/0"
},
{
"rank": 1,
"name": "local-node-2",
"addr": "10.0.0.2:6789/0",
"public_addr": "10.0.0.2:6789/0"
},
{
"rank": 2,
"name": "local-node-3",
"addr": "10.0.0.3:6789/0",
"public_addr": "10.0.0.3:6789/0"
}
]
}
}
==注意:== 當(dāng)你的 Ceph 集群運行著多個 monitor 時,各 monitor 主機上都應(yīng)該配置 NTP ,而且要確保這些 monitor 位于 NTP 服務(wù)的同一級。
Ceph Manager守護進程以活動/備用的模式運行。 部署其他管理器(Manager)守護程序可確保在一個守護程序或主機發(fā)生故障時,另一個守護程序或主機可以在不中斷服務(wù)的情況下接管。
為 其它兩臺節(jié)點添加Manager:
[root@local-node-1 ceph-cluster]# ceph-deploy mgr create local-node-2 local-node-3
查看狀態(tài),已經(jīng)添加了三個mgr:
[root@local-node-1 ceph-cluster]# ceph -s
cluster:
id: 6a4812f7-83cb-43e5-abac-f2b8e37db127
health: HEALTH_OK
services:
mon: 3 daemons, quorum local-node-1,local-node-2,local-node-3
mgr: local-node-1(active), standbys: local-node-2, local-node-3
osd: 3 osds: 3 up, 3 in
data:
pools: 0 pools, 0 pgs
objects: 0 objects, 0 B
usage: 3.0 GiB used, 27 GiB / 30 GiB avail
pgs:
使用ceph的 Ceph Object Gateway,還需要部署一個RGW的實例,使用如下命令創(chuàng)建一個新的RGW實例:
[root@local-node-1 ceph-cluster]# ceph-deploy rgw create local-node-1
默認(rèn)情況下RGW會監(jiān)聽7480端口,如果想修改此默認(rèn)端口可以通過編輯運行RGW節(jié)點上的ceph.conf文件:
[client]
rgw frontends = civetweb port=80
使用IPv6的情況:
[client]
rgw frontends = civetweb port=[::]:80
使用瀏覽器訪問此端口能獲取到如下信息:
# curl 10.0.0.1:7480
<?xml version="1.0" encoding="UTF-8"?><ListAllMyBucketsResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/"><Owner><ID>anonymous</ID><DisplayName></DisplayName></Owner><Buckets></Buckets></ListAllMyBucketsResult>
如果要存儲對象數(shù)據(jù)到ceph集群中,ceph的客戶必須滿足以下條件:
Ceph客戶端檢索最新的集群映射,CRUSH算法計算如何將對象映射到放置組,然后計算如何動態(tài)地將放置組分配給Ceph OSD守護進程。 要查找對象位置,您只需要對象名稱和池名稱。例如:
ceph osd map {poolname} {object-name}
作為練習(xí),我們創(chuàng)建一個對象,指定對象的名稱,并指定一個文件路徑,此文件包含了對象數(shù)據(jù),并使用rados put 命令指定存儲池名稱:
echo {Test-data} > testfile.txt
ceph osd pool create mytest 8
rados put {object-name} {file-path} --pool=mytest
# 示例:
echo testdata > testfile.txt
# ceph osd pool create mytest 8
pool 'mytest' created
rados put test-object-1 testfile.txt --pool=mytest
驗證ceph存儲了此對象:
# rados -p mytest ls
test-object-1
定位對象:
ceph osd map {pool-name} {object-name}
# ceph osd map mytest test-object-1
osdmap e34 pool 'mytest' (5) object 'test-object-1' -> pg 5.74dc35e2 (5.2) -> up ([1,0,2], p1) acting ([1,0,2], p1)
刪除對象:
rados rm test-object-1 --pool=mytest
刪除存儲池:
ceph osd pool rm mytest
使用上面的刪除命令會提示確認(rèn)信息,正常刪除使用如下命令:
# ceph osd pool rm mytest mytest --yes-i-really-really-mean-it
Error EPERM: pool deletion is disabled; you must first set the mon_allow_pool_delete config option to true before you can destroy a pool
如果是上述報錯需要修改ceph.conf配置文件,并重啟mon服務(wù):
[mon]
mon allow pool delete = true
重啟ceph-mon:
systemctl restart ceph-mon.target
然后再執(zhí)行刪除,即可成功:
[root@local-node-1 ceph-cluster]# ceph osd pool rm mytest mytest --yes-i-really-really-mean-it
pool 'mytest' removed
[root@local-node-1 ceph-cluster]# rados df
POOL_NAME USED OBJECTS CLONES COPIES MISSING_ON_PRIMARY UNFOUND DEGRADED RD_OPS RD WR_OPS WR
.rgw.root 1.1 KiB 4 0 12 0 0 0 12 8 KiB 4 4 KiB
default.rgw.control 0 B 8 0 24 0 0 0 0 0 B 0 0 B
default.rgw.log 0 B 175 0 525 0 0 0 10251 9.8 MiB 6834 0 B
default.rgw.meta 0 B 0 0 0 0 0 0 0 0 B 0 0 B
total_objects 187
total_used 3.0 GiB
total_avail 27 GiB
total_space 30 GiB
如果在配置的過程中出現(xiàn)問題想要重新配置,可以執(zhí)行下面的命令來清除配置和ceph軟件:
// 清除節(jié)點ceph軟件和數(shù)據(jù),如果運行了purge命令,必須重新安裝ceph
ceph-deploy purge {ceph-node} [{ceph-node}]
ceph-deploy purgedata {ceph-node} [{ceph-node}]
// 清除配置:
ceph-deploy forgetkeys
// 清除當(dāng)前目錄的配置文件
rm ceph.*
如果集群是處于 active + clean 狀態(tài),則說明集群正常:
[root@local-node-1 ceph-cluster]# ceph -s
cluster:
id: 6a4812f7-83cb-43e5-abac-f2b8e37db127
health: HEALTH_OK
services:
mon: 3 daemons, quorum local-node-1,local-node-2,local-node-3
mgr: local-node-1(active), standbys: local-node-2, local-node-3
osd: 3 osds: 3 up, 3 in
rgw: 1 daemon active
data:
pools: 4 pools, 32 pgs
objects: 187 objects, 1.1 KiB
usage: 3.0 GiB used, 27 GiB / 30 GiB avail
pgs: 32 active+clean
當(dāng)前名稱:ceph集群部署
網(wǎng)站地址:http://jinyejixie.com/article36/gdpcpg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供云服務(wù)器、網(wǎng)站建設(shè)、網(wǎng)站排名、營銷型網(wǎng)站建設(shè)、小程序開發(fā)、電子商務(wù)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)