Cephadm部署ceph octopus (15.2.13 )


   

Cephadm通過SSH連接manager daemon到主機,從而部署和管理Ceph群集。manager daemon能夠添加,刪除或更新Ceph containers。Cephadm首先在單節點上引導一個微小的Ceph集群(one monitor and one manager),然后自動將集群擴展到多個節點,並提供所有Ceph守護程序和服務。

 

A Ceph Storage Cluster requires at least one Ceph Monitor, Ceph Manager, and Ceph OSD (Object Storage Daemon). The Ceph Metadata Server is also required when running Ceph File System clients.

 

規划:

主機名

Public Network

Cluster Network

角色

ceph-mon1

192.168.0.151 

192.168.200.101 

monitor,mgr,rgw,mds,osd,nfs,cephadm

ceph-mon2 

192.168.0.152 

192.168.200.102 

monitor,mgr,rgw,mds,osd,nfs 

ceph-mon3 

192.168.0.153 

192.168.200.103 

monitor,mgr,rgw,mds,osd,nfs 

ceph-osd4 

192.168.0.154 

192.168.200.104 

  

     

說明:

  • ceph版本: 15.2.13 octopus (stable)
  • 集群的第一個節點也作為cephadm部署節點使用。

    Cluster Network 用於集群的內部通信

    Public Network 用於對外提供服務

    每台節點額外掛載兩個硬盤用於部署osd

          

環境初始化

修改主機名

hostnamectl set-hostname ceph-mon1

exec bash -l

# 注意,由於ceph的進程會在自己的UNIX socket文件里面把主機名也加進去作為文件名,所以主機名和hosts文件中配置的主機名必須一致

      

關閉selinux

setenforce 0

sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config

     

關閉防火牆

systemctl stop firewalld

systemctl disable firewalld

systemctl status firewalld

    

iptables為空

iptables -L

Chain INPUT (policy ACCEPT)

target prot opt source destination

   

Chain FORWARD (policy ACCEPT)

target prot opt source destination

   

Chain OUTPUT (policy ACCEPT)

target prot opt source destination

      

硬盤信息 

lsblk

   

     

Public Network    

服務器如果是克隆的注意刪除UUID (推薦使用MobaXterm多窗口同時編輯)

   

 Cluster Network

     

復制配置文件並修改

cp /etc/sysconfig/network-scripts/ifcfg-ens33 /etc/sysconfig/network-scripts/ifcfg-ens34

cp: overwrite '/etc/sysconfig/network-scripts/ifcfg-ens34'? y

   

[root@ceph-mon1 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens34

[root@ceph-mon1 ~]# systemctl restart network

        

   

配置時間同步(CentOS 7.9默認已安裝)

在所有 Ceph 節點上安裝並運行chrony服務,特別是監控節點以免因時鍾漂移導致故障
yum install -y chrony
systemctl enable --now chronyd

   

如果未安裝時間同步,運行cephadmin shell將出錯 

   

解決方法

內網時間同步也可以使用NTP服務器,搭建方法:https://www.cnblogs.com/st2021/p/14970131.html)

所有節點上都要運行時間服務

yum install ntp ntpdate -y

   

systemctl start ntpd.service
systemctl enable ntpd.service

     

   

配置hosts解析 

cat >> /etc/hosts << EOF

192.168.0.151 ceph-mon1

192.168.0.152 ceph-mon2

192.168.0.153 ceph-mon3

192.168.0.154 ceph-osd4

   

192.168.200.101 ceph-mon1

192.168.200.102 ceph-mon2

192.168.200.103 ceph-mon3

192.168.200.104 ceph-osd4

EOF

   

   

配置免密登錄

在ceph-mon1上新建ssh公鑰對,並配置免密登錄至集群其它節點

ssh-keygen -t rsa -P ''

   

for i in `tail -n 4 /etc/hosts | awk '{print $1}'`; do ssh-copy-id $i;done

   

復制hosts文件至其他節點

for i in `tail -n 4 /etc/hosts | awk '{print $1}'`; do scp /etc/hosts $i:/etc/ ;done

   

     

配置ceph yum源

注意,根據CentOS的版本不同,選擇如下兩個配置中的其中一個

CentOS 7

# 在所有節點上配置,或者配置好一份之后分法到其他節點上去
# 注意需要配置EPEL源
vi /etc/yum.repos.d/ceph.repo

[Ceph]
name=Ceph packages for $basearch
baseurl=https://mirrors.aliyun.com/ceph/rpm-octopus/el7/$basearch
enabled=1
gpgcheck=0
type=rpm-md

[Ceph-noarch]
name=Ceph noarch packages
baseurl=http://mirrors.aliyun.com/ceph/rpm-octopus/el7/noarch
enabled=1
gpgcheck=0
type=rpm-md

[ceph-source]
name=Ceph source packages
baseurl=http://mirrors.aliyun.com/ceph/rpm-octopus/el7/SRPMS
enabled=1
gpgcheck=0
type=rpm-md

   

     

CentOS 8

# 在所有節點上配置,或者配置好一份之后分法到其他節點上去
# 注意需要配置EPEL源
# vi /etc/yum.repos.d/ceph.repo

[Ceph]
name=Ceph packages for $basearch
baseurl=https://mirrors.aliyun.com/ceph/rpm-octopus/el8/$basearch
enabled=1
gpgcheck=0
type=rpm-md

[Ceph-noarch]
name=Ceph noarch packages
baseurl=http://mirrors.aliyun.com/ceph/rpm-octopus/el8/noarch
enabled=1
gpgcheck=0
type=rpm-md

[ceph-source]
name=Ceph source packages
baseurl=http://mirrors.aliyun.com/ceph/rpm-octopus/el8/SRPMS
enabled=1
gpgcheck=0
type=rpm-md

     

復制ceph yum源到其他節點上去

for i in `tail -n 4 /etc/hosts | awk '{print $1}'`; do scp /etc/yum.repos.d/ceph.repo $i:/etc/yum.repos.d/;done

     

yum clear all;yum makecache 

for i in `tail -n 4 /etc/hosts | awk '{print $1}'`; do ssh $i exec yum clear all;yum makecache ;done

   

yum 時候出現Another app is currently holding the yum lock; waiting for it to exit...解決方法

rm -rf /var/run/yum.pid 

   

     

安裝依賴

安裝python3  

for i in `tail -n 4 /etc/hosts | awk '{print $1}'`; do ssh $i exec yum install python3 -y ;done

     

安裝docker

cephadm基於容器運行所有ceph組件,所有節點需要安裝docker或podman,這里以安裝docker為例。

     

配置阿里雲yum源
yum-config-manager \

--add-repo \

http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

或:清華大學源

yum-config-manager \

--add-repo \

https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/docker-ce.repo

   

for i in `tail -n 4 /etc/hosts | awk '{print $1}'`; do ssh $i exec yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -y ;done

     

for i in `tail -n 4 /etc/hosts | awk '{print $1}'`; do ssh $i exec yum clear all;yum makecache ;done

   

   

安裝 Docker Engine-Community 和 containerd

yum install docker-ce docker-ce-cli containerd.io -y  

for i in `tail -n 4 /etc/hosts | awk '{print $1}'`; do ssh $i exec yum install docker-ce docker-ce-cli containerd.io -y ;done

        

配置docker鏡像加速
mkdir -p /etc/docker

cat > /etc/docker/daemon.json <<EOF

{

"registry-mirrors": [

"https://registry.docker-cn.com",

"http://hub-mirror.c.163.com",

"https://docker.mirrors.ustc.edu.cn"

]

}

EOF

   

Docker中國區官方鏡像

https://registry.docker-cn.com

網易

http://hub-mirror.c.163.com

中國科技大學

https://docker.mirrors.ustc.edu.cn  

   

for i in `tail -n 4 /etc/hosts | awk '{print $1}'`; do scp /etc/docker/daemon.json $i:/etc/docker/daemon.json ;done

   

啟動docker服務
systemctl start docker

systemctl enable docker  

systemctl daemon-reload

systemctl restart docker

   

查看是否成功

docker info

   

     

安裝cephadm

在ceph-mon1執行

wget https://github.com/ceph/ceph/raw/octopus/src/cephadm/cephadm

     

或者直接從github下載
curl https://raw.githubusercontent.com/ceph/ceph/v15.2.13/src/cephadm/cephadm -o cephadm

   

再不行直接在瀏覽器打開並復制代碼即可

   

 chmod a+x cephadm && cp cephadm /usr/bin/cephadm

   

cephadm其實就是一個python3腳本,可以直接運行,而不用安裝。

     

查看最新版本

   

     

   

引導新群集

ceph-mon1執行

mkdir -p /etc/ceph
cephadm bootstrap --mon-ip 192.168.0.151

   

mon-ip 就是第一個monitor daemon的IP地址     

該命令執行以下操作:

  • 在本地主機上為新集群創建monitor 和 manager daemon守護程序。
  • 為Ceph集群生成一個新的SSH密鑰,並將其添加到root用戶的/root/.ssh/authorized_keys文件中。
  • 將public key的副本寫入/etc/ceph/ceph.pub。
  • 將與新群集進行通信所需的最小配置文件保存到/etc/ceph/ceph.conf。
  • 向/etc/ceph/ceph.client.admin.keyring寫入client.admin可特權管理secret key的副本。
  • Add the _admin label to the bootstrap host. By default, any host with this label will (also) get a copy of /etc/ceph/ceph.conf and /etc/ceph/ceph.client.admin.keyring.

  注意 這個會生成密碼,需提前保存,方便后面訪問dashboard。

     

查看當前配置文件變化: 生成3個文件

ll /etc/ceph/

   

查看拉取的鏡像和啟動的容器

docker images

     

docker ps -a

   此時已經運行了以下組件

  • ceph-mgr ceph管理程序
  • ceph-monitor ceph監視器
  • ceph-crash 崩潰數據收集模塊
  • prometheus prometheus監控組件
  • grafana 監控數據展示dashboard
  • alertmanager prometheus告警組件
  • node_exporter prometheus節點數據收集組件

     

啟用CEPH命令

Cephadm不需要在主機上安裝任何Ceph包

Cephadm shell命令在安裝了所有Ceph包的容器中啟動bash shell。默認情況下,如果在主機上的/etc/ceph中找到配置和keyring文件,則會將它們傳遞到容器環境中,以便shell完全正常工作。注意,在MON主機上執行時,cephadm shell將從MON容器推斷配置,而不是使用默認配置。如果給定--mount,則主機(文件或目錄)將顯示在容器中的/mnt下面。

   

進入命令狀態

cephadm shell

查看所有組件運行狀態

ceph orch ps

   

查看某個組件運行狀態

ceph orch ps --daemon-type mon

ceph orch ps --daemon-type mgr

ceph orch ps --daemon-type mds

   

集群狀態

ceph status

   

ceph -v

ceph version 15.2.13 (c44bc49e7a57a87d84dfff2a077a2058aa2172e2) octopus (stable)

   

     

創建別名,非常實用的操作

alias ceph='cephadm shell -- ceph'

   

永久生效

vi /root/.bashrc

alias ceph='cephadm shell -- ceph'

   

source /root/.bashrc

   

     

 

   

將主機添加到集群中  

在新節點的root用戶的authorized_keys文件中安裝集群的公共SSH密鑰:
cd /etc/ceph/
ssh-copy-id -f -i ceph.pub root@ceph-mon2
ssh-copy-id -f -i ceph.pub root@ceph-mon3
ssh-copy-id -f -i ceph.pub root@ceph-osd4

   

添加節點

cephadm shell -- ceph orch apply mon --unmanaged

   

# 禁用自動部署mon節點,如果不做這一步,cephadm會自動在已添加的host上去部署mon和mgr進程。

一個典型的Ceph集群有3到5個monitor daemon。如果超過5個節點,官網建議使用5個monitor

守護程序  

cephadm shell -- ceph orch host add ceph-mon2
cephadm shell -- ceph orch host add ceph-mon3
cephadm shell -- ceph orch host add ceph-osd4

   

如果前面沒有執行ceph.pub的添加到新節點root用戶的authorized_keys文件,將報以下錯誤:

   

一個是系統的免密登錄,一個是集群的cephadm SSH密鑰

   

查看節點

ceph orch host ls

   

給需要部署mon進程的節點打上標簽

cephadm shell -- ceph orch host label add ceph-mon1 mon
cephadm shell -- ceph orch host label add ceph-mon2 mon
cephadm shell -- ceph orch host label add ceph-mon3 mon

   

根據標簽部署monitor

cephadm shell -- ceph orch apply mon label:mon

   

或者,將monitor部署在一組特定的主機上:

# ceph orch apply mon *<host1,host2,host3,...>*

注意,需確保在列表中包括第一台(引導)主機  

   

添加完成后ceph會自動擴展monitor和manager到另外2個節點,在另外2個節點查看,自動運行了以下容器

docker ps

   

     

驗證

cephadm shell -- ceph status

   

     

部署osd

列出節點上的所有可用設備

cephadm shell -- ceph orch device ls        

   

如果滿足以下所有條件,則認為存儲設備可用

  • 設備必須沒有分區。
  • 設備不得具有任何LVM狀態。
  • 設備不能被mounted。
  • 該設備不得包含文件系統。
  • 該設備不得包含Ceph BlueStore OSD。
  • 設備必須大於5 GB。

   

創建osd

方法1:從特定主機上的特定設備創建OSD

cephadm shell -- ceph orch daemon add osd ceph-mon1:/dev/sdb
cephadm shell -- ceph orch daemon add osd ceph-mon1:/dev/sdc
cephadm shell -- ceph orch daemon add osd ceph-mon2:/dev/sdb
cephadm shell -- ceph orch daemon add osd ceph-mon2:/dev/sdc
cephadm shell -- ceph orch daemon add osd ceph-mon3:/dev/sdb
cephadm shell -- ceph orch daemon add osd ceph-mon3:/dev/sdc
cephadm shell -- ceph orch daemon add osd ceph-osd4:/dev/sdb
cephadm shell -- ceph orch daemon add osd ceph-osd4:/dev/sdc

   

方法2:添加任何可用和未使用的存儲設備

ceph orch apply osd --all-available-devices

   

驗證

cephadm shell -- ceph orch device ls

cephadm shell -- ceph status
cephadm shell -- ceph osd tree

   

至此,ceph的基本環境已搭建完成,其他操作待續。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM