使用cephadm安裝ceph octopus


https://docs.ceph.com/en/latest/cephadm/#   cephad工具官網介紹

一、基礎配置

Cephadm使用容器和systemd安裝和管理Ceph集群,並與CLI和儀表板GUI緊密集成。

  • cephadm僅支持octopus  v15.2.0和更高版本。
  • cephadm與新的業務流程API完全集成,並完全支持新的CLI和儀表板功能來管理集群部署。
  • cephadm需要容器支持(podman或docker)和Python 3。
  • 時間同步

使用的centos8來安裝的ceph,已經內置了python3,不再單獨安裝,centos7需要單獨安裝python3

1、配置hosts解析

# cat /etc/hosts
192.168.40.132 node1
192.168.40.133 node2
192.168.40.134 node3

2、關閉防火牆和selinux

systemctl stop firewalld && systemctl disable firewalld
setenforce 0 && sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config

3、設置主機名

hostnamectl set-hostname node1
hostnamectl set-hostname node2
hostnamectl set-hostname node3

4、配置主機時間同步

dnf install -y chrony

mv /etc/chrony.conf /etc/chrony.conf.bak

cat > /etc/chrony.conf <<EOF
server ntp.aliyun.com iburst
stratumweight 0
driftfile /var/lib/chrony/drift
rtcsync
makestep 10 3
bindcmdaddress 127.0.0.1
bindcmdaddress ::1
keyfile /etc/chrony.keys
commandkey 1
generatecommandkey
logchange 0.5
logdir /var/log/chrony
EOF

systemctl enable chronyd
systemctl restart chronyd

5、安裝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  (wget也行)
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.40.132

此命令將會進行以下操作:

  • 為本地主機上的新群集創建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界面

Mgr epoch 13 is available
Generating a dashboard self-signed certificate...
Creating initial admin user...
Fetching dashboard port number...
Ceph Dashboard is now available at:

	     URL: https://node1:8443/
	    User: admin
	Password: rlvdfqj1di

You can access the Ceph CLI with:

	sudo /usr/sbin/cephadm shell --fsid 418abd02-42a9-11eb-91f4-000c298c369a -c /etc/ceph/ceph.conf -k /etc/ceph/ceph.client.admin.keyring

Please consider enabling telemetry to help improve Ceph:

	ceph telemetry on

For more information see:

	https://docs.ceph.com/docs/master/mgr/telemetry/

Bootstrap complete.

瀏覽器訪問8443

瀏覽器訪問3000(ceph監控)

執行完成后我們可以查看ceph.conf已經寫入了

[root@node1 ~]# ll /etc/ceph/
total 12
-rw-------. 1 root root  63 Dec 20 17:55 ceph.client.admin.keyring
-rw-r--r--. 1 root root 179 Dec 20 17:55 ceph.conf
-rw-r--r--. 1 root root 595 Dec 20 17:55 ceph.pub
[root@node1 ~]# cat /etc/ceph/ceph.conf 
# minimal ceph.conf for 418abd02-42a9-11eb-91f4-000c298c369a
[global]
	fsid = 418abd02-42a9-11eb-91f4-000c298c369a
	mon_host = [v2:192.168.40.132:3300/0,v1:192.168.40.132:6789/0]

三、啟用 CEPH CLI(將ceph命令映射到本地)

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

# cephadm shell
Inferring fsid 418abd02-42a9-11eb-91f4-000c298c369a
Inferring config /var/lib/ceph/418abd02-42a9-11eb-91f4-000c298c369a/mon.node1/config
Using recent ceph image ceph/ceph:v15
[ceph: root@node1 /]# 

[ceph: root@node1 /]# ceph -s
  cluster:
    id:     418abd02-42a9-11eb-91f4-000c298c369a
    health: HEALTH_WARN
            OSD count 0 < osd_pool_default_size 3
 
  services:
    mon: 1 daemons, quorum node1 (age 16m)
    mgr: node1.bibyjy(active, since 15m)
    osd: 0 osds: 0 up, 0 in
 
  data:
    pools:   0 pools, 0 pgs
    objects: 0 objects, 0 B
    usage:   0 B used, 0 B / 0 B avail
    pgs:     

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

# cephadm add-repo --release octopus (官方的源)
Writing repo to /etc/yum.repos.d/ceph.repo...
Enabling EPEL...
添加Octopus版本的阿里的yum源

vim /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=https://mirrors.aliyun.com/ceph/rpm-octopus/el8/noarch
enabled=1
gpgcheck=0
type=rpm-md

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

添加centos8的epel

yum install -y https://mirrors.aliyun.com/epel/epel-release-latest-8.noarch.rpm   (實測,8.2虛擬機添加不上)
sed -i 's|^#baseurl=https://download.fedoraproject.org/pub|baseurl=https://mirrors.aliyun.com|' /etc/yum.repos.d/epel*
sed -i 's|^metalink|#metalink|' /etc/yum.repos.d/epel*

ceph好幾個依賴包需要epel源

Installed:
  ceph-common-2:15.2.8-0.el8.x86_64                            fmt-6.2.1-1.el8.x86_64                                    
  gperftools-libs-2.7-6.el8.x86_64                             leveldb-1.22-1.el8.x86_64                                 
  libbabeltrace-1.5.4-3.el8.x86_64                             libcephfs2-2:15.2.8-0.el8.x86_64                          
  libibverbs-29.0-3.el8.x86_64                                 liboath-2.6.2-3.el8.x86_64                                
  librabbitmq-0.9.0-2.el8.x86_64                               librados2-2:15.2.8-0.el8.x86_64                           
  libradosstriper1-2:15.2.8-0.el8.x86_64                       librbd1-2:15.2.8-0.el8.x86_64                             
  librdkafka-0.11.4-1.el8.x86_64                               librdmacm-29.0-3.el8.x86_64                               
  librgw2-2:15.2.8-0.el8.x86_64                                libunwind-1.3.1-3.el8.x86_64                              
  python3-ceph-argparse-2:15.2.8-0.el8.x86_64                  python3-ceph-common-2:15.2.8-0.el8.x86_64                 
  python3-cephfs-2:15.2.8-0.el8.x86_64                         python3-prettytable-0.7.2-14.el8.noarch                   
  python3-rados-2:15.2.8-0.el8.x86_64                          python3-rbd-2:15.2.8-0.el8.x86_64                         
  python3-rgw-2:15.2.8-0.el8.x86_64                            rdma-core-29.0-3.el8.x86_64   

手動添加epel源

# cat epel.repo 
[epel]
name=Extra Packages for Enterprise Linux $releasever - $basearch
baseurl=https://mirrors.aliyun.com/epel/$releasever/Everything/$basearch
#metalink=https://mirrors.fedoraproject.org/metalink?repo=epel-$releasever&arch=$basearch&infra=$infra&content=$contentdir
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-8

安裝ceph-common

# cephadm install ceph-common
Installing packages ['ceph-common']...

節點cli安裝成功

# ceph -v
ceph version 15.2.8 (bdf3eebcd22d7d0b3dd4d5501bee5bac354d5b55) octopus (stable)

# ceph -s
  cluster:
    id:     418abd02-42a9-11eb-91f4-000c298c369a
    health: HEALTH_WARN
            Reduced data availability: 1 pg inactive
            OSD count 0 < osd_pool_default_size 3
 
  services:
    mon: 1 daemons, quorum node1 (age 15m)
    mgr: node1.bibyjy(active, since 15m)
    osd: 0 osds: 0 up, 0 in
 
  data:
    pools:   1 pools, 1 pgs
    objects: 0 objects, 0 B
    usage:   0 B used, 0 B / 0 B avail
    pgs:     100.000% pgs unknown
             1 unknown

添加主機到集群

將公鑰添加到新主機

ssh-copy-id -f -i /etc/ceph/ceph.pub node2
ssh-copy-id -f -i /etc/ceph/ceph.pub node3

告訴Ceph,新節點是集群的一部分

# ceph orch host add node2
Added host 'node2'
# ceph orch host add node3
Added host 'node3'

添加主機會自動擴展mon和mgr節點(虛擬機測試,其余每個節點都導入鏡像,過了很長時間,重啟虛擬機后才加入成功)

# ceph -s
  cluster:
    id:     418abd02-42a9-11eb-91f4-000c298c369a
    health: HEALTH_WARN
            Reduced data availability: 1 pg inactive
            OSD count 0 < osd_pool_default_size 3
 
  services:
    mon: 3 daemons, quorum node1,node2,node3 (age 39m)
    mgr: node1.bibyjy(active, since 40m), standbys: node2.urnpav
    osd: 0 osds: 0 up, 0 in
 
  data:
    pools:   1 pools, 1 pgs
    objects: 0 objects, 0 B
    usage:   0 B used, 0 B / 0 B avail
    pgs:     100.000% pgs unknown
             1 unknown

standbys(備用): node2.urnpav

部署其他監視器(可選)

典型的 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,...>*

查看當前主機和標簽

# 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

# ceph orch apply osd --all-available-devices
Scheduled osd.all-available-devices update...

可以看到已經在三塊磁盤上創建了osd

  services:
    mon: 3 daemons, quorum node1,node2,node3 (age 52m)
    mgr: node2.urnpav(active, since 74m)
    osd: 3 osds: 2 up (since 17m), 2 in (since 7m)

從特定主機上的特定設備創建 OSD

ceph orch daemon add osd host1:/dev/sdb

查看osd的map

# ceph osd tree
ID  CLASS  WEIGHT   TYPE NAME       STATUS  REWEIGHT  PRI-AFF
-1         0.05846  root default                             
-5         0.01949      host node1                           
 2    hdd  0.01949          osd.2     down         0  1.00000
-3         0.01949      host node2                           
 0    hdd  0.01949          osd.0       up   1.00000  1.00000
-7         0.01949      host node3                           
 1    hdd  0.01949          osd.1       up   1.00000  1.00000

http://docs.ceph.org.cn/rados/operations/monitoring-osd-pg/ 官網關於osd狀態文檔

http://docs.ceph.org.cn/rados/troubleshooting/troubleshooting-osd/#osd-not-running    osd not running問題排查

啟動一個down的osd

sudo /etc/init.d/ceph -a start osd.1

部署MDS

使用 CephFS 文件系統需要一個或多個 MDS 守護程序。如果使用新的ceph fs卷接口來創建新文件系統,則會自動創建這些文件 部署元數據服務器:

ceph orch apply mds *<fs-name>* --placement="*<num-daemons>* [*<host1>* ...]"

CephFS 需要兩個 Pools,cephfs-data 和 cephfs-metadata,分別存儲文件數據和文件元數據

# ceph osd pool create cephfs_data 64 64
# ceph osd pool create cephfs_metadata 64 64
創建一個 CephFS, 名字為 cephfs
# ceph fs new cephfs cephfs_metadata cephfs_data
# ceph orch apply mds cephfs --placement="3 node1 node2 node3"
Scheduled mds.cephfs update...

[root@node1 ~]# ceph  -s 
  data:
    pools:   3 pools, 129 pgs
    objects: 0 objects, 0 B
    usage:   3.0 GiB used, 57 GiB / 60 GiB avail
    pgs:     129 active+undersized

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

# ceph fs status cephfs
cephfs - 0 clients
======
RANK  STATE           MDS             ACTIVITY     DNS    INOS  
 0    active  cephfs.node2.xdznta  Reqs:    0 /s    10     13   
      POOL         TYPE     USED  AVAIL  
cephfs_metadata  metadata  1024k  26.9G  
  cephfs_data      data       0   17.9G  
    STANDBY MDS      
cephfs.node1.pemzxl  
MDS version: ceph version 15.2.8 (bdf3eebcd22d7d0b3dd4d5501bee5bac354d5b55) octopus (stable)

部署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 --c

查看

# ceph orch ls 
NAME                       RUNNING  REFRESHED  AGE  PLACEMENT                  IMAGE NAME                            IMAGE ID      
alertmanager                   1/1  6m ago     7d   count:1                    docker.io/prom/alertmanager:v0.20.0   0881eb8f169f  
crash                          3/3  6m ago     7d   *                          docker.io/ceph/ceph:v15               5553b0cb212c  
grafana                        1/1  6m ago     7d   count:1                    docker.io/ceph/ceph-grafana:6.6.2     a0dce381714a  
mds.cephfs                     3/3  6m ago     6m   node1;node2;node3;count:3  docker.io/ceph/ceph:v15               5553b0cb212c  
mgr                            2/2  6m ago     7d   count:2                    docker.io/ceph/ceph:v15               5553b0cb212c  
mon                            3/3  6m ago     6d   label:mon                  docker.io/ceph/ceph:v15               5553b0cb212c  
node-exporter                  3/3  6m ago     7d   *                          docker.io/prom/node-exporter:v0.18.1  e5a616e4b9cf  
osd.all-available-devices      3/3  6m ago     80m  *                          docker.io/ceph/ceph:v15               5553b0cb212c  
prometheus                     1/1  6m ago     7d   count:1                    docker.io/prom/prometheus:v2.18.1     de242295e225  
rgw.myorg.cn-east-1            0/3  -          -    node1;node2;node3;count:3  <unknown>                             <unknown>     

一個健康的測試三節點集群

ceph常用命令

 1 ceph -s #查看集群狀態
 2 ceph osd tree #查看osd的map
 3 ceph osd lspools #查看ceph集群所有的pool
 4 rbd create name --size 10G --image-feature layering#創建rbd
 5 rbd ls -l #查看rbd列表
 6 rbd  remove rbd-name #刪除rbd
 7 rbd map disk01 #在客戶端映射rbd map
 8 rbd showmapped #顯示rbd map
 9 ceph osd pool create poolname pg的數量         #創建存儲池
10 ceph osd pool rm poolname poolname --yes-i-really-really-mean-it #刪除存儲池
11 ceph fs new cephfs cephfs_metadata cephfs_data #開啟ceph文件系統的pool
12 ceph fs ls #顯示ceph fs(文件系統)
13 ceph mds stat #參看mds 狀態
14 ssh cent@mds-nodename "sudo ceph-authtool -p /etc/ceph/ceph.client.admin.keyring" > admin.key   #獲取admin key
15 systemctl stop ceph-mds@mds-nodename  #停止ceph-mds服務
16 ceph mds fail 0 #把mds狀態重置
17 ceph fs rm cephfs --yes-i-really-mean-it #刪除ceph-文件系統

 

 

 

https://mp.weixin.qq.com/s/5KPLCSryefAmCCeA09vv1w   使用cephadm安裝ceph octopus

https://blog.csdn.net/caiyqn/article/details/106535070    CentOS8安裝與配置Ceph Octopus教程


免責聲明!

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



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