Ceph 離線(純內網(wǎng))部署
大家好,我是wanger。之前有寫過使用cephadm安裝ceph octopus,很多時候生產(chǎn)環(huán)境處于內網(wǎng)中,這就需要我們離線進行部署,下面是離線部署ceph的步驟。
制作離線安裝包
首先我們需要在有網(wǎng)的環(huán)境下緩存需要用到的deb包和docker鏡像
安裝docker-ce
- curl -sSL https://get.daocloud.io/docker | sh
- systemctl daemon-reload
- systemctl restart docker
- systemctl enable docker
安裝cephadm
使用curl獲取獨立腳本的最新版本。網(wǎng)絡不好的話可直接去GitHub復制
編輯/etc/resolv.conf文件修改nameserver為114,.114.114.114
- curl --silent --remote-name --location https://github.com/ceph/ceph/raw/octopus/src/cephadm/cephadm
- chmod +x cephadm
安裝cephadm
- ./cephadm add-repo --release octopus
- ./cephadm install
引導新群集
集要引導群集,需要先創(chuàng)建一個目錄:/etc/ceph
- mkdir -p /etc/ceph
以下操作只在一臺節(jié)點執(zhí)行就可以,然運行該命令:ceph bootstrap
- ./cephadm bootstrap --mon-ip 192.168.10.2
啟用ceph cli
- cephadm add-repo --release octopus
- cephadm install ceph-common
部署OSD
如果滿足以下所有_條件_,則存儲設備被視為可用:
- 設備必須沒有分區(qū)。
- 設備不得具有任何 LVM 狀態(tài)。
- 不得安裝設備。
- 設備不能包含文件系統(tǒng)。
- 設備不得包含 Ceph BlueStore OSD。
- 設備必須大于 5 GB。
Ceph 拒絕在不可用的設備上預配 OSD。為保證能成功添加osd,我剛才在每個node上新加了一塊磁盤
從特定主機上的特定設備創(chuàng)建 OSD
- ceph orch daemon add osd node1:/dev/sdb
安裝完成后我們可以看一下它用到了哪些docker鏡像
導出docker鏡像
需要把這些鏡像導出來,做成離線包
- root@node1:~# docker save -o ceph.tar quay.io/ceph/ceph:v15
- root@node1:~# docker save -o prometheus.tar quay.io/prometheus/prometheus:v2.18.1
- root@node1:~# docker save -o grafana.tar quay.io/ceph/ceph-grafana:6.7.4
- root@node1:~# docker save -o alertmanager.tar quay.io/prometheus/alertmanager:v0.20.0
- root@node1:~# docker save -o node-exporter.tar quay.io/prometheus/node-exporter:v0.18.1
導出deb包
剛才我們裝了docker和chrony還有cephadm,deb包會默認存放在 /var/cache/apt/archives目錄下,可以把這個目錄下的deb包緩存下來,新建一個文件夾,將下載的deb包拷貝到上述新建的文件夾下,并建立deb包的依賴關系
- apt-get install dpkg-dev -y
- mkdir /offlinePackage
- cp -r /var/cache/apt/archives /offlinePackage
- chmod 777 -R /offlinePackage/
- dpkg-scanpackages /offlinePackage/ /dev/null |gzip >/offlinePackage/Packages.gz
- tar zcvf offlinePackage.tar.gz /offlinePackage/
修改cephadm腳本
最后需要修改的是cephadm安裝腳本,默認安裝的時候cephadm是去網(wǎng)上pull鏡像,但是實際生產(chǎn)環(huán)境是沒有外網(wǎng)的,需要修改成直接用本地的鏡像,修改_pull_image函數(shù)的cmd列表中的pull,將其修改為images。(我用的是octopus版本,其他版本基本不變)
開始離線部署
前提條件
Cephadm使用容器和systemd安裝和管理Ceph集群,并與CLI和儀表板GUI緊密集成。
- cephadm僅支持octopus v15.2.0和更高版本。
- cephadm與新的業(yè)務流程API完全集成,并完全支持新的CLI和儀表板功能來管理集群部署。
- cephadm需要容器支持(podman或docker)和Python 3。
- 時間同步
基礎配置
這里我使用的ubuntu20.04來安裝的ceph,已經(jīng)內置了python3,不再單獨安裝,不做特殊說明三臺服務器都要執(zhí)行下面的步驟
配置hosts解析
- cat >> /etc/hosts <<EOF
- 192.168.10.2 node1
- 192.168.10.3 node2
- 192.168.10.4 node3
- EOF
分別在三個節(jié)點設置主機名
- hostnamectl set-hostname node1
- hostnamectl set-hostname node2
- hostnamectl set-hostname node3
配置本地源
注意:offlinedeb前面有一個空格
- tar zxvf offlinePackage.tar.gz -C /
- mv /etc/apt/sources.list /etc/apt/sources.list.bak
- vi /etc/apt/sources.list
- deb file:/// offlinePackage/
- apt update
安裝docker
- cd /offlinedeb/archives
- dpkg -i containerd.io_1.4.11-1_amd64.deb
- dpkg -i docker-ce-cli_5%3a20.10.10~3-0~ubuntu-focal_amd64.deb
- dpkg -i docker-ce-rootless-extras_5%3a20.10.10~3-0~ubuntu-focal_amd64.deb
- dpkg -i docker-ce_5%3a20.10.10~3-0~ubuntu-focal_amd64.deb
- systemctl start docker
- systemctl enable docker
導入docker鏡像
- docker load -i node-exporter.tar
- docker load -i alertmanager.tar
- docker load -i prometheus.tar
- docker load -i ceph.tar
- docker load -i grafana.tar
安裝cephadm
- chmod +x cephadm
- cp cephadm /usr/bin/
- apt install cephadm --allow-unauthenticated
- #如果有報錯,先執(zhí)行 apt --fix-broken install
引導新群集
以下操作只在一臺節(jié)點執(zhí)行就可以,然運行該命令:ceph bootstrap
- cephadm bootstrap --mon-ip 192.168.174.128
此命令將會進行以下操作:
- 為本地主機上的新群集創(chuàng)建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界面
執(zhí)行完成后我們可以查看ceph.conf已經(jīng)寫入了
安裝ceph
- cd /offlinePackage/archives
- dpkg -i *.deb #執(zhí)行此命令會將我們之前緩存的包都安裝完
添加主機到集群
將公鑰添加到新主機
- ssh-copy-id -f -i /etc/ceph/ceph.pub node2
- ssh-copy-id -f -i /etc/ceph/ceph.pub node3
告訴Ceph,新節(jié)點是集群的一部分
- [root@localhost ~]# ceph orch host add node2
- Added host 'node2'
- [root@localhost ~]# ceph orch host add node3
- Added host 'node3'
添加主機會自動擴展mon和mgr節(jié)點
部署OSD
可以用以下命令顯示集群中的存儲設備清單
- ceph orch device ls
如果滿足以下所有_條件_,則存儲設備被視為可用:
- 設備必須沒有分區(qū)。
- 設備不得具有任何 LVM 狀態(tài)。
- 不得安裝設備。
- 設備不能包含文件系統(tǒng)。
- 設備不得包含 Ceph BlueStore OSD。
- 設備必須大于 5 GB。
Ceph 拒絕在不可用的設備上預配 OSD。
從特定主機上的特定設備創(chuàng)建 OSD
- ceph orch daemon add osd node1:/dev/sdb
- ceph orch daemon add osd node1:/dev/sdc
- ceph orch daemon add osd node1:/dev/sdd
- ceph orch daemon add osd node1:/dev/sde
- ceph orch daemon add osd node2:/dev/sdd
- ceph orch daemon add osd node2:/dev/sdb
- ceph orch daemon add osd node2:/dev/sdc
- ceph orch daemon add osd node2:/dev/sde
- ceph orch daemon add osd node3:/dev/sdb
- ceph orch daemon add osd node3:/dev/sdc
- ceph orch daemon add osd node3:/dev/sdd
- ceph orch daemon add osd node3:/dev/sde
其他節(jié)點的ceph配置
libvirt的rbd存儲需要在其他ceph節(jié)點上能執(zhí)行ceph的命令,需要將node1的配置拷貝到node2和node3上
- root@node2:~# mkdir /etc/ceph
- root@node3:~# mkdir /etc/ceph
- root@node1:~# cd /etc/ceph
- root@node1:~# scp ceph* node2:/etc/ceph
- root@node1:~# scp ceph* node3:/etc/ceph
部署MDS
使用 CephFS 文件系統(tǒng)需要一個或多個 MDS 守護程序。如果使用新的ceph fs卷接口來創(chuàng)建新文件系統(tǒng),則會自動創(chuàng)建這些文件 部署元數(shù)據(jù)服務器:
- ceph orch apply mds *<fs-name>* --placement="*<num-daemons>* [*<host1>* ...]"
CephFS 需要兩個 Pools,cephfs-data 和 cephfs-metadata,分別存儲文件數(shù)據(jù)和文件元數(shù)據(jù)
- [root@node1 ~]# ceph osd pool create cephfs_data 64 64
- [root@node1 ~]# ceph osd pool create cephfs_metadata 64 64
- 創(chuàng)建一個 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已經(jīng)進入active狀態(tài),默認情況下,ceph只支持一個活躍的MDS,其他的作為備用MDS
- ceph fs status cephfs
部署RGW
Cephadm將radosgw部署為管理特定領域和區(qū)域的守護程序的集合,RGW是Ceph對象存儲網(wǎng)關服務RADOS Gateway的簡稱,是一套基于LIBRADOS接口封裝而實現(xiàn)的FastCGI服務,對外提供RESTful風格的對象存儲數(shù)據(jù)訪問和管理接口。
使用 cephadm 時,radosgw 守護程序是通過mon配置數(shù)據(jù)庫而不是通過ceph.conf 或命令行配置的。如果該配置尚未就緒,則 radosgw 守護進程將使用默認設置啟動(默認綁定到端口 80)。要在node1、node2和node3上部署3個服務于myorg領域和us-east-1區(qū)域的rgw守護進程,在部署 rgw 守護進程之前,如果它們不存在,則自動創(chuàng)建提供的域和區(qū)域:
- ceph orch apply rgw myorg cn-east-1 --placement="3 node1 node2 node3"
或者可以使用radosgw-admin命令手動創(chuàng)建區(qū)域、區(qū)域組和區(qū)域:
- 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
可以看到已經(jīng)創(chuàng)建完成