使用cephadm安裝ceph octopus

歡迎關注個人公號《運維開發故事》

前提條件

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命令可以

  1. 引導新集羣
  2. 使用有效的Ceph CLI啓動容器化的Shell
  3. 幫助調試容器化的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界面
使用cephadm安裝ceph octopus
使用cephadm安裝ceph octopus
執行完成後我們可以查看ceph.conf已經寫入了
使用cephadm安裝ceph octopus



啓用 CEPH CLI

cephadm shell命令在安裝了所有Ceph包的容器中啓動bash shell。默認情況下,如果在主機上的/etc/ceph中找到配置和keyring文件,則會將它們傳遞到容器環境中,以便shell完全正常工作。

cephadm shell

使用cephadm安裝ceph octopus
可以在節點上安裝包含所有 ceph 命令的包,包括 、(用於安裝 CephFS 文件系統)等

cephadm add-repo --release octopus
cephadm install ceph-common

安裝過程很慢,可以手動將源改爲阿里的
使用cephadm安裝ceph octopus

添加主機到集羣

將公鑰添加到新主機

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節點
使用cephadm安裝ceph octopus

部署其他監視器(可選)

典型的 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

使用cephadm安裝ceph octopus
如果滿足以下所有條件,則存儲設備被視爲可用:

  • 設備必須沒有分區。

  • 設備不得具有任何 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
使用cephadm安裝ceph octopus

從特定主機上的特定設備創建 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...

使用cephadm安裝ceph octopus
驗證至少有一個MDS已經進入active狀態,默認情況下,ceph只支持一個活躍的MDS,其他的作爲備用MDS

ceph fs status cephfs

使用cephadm安裝ceph octopus

部署RGW

Cephadm將radosgw部署爲管理特定領域和區域的守護程序的集合,RGW是Ceph對象存儲網關服務RADOS Gateway的簡稱,是一套基於LIBRADOS接口封裝而實現的FastCGI服務,對外提供RESTful風格的對象存儲數據訪問和管理接口。
使用cephadm安裝ceph octopus
使用 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安裝ceph octopus
使用cephadm安裝ceph octopus
並且cephadm會自動安裝Prometheus和grafana等組件,grafana默認用戶密碼爲admin/admin,並且已經導入了Prometheus監控ceph的儀表盤
使用cephadm安裝ceph octopus
下篇文章將會介紹使用zabbix監控ceph分佈式存儲
使用cephadm安裝ceph octopus





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章