溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Ceph 手工部署13.2版本

發(fā)布時(shí)間:2020-07-20 03:21:04 來(lái)源:網(wǎng)絡(luò) 閱讀:2329 作者:酥心糖 欄目:云計(jì)算

安裝ceph

官方文檔

0. 部署前的準(zhǔn)備

在部署之前需要準(zhǔn)備好三臺(tái)CentOS主機(jī),我這里使用的是CentOS7.5,并將系統(tǒng)內(nèi)核升級(jí)到4.x長(zhǎng)期支持版本,相關(guān)的配置信息如下:

  1. 節(jié)點(diǎn)主機(jī)名和IP信息
local-node-1: 10.0.0.1
local-node-2: 10.0.0.2
local-node-3: 10.0.0.3
  1. 配置hosts解析三臺(tái)節(jié)點(diǎn)的主機(jī)名,并將三臺(tái)節(jié)點(diǎn)配置為無(wú)密碼認(rèn)證模式。

  2. 關(guān)閉防火墻和Selinux

  3. 每臺(tái)主機(jī)節(jié)點(diǎn)至少添加3塊磁盤用于ceph存儲(chǔ),在實(shí)際的生產(chǎn)中可以將多塊盤做raid,ceph 在添加磁盤時(shí)會(huì)自動(dòng)格式化,所以此處不需要格式化。

  4. ceph對(duì)節(jié)點(diǎn)之間時(shí)間的要求很高,需要安裝ntp并做好時(shí)間同步,配置好epel源。
1. 所有節(jié)點(diǎn)安裝依賴包
yum install snappy  leveldb gdisk python-argparse gperftools-libs  -y

添加yum 源,導(dǎo)入key,這里我使用最新的mimic版本:

rpm --import 'https://download.ceph.com/keys/release.asc'
su -c 'rpm -Uvh https://download.ceph.com/rpm-mimic/el7/noarch/ceph-release-1-0.el7.noarch.rpm'

由于國(guó)內(nèi)的網(wǎng)絡(luò)問題,這里可以選擇使用阿里云的源,修改ceph.repo文件如下:

[Ceph]
name=Ceph packages for $basearch
baseurl=https://mirrors.aliyun.com/ceph/rpm-mimic/el7/$basearch
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://download.ceph.com/keys/release.asc

[Ceph-noarch]
name=Ceph noarch packages
baseurl=https://mirrors.aliyun.com/ceph/rpm-mimic/el7/noarch
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://download.ceph.com/keys/release.asc

[ceph-source]
name=Ceph source packages
baseurl=https://mirrors.aliyun.com/ceph/rpm-mimic/el7/SRPMS
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://download.ceph.com/keys/release.asc
2. 所有節(jié)點(diǎn)安裝ceph
 yum install ceph -y --disablerepo=epel
3. 檢查安裝包是否完整
[root@local-node-1 ~]# rpm -qa |egrep -i "ceph|rados|rbd"
ceph-deploy-2.0.1-0.noarch
librados2-13.2.5-0.el7.x86_64
libradosstriper1-13.2.5-0.el7.x86_64
ceph-mgr-13.2.5-0.el7.x86_64
ceph-13.2.5-0.el7.x86_64
python-rados-13.2.5-0.el7.x86_64
libcephfs2-13.2.5-0.el7.x86_64
python-rbd-13.2.5-0.el7.x86_64
ceph-common-13.2.5-0.el7.x86_64
ceph-selinux-13.2.5-0.el7.x86_64
ceph-mon-13.2.5-0.el7.x86_64
ceph-osd-13.2.5-0.el7.x86_64
librbd1-13.2.5-0.el7.x86_64
python-cephfs-13.2.5-0.el7.x86_64
ceph-base-13.2.5-0.el7.x86_64
ceph-mds-13.2.5-0.el7.x86_64

部署ceph集群

一. 部署Monitor

  1. 創(chuàng)建配置文件目錄,并創(chuàng)建配置文件
mkdir /etc/ceph/
touch /etc/ceph/ceph.conf
  1. 為集群生成一個(gè)FSDI:
[root@local-node-1 ~]# uuidgen
7bd25f8d-b76f-4ff9-89ec-186287bbeaa5

3.集群創(chuàng)建一個(gè)鑰匙串,為Monitor 服務(wù)創(chuàng)建一個(gè)密鑰:

[root@local-node-1 ~]# ceph-authtool --create-keyring /tmp/ceph.mon.keyring --gen-key -n mon. --cap mon 'allow *'
creating /tmp/ceph.mon.keyring

4.創(chuàng)建一個(gè)管理員鑰匙串,生成一個(gè)client.admin用戶,并將此用戶添加到鑰匙串中:

[root@local-node-1 ~]# ceph-authtool --create-keyring /etc/ceph/ceph.client.admin.keyring --gen-key -n client.admin --cap mon 'allow *' --cap osd 'allow *' --cap mds 'allow *' --cap mgr 'allow *'
creating /etc/ceph/ceph.client.admin.keyring
  1. 創(chuàng)建bootstrap-osd鑰匙串,將client.bootstrap-osd 用戶添加到此鑰匙串中:
[root@local-node-1 ~]# ceph-authtool --create-keyring /var/lib/ceph/bootstrap-osd/ceph.keyring --gen-key -n client.bootstrap-osd --cap mon 'profile bootstrap-osd'
creating /var/lib/ceph/bootstrap-osd/ceph.keyring
  1. 將生成的key加入ceph.mon.keyring.
[root@local-node-1 ~]# ceph-authtool /tmp/ceph.mon.keyring --import-keyring /etc/ceph/ceph.client.admin.keyring

[root@local-node-1 ~]# ceph-authtool /tmp/ceph.mon.keyring --import-keyring /var/lib/ceph/bootstrap-osd/ceph.keyring
  1. 使用主機(jī)名和IP地址以及FSID生成monitor map:
[root@local-node-1 ~]# monmaptool --create --add local-node-1 10.0.0.1  --fsid 7bd25f8d-b76f-4ff9-89ec-186287bbeaa5 /tmp/monmap
monmaptool: monmap file /tmp/monmap
monmaptool: set fsid to 7bd25f8d-b76f-4ff9-89ec-186287bbeaa5
monmaptool: writing epoch 0 to /tmp/monmap (1 monitors)
  1. 創(chuàng)建mon的目錄,使用 集群名稱-主機(jī)名的形式:
 mkdir  /var/lib/ceph/mon/ceph-local-node-1
  1. 填入第一個(gè)mon守護(hù)進(jìn)程的信息:
[root@local-node-1 ~]# ceph-mon --mkfs -i local-node-1 --monmap /tmp/monmap --keyring /tmp/ceph.mon.keyring
  1. 配置/etc/ceph/ceph.conf文件:
[root@local-node-1 ~]# cat /etc/ceph/ceph.conf

[global]
fsid = 7bd25f8d-b76f-4ff9-89ec-186287bbeaa5     # 生成的FSID
mon initial members = local-node-1              # 主機(jī)名
mon host = 10.0.0.1                             # 對(duì)應(yīng)的IP
public network = 10.0.0.0/24         
auth cluster required = cephx
auth service required = cephx
auth client required = cephx
osd journal size = 1024
osd pool default size = 3
osd pool default min size = 2
osd pool default pg num = 333
osd pool default pgp num = 333
osd crush chooseleaf type = 1
  1. 由于我們使用使用root操作的,需要設(shè)置權(quán)限為ceph(也可以修改systemd的啟動(dòng)文件,將ceph用戶改為root),并啟動(dòng)Monitor
chown  -R ceph:ceph /var/lib/ceph

systemctl start ceph-mon@local-node-1.service
  1. 確認(rèn)服務(wù)已經(jīng)正常啟動(dòng):
[root@local-node-1 ~]# ceph -s
  cluster:
    id:     7bd25f8d-b76f-4ff9-89ec-186287bbeaa5
    health: HEALTH_OK

  services:
    mon: 1 daemons, quorum local-node-1
    mgr: no daemons active
    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:     

[root@local-node-1 ~]# netstat -lntp|grep ceph-mon
tcp        0      0 10.0.0.1:6789           0.0.0.0:*               LISTEN      1799/ceph-mon 

二. 部署Manager

當(dāng)我們配置好ceph-mon服務(wù)之后,就需要配置ceph-mgr服務(wù)。

  1. 生成一個(gè)認(rèn)證密鑰(ceph-mgr為自定義的名稱,替換下面的$name):
ceph auth get-or-create mgr.$name mon 'allow profile mgr' osd 'allow *' mds 'allow *'

如:
[root@local-node-1 ~]# ceph auth get-or-create mgr.ceph-mgr mon 'allow profile mgr' osd 'allow *' mds 'allow *'
[mgr.ceph-mgr]
    key = AQBC56VcK2PALhAArjY0icXMK6/Hs0xZm/smPA==
  1. 創(chuàng)建存放此密鑰的文件的目錄,(目錄名稱為 集群名-$name):
sudo -u ceph mkdir /var/lib/ceph/mgr/ceph-ceph-mgr
  1. 將上面產(chǎn)生的密鑰文件存入此目錄下,并命名為keyring:
[root@local-node-1 ~]# cat /var/lib/ceph/mgr/ceph-ceph-mgr/keyring 
[mgr.ceph-mgr]
    key = AQBC56VcK2PALhAArjY0icXMK6/Hs0xZm/smPA==
  1. 啟動(dòng)ceph-mgr服務(wù):
ceph-mgr -i $name

如:
[root@local-node-1 ~]# ceph-mgr -i ceph-mgr
  1. 檢查服務(wù)是否啟動(dòng),查看ceph狀態(tài),此時(shí)應(yīng)該為mgr: ceph-mgr(active)
[root@local-node-1 ~]# ceph -s
  cluster:
    id:     7bd25f8d-b76f-4ff9-89ec-186287bbeaa5
    health: HEALTH_OK

  services:
    mon: 1 daemons, quorum local-node-1
    mgr: ceph-mgr(active)           # 如果為starting狀態(tài)需要稍等一會(huì)兒
    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:     

[root@local-node-1 ~]# netstat -lntp | grep ceph
tcp        0      0 10.0.0.1:6789           0.0.0.0:*               LISTEN      1799/ceph-mon       
tcp        0      0 10.0.0.1:6800           0.0.0.0:*               LISTEN      133336/ceph-mgr     
  1. mgr服務(wù)正常之后,我們可以使用如下命令查看當(dāng)前mgr中可用的模塊:
[root@local-node-1 ~]#  ceph mgr module ls
{
    "enabled_modules": [
        "balancer",
        "iostat",
        "restful",
        "status"
    ],
    "disabled_modules": [
        {
            "name": "dashboard",
            "can_run": true,
            "error_string": ""
        },
        {
            "name": "hello",
            "can_run": true,
            "error_string": ""
        },
        {
            "name": "influx",
            "can_run": false,
            "error_string": "influxdb python module not found"
        },
        {
            "name": "localpool",
            "can_run": true,
            "error_string": ""
        },
        {
            "name": "prometheus",
            "can_run": true,
            "error_string": ""
        },
        {
            "name": "selftest",
            "can_run": true,
            "error_string": ""
        },
        {
            "name": "smart",
            "can_run": true,
            "error_string": ""
        },
        {
            "name": "telegraf",
            "can_run": true,
            "error_string": ""
        },
        {
            "name": "telemetry",
            "can_run": true,
            "error_string": ""
        },
        {
            "name": "zabbix",
            "can_run": true,
            "error_string": ""
        }
    ]
}
  1. 如果想開啟某個(gè)模塊,可以使用如下命令:
[root@local-node-1 ~]# ceph mgr module enable dashboard
[root@local-node-1 ~]# ceph mgr module ls
{
    "enabled_modules": [
        "balancer",
        "dashboard",
        "iostat",
        "restful",
        "status"
    ],
...

# 禁用模塊
 ceph mgr module disable dashboard
  1. 如果模塊可以在加載時(shí)發(fā)布其地址(如http服務(wù)),可以通過如下命令查看開啟的服務(wù)地址:
[root@local-node-1 ~]# ceph mgr services
{}
  1. 群集第一次啟動(dòng)時(shí),它使用mgr_initial_modules設(shè)置來(lái)覆蓋要啟用的模塊。 但是,在集群的其余生命周期中忽略此設(shè)置:僅將其用于引導(dǎo)。 例如,在第一次啟動(dòng)監(jiān)視器守護(hù)程序之前,您可以在ceph.conf中添加這樣的部分:
[mon]
    mgr initial modules = dashboard balancer
ceph-mgr的高可用

通常情況下,我們應(yīng)該在運(yùn)行ceph-mon守護(hù)程序的每臺(tái)主機(jī)上配置ceph-mgr服務(wù),以實(shí)現(xiàn)相同的可用性級(jí)別。
默認(rèn)情況下,首先出現(xiàn)的ceph-mgr實(shí)例將由Monitor激活,其他成為是備用節(jié)點(diǎn)。ceph-mgr守護(hù)進(jìn)程中不需要仲裁。
如果活動(dòng)守護(hù)程序未能向監(jiān)視器發(fā)送信標(biāo)超過mon mgr beacon grace(默認(rèn)為30秒),則它將被備用數(shù)據(jù)庫(kù)替換。
如果要搶占故障轉(zhuǎn)移,可以使用ceph mgr fail <mgr name>將ceph-mgr守護(hù)程序顯式標(biāo)記為失敗。

相關(guān)模塊的幫助命令可以使用:

ceph tell mgr help

三. 創(chuàng)建OSD

官方文檔

當(dāng)mon初始化完成并正常運(yùn)行后,應(yīng)添加OSD。 在有足夠的OSD來(lái)處理對(duì)象的副本數(shù)量之前,群集無(wú)法達(dá)到active + clean狀態(tài)(例如,osd池默認(rèn)大小= 3需要至少三個(gè)OSD)。 引導(dǎo)監(jiān)視器后,您的群集具有默認(rèn)的CRUSH映射; 但是,CRUSH映射沒有映射到Ceph節(jié)點(diǎn)的任何Ceph OSD守護(hù)進(jìn)程。

Ceph提供了ceph-volume實(shí)用程序,它可以初始化Ceph使用的邏輯卷,磁盤或分區(qū)等。 ceph-volume實(shí)用程序通過遞增索引來(lái)創(chuàng)建OSD ID。 此外,ceph-volume會(huì)將新的OSD添加到主機(jī)下的CRUSH地圖中??梢酝ㄟ^執(zhí)行ceph-volume -h以獲取CLI詳細(xì)信息。 ceph-volume工具可以簡(jiǎn)化很多手工部署的步驟,如果不使用ceph-volume,就需要手動(dòng)完成一些配置。 要使用短格式過程創(chuàng)建前三個(gè)OSD,請(qǐng)?jiān)谒幸獎(jiǎng)?chuàng)建osd的node上執(zhí)行以下操作:

==ceph OSD的創(chuàng)建有兩種不同的架構(gòu)選擇,分為filestore和bluestore,bulestore是社區(qū)版本的默認(rèn)配置,也是旨在對(duì)filestore性能方面的優(yōu)化,兩者具體的差異將在ceph原理中介紹。==

BlueStore
方式一:
  1. 創(chuàng)建OSD,如在每個(gè)節(jié)點(diǎn)上我們都有三塊磁盤,分別為sdb,sdc,sdd.
 ceph-volume lvm create --data /dev/sdb
 ceph-volume lvm create --data /dev/sdc
 ceph-volume lvm create --data /dev/sdd
  1. 查看當(dāng)前的lvm邏輯卷,根據(jù)此輸出內(nèi)容進(jìn)行下一步激活OSD的操作
[root@local-node-1 ~]# ceph-volume lvm list

====== osd.1 =======

  [block]    /dev/ceph-fad16202-18c0-4444-9640-946173373925/osd-block-43a082d5-79c4-4d3f-880e-ecc7eaef6a83

      type                      block
      osd id                    1
      cluster fsid              7bd25f8d-b76f-4ff9-89ec-186287bbeaa5
      cluster name              ceph
      osd fsid                  43a082d5-79c4-4d3f-880e-ecc7eaef6a83
      encrypted                 0
      cephx lockbox secret      
      block uuid                W68QgI-8eHM-bSEr-I9Gs-dQx8-tdf9-lHRbqa
      block device              /dev/ceph-fad16202-18c0-4444-9640-946173373925/osd-block-43a082d5-79c4-4d3f-880e-ecc7eaef6a83
      vdo                       0
      crush device class        None
      devices                   /dev/sdc

====== osd.0 =======

  [block]    /dev/ceph-6c675287-4a42-43f0-8cef-69b0150c3b06/osd-block-f829a5f0-0a11-4ae7-983a-ecd01718a81a

      type                      block
      osd id                    0
      cluster fsid              7bd25f8d-b76f-4ff9-89ec-186287bbeaa5
      cluster name              ceph
      osd fsid                  f829a5f0-0a11-4ae7-983a-ecd01718a81a
      encrypted                 0
      cephx lockbox secret      
      block uuid                E0YDG4-lm1W-WbqE-yRHy-hqGL-H0af-eZzKjr
      block device              /dev/ceph-6c675287-4a42-43f0-8cef-69b0150c3b06/osd-block-f829a5f0-0a11-4ae7-983a-ecd01718a81a
      vdo                       0
      crush device class        None
      devices                   /dev/sdb

====== osd.2 =======

  [block]    /dev/ceph-256d0c82-3d7b-4672-a241-99c9c614809d/osd-block-75c04fb3-90e8-40af-9fb4-1c94b22664be

      type                      block
      osd id                    2
      cluster fsid              7bd25f8d-b76f-4ff9-89ec-186287bbeaa5
      cluster name              ceph
      osd fsid                  75c04fb3-90e8-40af-9fb4-1c94b22664be
      encrypted                 0
      cephx lockbox secret      
      block uuid                fNFmrI-Y1dZ-4cHd-UCVi-ajLD-Uim2-wkcx3y
      block device              /dev/ceph-256d0c82-3d7b-4672-a241-99c9c614809d/osd-block-75c04fb3-90e8-40af-9fb4-1c94b22664be
      vdo                       0
      crush device class        None
      devices                   /dev/sdd
方式二:

這種方式中配置更加細(xì)致的參數(shù),分為準(zhǔn)備磁盤和激活OSD兩步。

  1. 準(zhǔn)備OSD

    ceph-volume lvm prepare --data {data-path} {data-path}
    如:
    ceph-volume lvm prepare --data /dev/hdd1
  2. 激活OSD
ceph-volume lvm activate {ID} {FSID}

如:
ceph-volume lvm activate 0 7bd25f8d-b76f-4ff9-89ec-186287bbeaa5
  1. 查看ceph狀態(tài):
[root@local-node-1 ~]# ceph -s
  cluster:
    id:     7bd25f8d-b76f-4ff9-89ec-186287bbeaa5
    health: HEALTH_OK

  services:
    mon: 1 daemons, quorum local-node-1
    mgr: ceph-mgr(active)
    osd: 3 osds: 3 up, 3 in

  data:
    pools:   0 pools, 0 pgs
    objects: 0  objects, 0 B
    usage:   3.0 GiB used, 27 GiB / 30 GiB avail
    pgs:  

[root@local-node-1 ~]# netstat -lntp|grep ceph
tcp        0      0 10.0.0.1:6805           0.0.0.0:*               LISTEN      1132/ceph-osd       
tcp        0      0 10.0.0.1:6806           0.0.0.0:*               LISTEN      1132/ceph-osd       
tcp        0      0 10.0.0.1:6807           0.0.0.0:*               LISTEN      1132/ceph-osd       
tcp        0      0 10.0.0.1:6808           0.0.0.0:*               LISTEN      1126/ceph-osd       
tcp        0      0 10.0.0.1:6809           0.0.0.0:*               LISTEN      1126/ceph-osd       
tcp        0      0 10.0.0.1:6810           0.0.0.0:*               LISTEN      1126/ceph-osd       
tcp        0      0 10.0.0.1:6811           0.0.0.0:*               LISTEN      1126/ceph-osd       
tcp        0      0 10.0.0.1:6812           0.0.0.0:*               LISTEN      1941/ceph-mgr       
tcp        0      0 10.0.0.1:6789           0.0.0.0:*               LISTEN      1093/ceph-mon       
tcp        0      0 10.0.0.1:6800           0.0.0.0:*               LISTEN      1128/ceph-osd       
tcp        0      0 10.0.0.1:6801           0.0.0.0:*               LISTEN      1128/ceph-osd       
tcp        0      0 10.0.0.1:6802           0.0.0.0:*               LISTEN      1128/ceph-osd       
tcp        0      0 10.0.0.1:6803           0.0.0.0:*               LISTEN      1128/ceph-osd       
tcp        0      0 10.0.0.1:6804           0.0.0.0:*               LISTEN      1132/ceph-osd 
FILESTORE(略)

參考此文檔:http://docs.ceph.com/docs/master/install/manual-deployment/#filestore

擴(kuò)展集群

以上在單機(jī)上部署了基本的組件,我們需要?jiǎng)?chuàng)建一個(gè)高可用的集群,要加入另外的兩個(gè)節(jié)點(diǎn)local-node-2和local-node-3。

一. 擴(kuò)展MON

  1. 修改node-1節(jié)點(diǎn)上的配置:
[root@local-node-1 ~]# cat /etc/ceph/ceph.conf 

[global]
fsid = 7bd25f8d-b76f-4ff9-89ec-186287bbeaa5
public network = 10.0.0.0/24
mon initial members = local-node-1,local-node-2,local-node-3
mon host = 10.0.0.1,10.0.0.2,10.0.0.3
auth cluster required = cephx
auth service required = cephx
auth client required = cephx
osd journal size = 1024
osd pool default size = 3
osd pool default min size = 2
osd pool default pg num = 333
osd pool default pgp num = 333
osd crush chooseleaf type = 1

[mon]
mon allow pool delete = true

[mds.local-node-1]
host = local-node-1
  1. 將配置和密鑰文件分發(fā)到其它的節(jié)點(diǎn)上
scp /etc/ceph/*  10.0.0.2:/etc/ceph/
scp /etc/ceph/*  10.0.0.3:/etc/ceph/
  1. 在新的節(jié)點(diǎn)創(chuàng)建ceph相關(guān)目錄,并添加權(quán)限:
mkdir -p  /var/lib/ceph/{bootstrap-mds,bootstrap-mgr,bootstrap-osd,bootstrap-rbd,bootstrap-rgw,mds,mgr,mon,osd}

chown  -R ceph:ceph /var/lib/ceph

sudo -u ceph mkdir /var/lib/ceph/mon/ceph-local-node-2   # 指定node名稱ID
  1. 修改本節(jié)點(diǎn)的配置文件
[root@local-node-2 ~]# cat /etc/ceph/ceph.conf 
[global]
fsid = 7bd25f8d-b76f-4ff9-89ec-186287bbeaa5
public network = 10.0.0.0/24
mon initial members = local-node-1,local-node-2,local-node-3
mon host = 10.0.0.1,10.0.0.2,10.0.0.3
auth cluster required = cephx
auth service required = cephx
auth client required = cephx
osd journal size = 1024
osd pool default size = 3
osd pool default min size = 2
osd pool default pg num = 333
osd pool default pgp num = 333
osd crush chooseleaf type = 1

[mon]
mon allow pool delete = true

[mon.local-node-2]
mon_addr = 10.0.0.2:6789
host = loacl-node-2
  1. 獲取集群中的密鑰和map
ceph auth get mon. -o /tmp/monkeyring
ceph mon getmap -o /tmp/monmap
  1. 使用已有的密鑰和map添加一個(gè)新的Monitor,指定主機(jī)名
sudo -u ceph ceph-mon --mkfs -i local-node-2 --monmap /tmp/monmap --keyring /tmp/monkeyring
  1. 啟動(dòng)服務(wù)
systemctl start ceph-mon@local-node-2
  1. 使用上述方式添加其他節(jié)點(diǎn),添加成功后查看mon狀態(tài):
[root@local-node-3]# ceph -s
  cluster:
    id:     7bd25f8d-b76f-4ff9-89ec-186287bbeaa5
    health: HEALTH_OK

  services:
    mon: 3 daemons, quorum local-node-1,local-node-2,local-node-3
    mgr: ceph-mgr(active)
    osd: 3 osds: 3 up, 3 in

  data:
    pools:   0 pools, 0 pgs
    objects: 0  objects, 0 B
    usage:   3.0 GiB used, 27 GiB / 30 GiB avail
    pgs:     

[root@local-node-3]# ceph mon stat
e3: 3 mons at {local-node-1=10.0.0.1:6789/0,local-node-2=10.0.0.2:6789/0,local-node-3=10.0.0.3:6789/0}, election epoch 28, leader 0 local-node-1, quorum 0,1,2 local-node-1,local-node-2,local-node-3

二. 添加OSD

  1. 從已經(jīng)運(yùn)行的ceph 節(jié)點(diǎn)上拷貝/etc/ceph下的配置文件和密鑰到新的節(jié)點(diǎn)上,修改配置為:
[root@local-node-2 ~]# cat /etc/ceph/ceph.conf 

[global]
fsid = 7bd25f8d-b76f-4ff9-89ec-186287bbeaa5
public network = 10.0.0.0/24
mon initial members = local-node-1,local-node-2,local-node-3
mon host = 10.0.0.1,10.0.0.2,10.0.0.3
auth cluster required = cephx
auth service required = cephx
auth client required = cephx
osd journal size = 1024
osd pool default size = 3
osd pool default min size = 2
osd pool default pg num = 333
osd pool default pgp num = 333
osd crush chooseleaf type = 1

[mon]
mon allow pool delete = true

[mon.local-node-2]
mon_addr = 10.0.0.2:6789
host = loacl-node-2
  1. 從已經(jīng)存在的osd的節(jié)點(diǎn)上拷貝初始化的密鑰文件:
scp -p  /var/lib/ceph/bootstrap-osd/ceph.keyring  10.0.0.2:/var/lib/ceph/bootstrap-osd/
scp -p  /var/lib/ceph/bootstrap-osd/ceph.keyring  10.0.0.3:/var/lib/ceph/bootstrap-osd/
  1. 在添加osd時(shí),需要考慮是添加bluestore 還是filestore的后端存儲(chǔ)集群,需要與原集群保持一致, 這里以bluestore為例:
ceph-volume lvm create --data /dev/sdb
ceph-volume lvm create --data /dev/sdc
ceph-volume lvm create --data /dev/sdd
  1. 按照上述方式添加其他節(jié)點(diǎn),成功后如下所示:
[root@local-node-1 ~]# ceph -s
  cluster:
    id:     7bd25f8d-b76f-4ff9-89ec-186287bbeaa5
    health: HEALTH_OK

  services:
    mon: 3 daemons, quorum local-node-1,local-node-2,local-node-3
    mgr: ceph-mgr(active)
    osd: 9 osds: 9 up, 9 in

  data:
    pools:   0 pools, 0 pgs
    objects: 0  objects, 0 B
    usage:   9.1 GiB used, 81 GiB / 90 GiB avail
    pgs:     

部署CephFS

一. 添加MDS

==只有要使用cephFS的場(chǎng)景下才需要?jiǎng)?chuàng)建MDS服務(wù)。==

  1. 創(chuàng)建目錄
mkdir -p /var/lib/ceph/mds/{cluster-name}-{id}   # 這里的ID設(shè)置為本地主機(jī)名

EG:
[root@local-node-1 ~]# sudo -u ceph mkdir -p /var/lib/ceph/mds/ceph-local-node-1
  1. 創(chuàng)建鑰匙串:
ceph-authtool --create-keyring /var/lib/ceph/mds/{cluster-name}-{id}/keyring --gen-key -n mds.{id}

eg:
ceph-authtool --create-keyring /var/lib/ceph/mds/ceph-local-node-1/keyring --gen-key -n mds.local-node-1
  1. 導(dǎo)入密鑰,并設(shè)置caps:
ceph auth add mds.{id} osd "allow rwx" mds "allow" mon "allow profile mds" -i /var/lib/ceph/mds/{cluster}-{id}/keyring

EG:
ceph auth add mds.local-node-1 osd "allow rwx" mds "allow" mon "allow profile mds" -i /var/lib/ceph/mds/ceph-local-node-1/keyring
  1. 添加mds的區(qū)域配置
[root@local-node-1 ~]# cat /etc/ceph/ceph.conf
[global]
fsid = 7bd25f8d-b76f-4ff9-89ec-186287bbeaa5
public network = 10.0.0.0/24
mon initial members = local-node-1
mon host = 10.0.0.1
auth cluster required = cephx
auth service required = cephx
auth client required = cephx
osd journal size = 1024
osd pool default size = 3
osd pool default min size = 2
osd pool default pg num = 333
osd pool default pgp num = 333
osd crush chooseleaf type = 1

[mds.local-node-1]            # 添加此處的配置
host = local-node-1
  1. 手動(dòng)啟動(dòng)服務(wù)
[root@local-node-1 ~]# ceph-mds --cluster ceph -i local-node-1 -m local-node-1:6789

如果是使用root啟動(dòng),需要注意權(quán)限問題,最好將服務(wù)使用systemd,修改為ceph:

 chown -R ceph:ceph /var/lib/ceph/mds/
 systemctl start ceph-mds@local-node-1
 systemctl enable ceph-mds@local-node-1
  1. 檢查服務(wù)是否啟動(dòng)
[root@local-node-1 ~]# ps -ef|grep ceph-mds
ceph        2729       1  0 17:32 ?        00:00:00 /usr/bin/ceph-mds -f --cluster ceph --id local-node-1 --setuser ceph --setgroup ceph

[root@local-node-1 ~]# netstat -lntp|grep ceph-mds
tcp        0      0 10.0.0.1:6813           0.0.0.0:*               LISTEN      2729/ceph-mds    

7.檢查ceph 集群狀態(tài)

[root@local-node-1 ~]# ceph -s
  cluster:
    id:     7bd25f8d-b76f-4ff9-89ec-186287bbeaa5
    health: HEALTH_OK

  services:
    mon: 1 daemons, quorum local-node-1
    mgr: ceph-mgr(active)
    osd: 3 osds: 3 up, 3 in

  data:
    pools:   0 pools, 0 pgs
    objects: 0  objects, 0 B
    usage:   3.0 GiB used, 27 GiB / 30 GiB avail
    pgs:     

[root@local-node-1 ~]# ceph osd tree
ID CLASS WEIGHT  TYPE NAME             STATUS REWEIGHT PRI-AFF 
-1       0.02939 root default                                  
-3       0.02939     host local-node-1                         
 0   hdd 0.00980         osd.0             up  1.00000 1.00000 
 1   hdd 0.00980         osd.1             up  1.00000 1.00000 
 2   hdd 0.00980         osd.2             up  1.00000 1.00000 

二. 創(chuàng)建ceph filesystem

1. 創(chuàng)建pools

CephFS至少需要兩個(gè)RADOS pool,一個(gè)存儲(chǔ)數(shù)據(jù),另一個(gè)存儲(chǔ)元數(shù)據(jù),當(dāng)配置這些pool時(shí),我們需要考慮兩個(gè)問題:

  • 對(duì)元數(shù)據(jù)池使用更高的復(fù)制級(jí)別,因?yàn)榇顺刂械娜魏螖?shù)據(jù)丟失都可能導(dǎo)致整個(gè)文件系統(tǒng)無(wú)法訪問。
  • 使用較低延遲的存儲(chǔ)(如SSD)作為元數(shù)據(jù)池,因?yàn)檫@將直接影響客戶端上文件系統(tǒng)操作的延遲。

使用如下命令創(chuàng)建這兩個(gè)pool:

ceph osd pool create cephfs_data <pg_num>
ceph osd pool create cephfs_metadata <pg_num>

EG:
[root@local-node-1 ~]# ceph osd pool create cephfs_data 64
[root@local-node-1 ~]# ceph osd pool create cephfs_metadata 64
2. 啟用cephfs文件系統(tǒng)
[root@local-node-1 ~]# ceph fs new cephfs cephfs_metadata cephfs_data
new fs with metadata pool 2 and data pool 1

查看文件系統(tǒng)狀態(tài):

[root@local-node-1 ~]# ceph fs ls
name: cephfs, metadata pool: cephfs_metadata, data pools: [cephfs_data ]

[root@local-node-1 ~]# ceph mds stat
cephfs-1/1/1 up  {0=local-node-1=up:active}

如果在系統(tǒng)中創(chuàng)建了多個(gè)Ceph filesystem,可以通過使用 ceph fs set-default 設(shè)置默認(rèn)的掛載盤,而不必指定具體要掛載哪個(gè)文件系統(tǒng)。

3. 掛載cephfs

==使用ceph-fuse掛載==

這里演示將cephfs掛載到node-4(10.0.0.4)上,先安裝ceph-fuse客戶端:

yum install ceph-fuse -y --disablerepo=epel  # 非ceph集群中的主機(jī)需要開啟epel安裝依賴包

如果要掛載的客戶機(jī)不是ceph集群中的成員,需要將ceph集群中的密鑰和配置文件拷貝到/etc/ceph目錄:

[root@node-4 ~]# mkdir /etc/ceph
[root@local-node-2 ~]# scp /etc/ceph/ceph.conf 10.0.0.4:/etc/ceph/
[root@local-node-2 ~]# scp /etc/ceph/ceph.client.admin.keyring 10.0.0.4:/etc/ceph/

掛載cephfs:

ceph-fuse -m 10.0.0.2:6789 /mnt/cephfs

查看掛載配置:

# df -h |grep cephfs
ceph-fuse        26G     0   26G   0% /mnt/cephfs

通過測(cè)試可以發(fā)現(xiàn),可以在任何ceph集群節(jié)點(diǎn)上掛載,共享文件:

# 指定的mon必須是正常狀態(tài),如果不是active或standby則不能掛載
ceph-fuse -m 10.0.0.3:6789 /mnt/cephfs

[root@local-node-2 cephfs]# ceph -s
  cluster:
    id:     7bd25f8d-b76f-4ff9-89ec-186287bbeaa5
    health: HEALTH_WARN
            1/3 mons down, quorum local-node-2,local-node-3

  services:
    mon: 3 daemons, quorum local-node-2,local-node-3, out of quorum: local-node-1
    mgr: ceph-mgr(active)
    mds: cephfs-1/1/1 up  {0=local-node-1=up:active}
    osd: 9 osds: 9 up, 9 in

  data:
    pools:   2 pools, 128 pgs
    objects: 24  objects, 11 KiB
    usage:   9.1 GiB used, 81 GiB / 90 GiB avail
    pgs:     128 active+clean

==使用內(nèi)核自帶驅(qū)動(dòng)掛載==

使用內(nèi)核驅(qū)動(dòng),對(duì)于系統(tǒng)內(nèi)核版本有一定的要求,如果使用Ceph最新的TUNABLES(可調(diào)參數(shù))jewel時(shí),官方建議是4.14或者4.9內(nèi)核,如果是低于4.5版本的內(nèi)核則會(huì)出現(xiàn)掛載錯(cuò)誤:

 local-node-1 kernel: libceph: mon0 10.0.0.2:6789 feature set mismatch, my 107b84a842aca < server's 40107b84a842aca, missing 400000000000000
 local-node-1 kernel: libceph: mon0 10.0.0.2:6789 missing required protocol features

更多內(nèi)核版本支持信息可以參考官方文檔

如果是這種情況建議使用ceph-fuse,當(dāng)然也可以通過以下命令修改為低版本crush tunables(默認(rèn)default,實(shí)際是jewel):

ceph osd crush tunables hammer

# ceph osd crush show-tunables
{
    "choose_local_tries": 0,
    "choose_local_fallback_tries": 0,
    "choose_total_tries": 50,
    "chooseleaf_descend_once": 1,
    "chooseleaf_vary_r": 1,
    "chooseleaf_stable": 0,
    "straw_calc_version": 1,
    "allowed_bucket_algs": 54,
    "profile": "hammer",
    "optimal_tunables": 0,
    "legacy_tunables": 0,
    "minimum_required_version": "hammer",
    "require_feature_tunables": 1,
    "require_feature_tunables2": 1,
    "has_v2_rules": 0,
    "require_feature_tunables3": 1,
    "has_v3_rules": 0,
    "has_v4_buckets": 1,
    "require_feature_tunables5": 0,
    "has_v5_rules": 0
}

hammer 支持4.1或更高版本內(nèi)核。

使用以下兩種方式掛載:

# 方式一:
[root@local-node-1 ~]# mount -t ceph 10.0.0.2:6789:/ /mnt -o name=admin,secret=AQDo1aVcQ+Z0BRAAENyooUgFgokkjw9hBUOseg==

#方式二:
[root@local-node-1 ~]# mount -t ceph 10.0.0.2:6789:/ /mnt -o name=admin,secretfile=/tmp/keyring   
# keyring只包含密鑰,不包含其它任何參數(shù)

如果掛載失敗,需要檢查mon和mds服務(wù)是否正常。

三. 移除Ceph FS

  1. 關(guān)閉mds服務(wù):
# ceph mds stat
cephfs-1/1/1 up  {0=local-node-1=up:creating}

ceph mds fail local-node-1 

# 或者使用
systemctl stop ceph-mds@local-node-1
  1. 刪除CephFS
# 列出當(dāng)前的CephFS
ceph fs ls

# 刪除CephFS
ceph fs rm cephfs --yes-i-really-mean-it 

# ceph fs ls
No filesystems enabled
  1. 刪除pool
# ceph osd lspools
3 cephfs_data
4 cephfs_metadata

ceph osd pool delete cephfs_data cephfs_data --yes-i-really-really-mean-it
ceph osd pool delete cephfs_metadata cephfs_metadata --yes-i-really-really-mean-it
  1. 確認(rèn)刪除后的狀態(tài)
# ceph -s
  cluster:
    id:     7bd25f8d-b76f-4ff9-89ec-186287bbeaa5
    health: HEALTH_OK

  services:
    mon: 1 daemons, quorum local-node-1
    mgr: ceph-mgr(active)
    osd: 3 osds: 3 up, 3 in

  data:
    pools:   0 pools, 0 pgs
    objects: 0  objects, 0 B
    usage:   3.0 GiB used, 27 GiB / 30 GiB avail
    pgs:     
向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI