歡迎關注個人公號《運維開發故事》
前提條件
Cephadm使用容器和systemd安裝和管理Ceph集羣,並與CLI和儀表板GUI緊密集成。
- cephadm僅支持octopus v15.2.0和更高版本。
-
cephadm與新的業務流程API完全集成,並完全支持新的CLI和儀表板功能來管理集羣部署。
- cephadm需要容器支持(podman或docker)和Python 3。
- 時
- 間同步
基礎配置
這裏我使用的centos8來安裝的ceph,已經內置了python3,不再單獨安裝,centos7需要單獨安裝python3
配置hosts解析
cat >> /etc/hosts <<EOF 192.168.93.70 node1 192.168.93.71 node2 192.168.93.72 node3 EOF
關閉防火牆和selinux
systemctl stop firewalld && systemctl disable firewalld setenforce 0 && sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
分別在三個節點設置主機名
hostnamectl set-hostname node1 hostnamectl set-hostname node2 hostnamectl set-hostname node3
配置主機時間同步
systemctl restart chronyd.service && systemctl enable chronyd.service
安裝docker-ce
dnf config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo dnf install -y https://download.docker.com/linux/centos/7/x86_64/stable/Packages/containerd.io-1.2.13-3.1.el7.x86_64.rpm dnf -y install docker-ce --nobest sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["https://s7owcmp8.mirror.aliyuncs.com"] } EOF sudo systemctl daemon-reload sudo systemctl restart docker sudo systemctl enable docker
安裝cephadm
cephadm命令可以
- 引導新集羣
- 使用有效的Ceph CLI啓動容器化的Shell
- 幫助調試容器化的Ceph守護進程。
以下操作只在一臺節點執行就可以
使用curl
獲取獨立腳本的最新版本。網絡不好的話可直接去GitHub複製
curl --silent --remote-name --location https://github.com/ceph/ceph/raw/octopus/src/cephadm/cephadm
chmod +x cephadm
安裝cephadmn
./cephadm add-repo --release octopus
./cephadm install
引導新羣集
要引導羣集,需要先創建一個目錄:/etc/ceph
mkdir -p /etc/ceph
然後運行該命令:ceph bootstrap
cephadm bootstrap --mon-ip 192.168.2.16
此命令將會進行以下操作:
- 爲本地主機上的新羣集創建monitor和manager守護程序。
- 爲 Ceph 羣集生成新的 SSH 密鑰,並將其添加到root用戶的文件
/root/.ssh/authorized_keys
- 將與新羣集通信所需的最小配置文件保存到
/etc/ceph/ceph.conf
- 將
client.admin
管理(特權!)密鑰的副本寫入/etc/ceph/ceph.client.admin.keyring
- 將公鑰的副本寫入
/etc/ceph/ceph.pub
安裝完成後會有一個dashboard界面
執行完成後我們可以查看ceph.conf已經寫入了
啓用 CEPH CLI
cephadm shell命令在安裝了所有Ceph包的容器中啓動bash shell。默認情況下,如果在主機上的/etc/ceph中找到配置和keyring文件,則會將它們傳遞到容器環境中,以便shell完全正常工作。
cephadm shell
可以在節點上安裝包含所有 ceph 命令的包,包括 、(用於安裝 CephFS 文件系統)等
cephadm add-repo --release octopus
cephadm install ceph-common
安裝過程很慢,可以手動將源改爲阿里的
添加主機到集羣
將公鑰添加到新主機
ssh-copy-id -f -i /etc/ceph/ceph.pub node2
ssh-copy-id -f -i /etc/ceph/ceph.pub node3
告訴Ceph,新節點是集羣的一部分
[root@localhost ~]# ceph orch host add node2
Added host 'node2'
[root@localhost ~]# ceph orch host add node3
Added host 'node3'
添加主機會自動擴展mon和mgr節點
部署其他監視器(可選)
典型的 Ceph 羣集具有三個或五個分佈在不同主機的mon守護程序。如果羣集中有五個或更多節點,建議部署五個mon。
當 Ceph 知道mon應該使用什麼 IP 子網時,它可以隨着羣集的增長(或收縮)自動部署和縮放mon。默認情況下,Ceph 假定其他mon使用與第一個mon的 IP 相同的子網。
在單個子網的情況下,如果向集羣中添加主機,默認最多隻會添加5個mon
如果有特定的IP子網給mon使用,可以使用CIDR格式配置該子網:
ceph config set mon public_network 10.1.2.0/24
cephadm只會在配置了特定子網IP的主機上部署mon守護程序
如果要調整特定子網mon的默認數量,可以執行以下命令:
ceph orch apply mon *<number-of-monitors>*
如果要在一組特定的主機上部署mon,可以執行以下命令:
ceph orch apply mon *<host1,host2,host3,...>*
如果要查看當前主機和標籤,可以執行以下命令:
[root@node1 ~]# ceph orch host ls
HOST ADDR LABELS STATUS
node1 node1
node2 node2
node3 node3
如果要禁用自動mon部署,執行以下命令:
ceph orch apply mon --unmanaged
要在不同網絡中添加mon執行以下命令:
ceph orch apply mon --unmanaged
ceph orch daemon add mon newhost1:10.1.2.123
ceph orch daemon add mon newhost2:10.1.2.0/24
如果要添加mon到多個主機,也可以用以下命令:
ceph orch apply mon "host1,host2,host3"
部署OSD
可以用以下命令顯示集羣中的存儲設備清單
ceph orch device ls
如果滿足以下所有條件,則存儲設備被視爲可用:
-
設備必須沒有分區。
-
設備不得具有任何 LVM 狀態。
-
不得安裝設備。
-
設備不能包含文件系統。
-
設備不得包含 Ceph BlueStore OSD。
- 設備必須大於 5 GB。
Ceph 拒絕在不可用的設備上預配 OSD。
爲保證能成功添加osd,我剛纔在每個node上新加了一塊磁盤
創建新 OSD 的方法有幾種方法:
在未使用的設備上自動創建osd
[root@node1 ~]# ceph orch apply osd --all-available-devices
Scheduled osd.all-available-devices update...
可以看到已經在三塊磁盤上創建了osd
從特定主機上的特定設備創建 OSD
ceph orch daemon add osd host1:/dev/sdb
部署MDS
使用 CephFS 文件系統需要一個或多個 MDS 守護程序。如果使用新的ceph fs卷接口來創建新文件系統,則會自動創建這些文件
部署元數據服務器:
ceph orch apply mds *<fs-name>* --placement="*<num-daemons>* [*<host1>* ...]"
CephFS 需要兩個 Pools,cephfs-data 和 cephfs-metadata,分別存儲文件數據和文件元數據
[root@node1 ~]# ceph osd pool create cephfs_data 64 64
[root@node1 ~]# ceph osd pool create cephfs_metadata 64 64
創建一個 CephFS, 名字爲 cephfs
[root@node1 ~]# ceph fs new cephfs cephfs_metadata cephfs_data
[root@node1 ~]# ceph orch apply mds cephfs --placement="3 node1 node2 node3"
Scheduled mds.cephfs update...
驗證至少有一個MDS已經進入active狀態,默認情況下,ceph只支持一個活躍的MDS,其他的作爲備用MDS
ceph fs status cephfs
部署RGW
Cephadm將radosgw部署爲管理特定領域和區域的守護程序的集合,RGW是Ceph對象存儲網關服務RADOS Gateway的簡稱,是一套基於LIBRADOS接口封裝而實現的FastCGI服務,對外提供RESTful風格的對象存儲數據訪問和管理接口。
使用 cephadm 時,radosgw 守護程序是通過mon配置數據庫而不是通過ceph.conf 或命令行配置的。如果該配置尚未就緒,則 radosgw 守護進程將使用默認設置啓動(默認綁定到端口 80)。
要在node1、node2和node3上部署3個服務於myorg領域和us-east-1區域的rgw守護進程,在部署 rgw 守護進程之前,如果它們不存在,則自動創建提供的域和區域:
ceph orch apply rgw myorg cn-east-1 --placement="3 node1 node2 node3"
或者可以使用radosgw-admin
命令手動創建區域、區域組和區域:
radosgw-admin realm create --rgw-realm=myorg --default
radosgw-admin zonegroup create --rgw-zonegroup=default --master --default
radosgw-admin zone create --rgw-zonegroup=default --rgw-zone=cn-east-1 --master --default
radosgw-admin period update --rgw-realm=myorg --commit
可以看到RGW已經創建完成
並且cephadm會自動安裝Prometheus和grafana等組件,grafana默認用戶密碼爲admin/admin,並且已經導入了Prometheus監控ceph的儀表盤
下篇文章將會介紹使用zabbix監控ceph分佈式存儲