三 Ceph叢集搭建
Ceph叢集
叢集元件
Ceph叢集包括Ceph OSD,Ceph Monitor兩種守護程序。
Ceph OSD(Object Storage Device): 功能是儲存資料,處理資料的複製、恢復、回填、再均衡,並通過檢查其他OSD守護程序的心跳來向Ceph Monitors提供一些監控資訊。
Ceph Monitor: 是一個監視器,監視Ceph叢集狀態和維護叢集中的各種關係。
Ceph儲存叢集至少需要一個Ceph Monitor和兩個 OSD 守護程序。
叢集環境準備
叢集圖
準備工作
準備四臺伺服器,需要可以上外網,其中三臺作為ceph叢集 一臺作為cehp客戶端,除了client外每臺加一個磁碟(/dev/sdb),無需分割槽
環境檢視
配置主機名及hosts(四臺主機主機名不一樣hosts一樣)
# cat /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 192.168.1.101 node1 192.168.1.102 node2 192.168.1.103 node3 192.168.1.104 client
關閉防火牆及selinux
設定ntpdate時間同步並設定在crontab內
ntpdate time1.aliyun.com
配置ceph的yum源
yum install epel-release -y
四臺主機均設定,如果需要設定其他頒佈的yum源可以開啟頁面選擇
http://mirrors.aliyun.com/ceph
# cat /etc/yum.repos.d/ceph.repo [ceph] name=ceph baseurl=http://mirrors.aliyun.com/ceph/rpm-mimic/el7/x86_64/ enabled=1 gpgcheck=0 priority=1 [ceph-noarch] name=cephnoarch baseurl=http://mirrors.aliyun.com/ceph/rpm-mimic/el7/noarch/ enabled=1 gpgcheck=0 priority=1 [ceph-source] name=Ceph source packages baseurl=http://mirrors.aliyun.com/ceph/rpm-mimic/el7/SRPMS enabled=1 gpgcheck=0 priority=1
配置ssh免密登入
以node1位部署節點在node1配置使node1可以免密登入四臺主機
ssh-keygen -t rsa ssh-copy-id node1 ssh-copy-id node2 ssh-copy-id node3 ssh-copy-id client
在node1上ssh其他主機無需輸入密碼代表配置ssh成功
在node1上安裝部署工具(其他節點不用安裝)
yum install ceph-deploy -y
建立一個叢集配置目錄
注意:後面大部分操作在此目錄進行
mkdir /etc/ceph cd /etc/ceph
建立叢集
[root@node1 ~]# ceph-deploy new node1
會在當前配置檔案目錄生成以下配置檔案
#ls ceph.conf ceph-deploy-ceph.log ceph.mon.keyring
說明
說明: ceph.conf 叢集配置檔案 ceph-deploy-ceph.log 使用ceph-deploy部署的日誌記錄 ceph.mon.keyring mon的驗證key檔案 監控需要的令牌
叢集節點安裝ceph
node1 node2 node3 client都需要安裝
yum install ceph ceph-radosgw -y
檢視版本
# ceph -v ceph version 13.2.10 (564bdc4ae87418a232fc901524470e1a0f76d641) mimic (stable)
注意: 如果公網OK,並且網速好的話,可以用`ceph-deploy install node1 node2 node3`命令來安裝,但網速不好的話會比較坑
所以這裡我們選擇直接用準備好的本地ceph源,然後`yum install ceph ceph-radosgw -y`安裝即可。
客戶端安裝ceph-common
[root@client ~]# yum install ceph-common -y
建立mon監控
解決public網路用於監控
修改配置檔案在[global]配置端新增下面一句
public network = 192.168.1.0/24
監控節點初始化,並同步配置到所有節點(node1,node2,node3,不包括client)
ceph-deploy mon create-initial
檢視監控狀態
[root@node1 ceph]# ceph health HEALTH_OK
將配置資訊同步到所有節點
ceph-deploy admin node1 node2 node3
在node2 node3多了幾個配置檔案
[root@node2 ceph]# ll 總用量 12 -rw------- 1 root root 151 8月 3 14:46 ceph.client.admin.keyring -rw-r--r-- 1 root root 322 8月 3 14:46 ceph.conf -rw-r--r-- 1 root root 92 4月 24 01:07 rbdmap -rw------- 1 root root 0 8月 1 16:46 tmpDX_w1Z
檢視狀態
# ceph health HEALTH_OK [root@node1 ceph]# ceph -s cluster: id: 134c6247-2fd4-4669-8c19-d0c9200d90c8 health: HEALTH_OK #健康狀態為OK services: mon: 1 daemons, quorum node1 mgr: node1(active osd: 1 osds: 1 up, 1 in rgw: 1 daemon active data: pools: 4 pools, 32 pgs objects: 189 objects, 1.5 KiB usage: 3.0 GiB used, 45 GiB / 48 GiB avail pgs: 32 active+clean
為了防止mon單點故障,你可以加多個mon節點(建議奇數個,因為有quorum仲裁投票)
ceph-deploy mon add node2 ceph-deploy mon add node3
再次檢視
# ceph -s cluster: id: 134c6247-2fd4-4669-8c19-d0c9200d90c8 health: HEALTH_OK services: mon: 3 daemons, quorum node1,node2,node3 mgr: node1(active), standbys: node2, node3 osd: 3 osds: 3 up, 3 in rgw: 1 daemon active data: pools: 4 pools, 32 pgs objects: 189 objects, 1.5 KiB usage: 3.0 GiB used, 45 GiB / 48 GiB avail pgs: 32 active+clean
#### 監控到時間不同步的解決方法
**ceph叢集對時間同步要求非常高, 即使你已經將ntpd服務開啟,但仍然可能有`clock skew deteted`相關警告**
![1546521667118](ceph圖片/ntpd沒啟動造成叢集不健康.png)
請做如下嘗試:
1, 在ceph叢集所有節點上(`node1`,`node2`,`node3`)不使用ntpd服務,直接使用crontab同步
~~~powershell
# systemctl stop ntpd
# systemctl disable ntpd
# crontab -e
*/10 * * * * ntpdate ntp1.aliyun.com 每5或10分鐘同步1次公網的任意時間伺服器
~~~
2, 調大時間警告的閾值
~~~powershell
[root@node1 ceph]# vim ceph.conf
[global] 在global引數組裡新增以下兩行
......
mon clock drift allowed = 2 # monitor間的時鐘滴答數(預設0.5秒)
mon clock drift warn backoff = 30 # 調大時鐘允許的偏移量(預設為5)
修改了ceph.conf配置需要同步到所有節點
ceph-deploy --overwrite-conf admin node1 node2 node3
前面第1次同步不需要加--overwrite-conf引數
這次修改ceph.conf再同步就需要加--overwrite-conf引數覆蓋
所有ceph叢集節點上重啟ceph-mon.target服務
systemctl restart ceph-mon.target
建立mgr(管理)
eph luminous版本中新增加了一個元件:Ceph Manager Daemon,簡稱ceph-mgr。
該元件的主要作用是分擔和擴充套件monitor的部分功能,減輕monitor的負擔,讓更好地管理ceph儲存系統。
ceph-deploy mgr create node1
檢視
# ceph -s cluster: id: 134c6247-2fd4-4669-8c19-d0c9200d90c8 health: HEALTH_OK services: mon: 3 daemons, quorum node1,node2,node3 mgr: node1(active), standbys: node2, node3 osd: 3 osds: 3 up, 3 in rgw: 1 daemon active data: pools: 4 pools, 32 pgs objects: 189 objects, 1.5 KiB usage: 3.0 GiB used, 45 GiB / 48 GiB avail pgs: 32 active+clean
新增多個mgr可以實現HA
ceph-deploy mgr create node2 ceph-deploy mgr create node3
檢視
[root@node1 ceph]# ceph -s cluster: id: 134c6247-2fd4-4669-8c19-d0c9200d90c8 health: HEALTH_OK services: mon: 3 daemons, quorum node1,node2,node3 mgr: node1(active), standbys: node2, node3 osd: 3 osds: 3 up, 3 in rgw: 1 daemon active data: pools: 4 pools, 32 pgs objects: 189 objects, 1.5 KiB usage: 3.0 GiB used, 45 GiB / 48 GiB avail pgs: 32 active+clean
建立OSD(儲存盤)
檢視幫助
[root@node1 ceph]# ceph-deploy disk --help [root@node1 ceph]# ceph-deploy osd --help
zap表示幹掉磁碟上的資料,相當於格式化
[root@node1 ceph]# ceph-deploy disk zap node1 /dev/sdb [root@node1 ceph]# ceph-deploy disk zap node2 /dev/sdb [root@node1 ceph]# ceph-deploy disk zap node3 /dev/sdb
將磁碟建立為osd
[root@node1 ceph]# ceph-deploy osd create --data /dev/sdb node1 [root@node1 ceph]# ceph-deploy osd create --data /dev/sdb node2 [root@node1 ceph]# ceph-deploy osd create --data /dev/sdb node3
檢視
# ceph -s cluster: id: 134c6247-2fd4-4669-8c19-d0c9200d90c8 health: HEALTH_OK services: mon: 3 daemons, quorum node1,node2,node3 mgr: node1(active), standbys: node2, node3 osd: 3 osds: 3 up, 3 in #生成3個OSD rgw: 1 daemon active data: pools: 4 pools, 32 pgs objects: 189 objects, 1.5 KiB usage: 3.0 GiB used, 45 GiB / 48 GiB avail #大小為3個磁碟大小總和 pgs: 32 active+clean
叢集節點的擴容方法
假設再加一個新的叢集節點node4
1, 主機名配置和繫結
2, 在node4上`yum install ceph ceph-radosgw -y`安裝軟體
3, 在部署節點node1上同步配置檔案給node4. `ceph-deploy admin node4`
4, 按需求選擇在node4上新增mon或mgr或osd等
ceph dashboard
檢視叢集狀態確認mgr的active節點
[root@node1 ceph]# ceph -s cluster: id: 134c6247-2fd4-4669-8c19-d0c9200d90c8 health: HEALTH_OK services: mon: 3 daemons, quorum node1,node2,node3 mgr: node1(active), standbys: node2, node3 #確認mgr active節點為node1 osd: 3 osds: 3 up, 3 in rgw: 1 daemon active data: pools: 4 pools, 32 pgs objects: 189 objects, 1.5 KiB usage: 3.0 GiB used, 45 GiB / 48 GiB avail pgs: 32 active+clean
檢視開啟及關閉的模組
[root@node1 mgr-dashboard]# ceph mgr module ls { "enabled_modules": [ "balancer", "crash", "dashboard", "iostat", "restful", "status" ], "disabled_modules": [ { "name": "hello", "can_run": true, "error_string": "" }, { "name": "influx", "can_run": false, "error_string": "influxdb python module not found" }, { "name": "localpool", "can_run": true, "error_string": "" }, { "name": "prometheus", "can_run": true, "error_string": "" }, { "name": "selftest", "can_run": true, "error_string": "" }, { "name": "smart", "can_run": true, "error_string": "" }, { "name": "telegraf", "can_run": true, "error_string": "" }, { "name": "telemetry", "can_run": true, "error_string": "" }, { "name": "zabbix", "can_run": true, "error_string": "" } ] }
開啟dashboard模組
ceph mgr module enable dashboard
建立自簽名證書
[root@node1 ceph]# ceph dashboard create-self-signed-cert Self-signed certificate created
生成金鑰對,並配置給ceph mgr
[root@node1 ceph]# mkdir /etc/mgr-dashboard [root@node1 ceph]# cd /etc/mgr-dashboard/
openssl req -new -nodes -x509 -subj "/O=IT-ceph/CN=cn" -days 3650 -keyout dashboard.key -out dashboard.crt -extensions v3_ca
[root@node1 mgr-dashboard]# ls dashboard.crt dashboard.key
在ceph叢集的active mgr節點上(我這裡為node1)配置mgr services
[root@node1 mgr-dashboard]# ceph config set mgr mgr/dashboard/server_addr 192.168.1.101 [root@node1 mgr-dashboard]# ceph config set mgr mgr/dashboard/server_port 8080
重啟dashboard模組,並檢視訪問地址
注意:需要重啟不重啟檢視的埠是預設的8443埠無法訪問
重啟就是先關disable再開啟enable
[root@node1 mgr-dashboard]# ceph mgr module disable dashboard [root@node1 mgr-dashboard]# ceph mgr module enable dashboard
檢視mgr service
# ceph mgr services { "dashboard": "https://192.168.1.101:8080/" }
設定訪問web頁面使用者名稱和密碼
ceph dashboard set-login-credentials admin admin
通過本機或其它主機訪問 https://ip:8080
Ceph檔案儲存
要執行Ceph檔案系統,你必須先裝只是帶一個mds的Ceph儲存叢集
Ceph.MDS:為Ceph檔案儲存型別存放元資料metadata(也就是說Ceph塊儲存和Ceph物件儲存不使用MDS)
建立檔案儲存並使用
第1步 在node1部署節點上修改配置/etc/ceph/ceph.conf 增加配置
mon_allow_pool_delete = true
同步配置檔案
注意:修改了配置檔案才需要同步,沒有修改不需要同步配置檔案
ceph-deploy --overwrite-conf admin node1 node2 node3
建立3個mds
[root@node1 ceph]# ceph-deploy mds create node1 node2 node3
第2步: 一個Ceph檔案系統需要至少兩個RADOS儲存池,一個用於資料,一個用於元資料。所以我們建立它們
[root@node1 ceph]# ceph osd pool create cephfs_pool 128 pool 'cephfs_pool' created [root@node1 ceph]# ceph osd pool create cephfs_metadata 64 pool 'cephfs_metadata' created
檢視
[root@node1 ceph]# ceph osd pool ls |grep cephfs cephfs_pool cephfs_metadata
第3步: 建立Ceph檔案系統,並確認客戶端訪問的節點
[root@node1 ceph]# ceph fs new cephfs cephfs_metadata cephfs_pool new fs with metadata pool 10 and data pool 9
檢視
[root@node1 ceph]# ceph osd pool ls .rgw.root default.rgw.control default.rgw.meta default.rgw.log cephfs_pool cephfs_metadata
[root@node1 ceph]# ceph fs ls name: cephfs, metadata pool: cephfs_metadata, data pools: [cephfs_pool ]
[root@node1 ceph]# ceph mds stat cephfs-1/1/1 up {0=node3=up:active}, 2 up:standby #這裡看到node3為up狀態
metadata儲存在node3上
客戶端準備驗證key檔案
說明: ceph預設啟用了cephx認證, 所以客戶端的掛載必須要驗證(ceph.conf預設配置檔案開啟)
在叢集節點(node1,node2,node3)上任意一臺檢視金鑰字串
cat /etc/ceph/ceph.client.admin.keyring
輸出
ceph-authtool -p /etc/ceph/ceph.client.admin.keyring >admin.key
把這個檔案放在客戶端client /root/admin.key
注意:直接把key複製編輯admin.key文件可能會在掛載時報錯
客戶端client安裝
yum -y install ceph-fuse
客戶端掛載
可以使用其他node主機名進行掛載,例如node3
mount -t ceph node1:6789:/ /mnt -o name=admin,secretfile=/root/admin.key
檢視
注意:如果使用檔案掛載報錯可以使用引數secret=祕鑰進行掛載
可以使用兩個客戶端, 同時掛載此檔案儲存,可實現同讀同寫
往掛載的硬碟寫資料可以在dashboard檢視讀寫監控狀態
dd if=/dev/zero of=/mnt/file1 bs=10M count=1000