ceph安裝部署


ceph簡介

不管你是想為雲平台提供Ceph 對象存儲和/或 Ceph 塊設備,還是想部署一個 Ceph 文件系統或者把 Ceph 作為他用,所有 Ceph 存儲集群的部署都始於部署一個個 Ceph 節點、網絡和 Ceph 存儲集群。 Ceph 存儲集群至少需要一個 Ceph Monitor 和兩個 OSD 守護進程。而運行 Ceph 文件系統客戶端時,則必須要有元數據服務器( Metadata Server )。

  • Ceph OSDs: Ceph OSD 守護進程( Ceph OSD )的功能是存儲數據,處理數據的復制、恢復、回填、再均衡,並通過檢查其他OSD 守護進程的心跳來向 Ceph Monitors 提供一些監控信息。當 Ceph 存儲集群設定為有2個副本時,至少需要2個 OSD 守護進程,集群才能達到 active+clean 狀態( Ceph 默認有3個副本,但你可以調整副本數)。
  • Monitors: Ceph Monitor維護着展示集群狀態的各種圖表,包括監視器圖、 OSD 圖、歸置組( PG )圖、和 CRUSH 圖。 Ceph 保存着發生在Monitors 、 OSD 和 PG上的每一次狀態變更的歷史信息(稱為 epoch )。
  • MDSs: Ceph 元數據服務器( MDS )為 Ceph 文件系統存儲元數據(也就是說,Ceph 塊設備和 Ceph 對象存儲不使用MDS )。元數據服務器使得 POSIX 文件系統的用戶們,可以在不對 Ceph 存儲集群造成負擔的前提下,執行諸如 ls、find 等基本命令

Ceph組件:osd

  • OSD 守護進程,至少兩個
  • 用於存儲數據、處理數據拷貝、恢復、回滾、均衡
  • 通過心跳程序向monitor提供部分監控信息
  • 一個ceph集群中至少需要兩個OSD守護進程

Ceph組件:mon

  • 維護集群的狀態映射信息
  • 包括monitor、OSD、placement Group(PG)
  • 還維護了monitor、OSD和PG的狀態改變歷史信息

Ceph組件:mgr(新功能)

  • 負責ceph集群管理,如pg map
  • 對外提供集群性能指標(如cpeh -s 下IO信息)
  • 具有web界面的監控系統(dashboard)

ceph邏輯結構

數據通過ceph的object存儲到PG,PG在存儲到osd daemon,osd對應disk

object只能對應一個pg

一個raid可以對應一個osd

一整塊硬盤可以對應一個osd

一個分區可以對應一個osd

monitor:奇數個 osd : 幾十到上萬,osd越多性能越好

pg概念

  • 副本數
  • crush規則(pg怎么找到osd acting set)
  • 用戶及權限
  • epoach:單調遞增的版本號
  • acting set: osd列表,第一個為primary osd,replicated osd
  • up set :acting set過去的版本
  • pg tmp:臨時pg組

osd狀態:默認每2秒匯報自己給mon(同時監控組內osd,如300秒沒有給mon匯報狀態,則會把這個osd踢出pg組)

  • up 可以提供io
  • down 掛掉了
  • in 有數據
  • out 沒數據了

ceph應用場景:通過tgt支持iscsi掛載

  • 公司內部文件共享
  • 海量文件,大流量,高並發
  • 需要高可用、高性能文件系統
  • 傳統單服務器及NAS共享難以滿足需求,如存儲容量,高可用

ceph生產環境推薦

  • 存儲集群采用全萬兆網絡
  • 集群網絡(不對外)與公共網絡分離(使用不同網卡)
  • mon、mds與osd分離部署在不同機器上
  • journal推薦使用PCI SSD,一般企業級IOPS可達40萬以上
  • OSD使用SATA亦可
  • 根據容量規划集群
  • 至強E5 2620 V3或以上cpu,64GB或更高內存
  • 最后,集群主機分散部署,避免機櫃故障(電源、網絡)

ceph安裝環境

由於機器較少,使用3台機器,充當mon與osd,生產環境不建議,生產環境至少3個mon獨立

主機 IP 角色 配置
ceph-0

eth0:192.168.0.150(Public)

eth1:172.16.1.100(Cluster)

mon、osd、mgr DISK 0 15G(OS)
DISK 1 10G(Journal)
DISK 2 10G(OSD)
DISK 3 10G(OSD)
ceph-1

eth0:192.168.0.151(Public)

eth1:172.16.1.101(Cluster)

mon、osd、mgr DISK 0 15G(OS)
DISK 1 10G(Journal)
DISK 2 10G(OSD)
DISK 3 10G(OSD)
ceph-2

eth0:192.168.0.152(Public)

eth1:172.16.1.102(Cluster)

mon、osd、mgr DISK 0 15G(OS)
DISK 1 10G(Journal)
DISK 2 10G(OSD)
DISK 3 10G(OSD)

一、系統設置

1.綁定主機名

 由於后續安裝及配置都涉及到主機名,故此需先綁定

依次在三個節點上執行以下命令完成hosts綁定
[root@ceph-node0 ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

192.168.0.150 ceph-node0
192.168.0.151 ceph-node1
192.168.0.152 ceph-node2

 

2.ssh-keygen信任

3. 每台關閉防火牆

systemctl stop firewalld

4.時間同步

yum install -y ntpdate
//
ntpdate cn.pool.ntp.org

5.安裝epel源與ceph-deploy

本步驟要在每一個節點上執行

  • 安裝epel源
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
  • 安裝ceph-deploy
rpm -ivh https://mirrors.tuna.tsinghua.edu.cn/ceph/rpm-luminous/el7/noarch/ceph-release-1-1.el7.noarch.rpm
  • 替換 ceph.repo 服務器
sed -i 's#htt.*://download.ceph.com#https://mirrors.tuna.tsinghua.edu.cn/ceph#g' /etc/yum.repos.d/ceph.repo

    或直接復制下方文本內容替換 /etc/yum.repos.d/ceph.repo

[Ceph]
name=Ceph packages for $basearch
baseurl=https://mirrors.tuna.tsinghua.edu.cn/ceph/rpm-luminous/el7/$basearch
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://mirrors.tuna.tsinghua.edu.cn/ceph/keys/release.asc

[Ceph-noarch]
name=Ceph noarch packages
baseurl=https://mirrors.tuna.tsinghua.edu.cn/ceph/rpm-luminous/el7/noarch
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://mirrors.tuna.tsinghua.edu.cn/ceph/keys/release.asc

[ceph-source]
name=Ceph source packages
baseurl=https://mirrors.tuna.tsinghua.edu.cn/ceph/rpm-luminous/el7/SRPMS
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://mirrors.tuna.tsinghua.edu.cn/ceph/keys/release.asc

6.安裝ceph

  • 使用 yum 安裝 ceph-deploy
[root@ceph-node0 ~]# yum install -y ceph-deploy
  • 創建 ceph-install 目錄並進入,安裝時產生的文件都將在這個目錄
[root@ceph-node0 ~]# mkdir ceph-install && cd ceph-install
[root@ceph-node0 ceph-install]#

二、准備硬盤

1.Journal磁盤

本步驟要在每一個節點上執行

在每個節點上為Journal磁盤分區, 分別為 sdb1, sdb2, 各自對應本機的2個OSD,  journal磁盤對應osd的大小為25%
  • 使用 parted 命令進行創建分區操作
[root@ceph-node0 ~]# parted /dev/sdb
    mklabel gpt
    mkpart primary xfs  0% 50%
    mkpart primary xfs 50% 100%
    q

2.OSD磁盤

  • 對於OSD磁盤我們不做處理,交由ceph-deploy進行操作

三、安裝ceph

1.使用ceph-deploy安裝ceph,以下步驟只在ceph-depoly管理節點執行

  • 創建一個ceph集群,也就是Mon,三台都充當mon

[root@ceph-node0 ceph-install]# ceph-deploy new ceph-node0 ceph-node1 ceph-node2
  • 在全部節點上安裝ceph

[root@ceph-node0 ceph-install]# ceph-deploy install ceph-node0 ceph-node1 ceph-node2

或在每個節點上手動執行 yum install -y ceph
  • 創建和初始化監控節點並收集所有的秘鑰

[root@ceph-node0 ceph-install]# ceph-deploy mon create-initial

       此時可以在osd節點查看mon端口

  

  • 創建OSD存儲節點

[root@ceph-node0 ceph-install]# ceph-deploy osd create ceph-node0 --data /dev/sdc --journal /dev/sdb1
[root@ceph-node0 ceph-install]# ceph-deploy osd create ceph-node0 --data /dev/sdd --journal /dev/sdb2


[root@ceph-node0 ceph-install]# ceph-deploy osd create ceph-node1 --data /dev/sdc --journal /dev/sdb1
[root@ceph-node0 ceph-install]# ceph-deploy osd create ceph-node1 --data /dev/sdd --journal /dev/sdb2


[root@ceph-node0 ceph-install]# ceph-deploy osd create ceph-node2 --data /dev/sdc --journal /dev/sdb1
[root@ceph-node0 ceph-install]# ceph-deploy osd create ceph-node2 --data /dev/sdd --journal /dev/sdb2
  • 把配置文件和admin 秘鑰到管理節點和ceph節點

[root@ceph-0 ceph-install]# ceph-deploy --overwrite-conf admin ceph-node0 ceph-node1 ceph-node2
  • 使用 ceph -s 命令查看集群狀態

 

[root@ceph-node0 ceph-install]# ceph -s
  cluster:
    id:     e103fb71-c0a9-488e-ba42-98746a55778a
    health: HEALTH_WARN
            no active mgr
 
  services:
    mon: 3 daemons, quorum ceph-node0,ceph-node1,ceph-node2
    mgr: no daemons active
    osd: 6 osds: 6 up, 6 in
 
  data:
    pools:   0 pools, 0 pgs
    objects: 0 objects, 0B
    usage:   0B used, 0B / 0B avail
    pgs:     

如集群正常則顯示 health HEALTH_OK

如OSD未全部啟動,則使用下方命令重啟相應節點, @ 后面為 OSD ID

systemctl start ceph-osd@0

2. 部署mgr

  • luminous 版本需要啟動 mgr, 否則 ceph -s 會有 no active mgr 提示
  • 官方文檔建議在每個 monitor 上都啟動一個 mgr
[root@ceph-node0 ceph-install]# ceph-deploy mgr create ceph-node0:ceph-node0 ceph-node1:ceph-node1 ceph-node2:ceph-node2
  • 再次查看ceph狀態
[root@ceph-node0 ceph-install]# ceph -s
  cluster:
    id:     e103fb71-c0a9-488e-ba42-98746a55778a
    health: HEALTH_OK
 
  services:
    mon: 3 daemons, quorum ceph-node0,ceph-node1,ceph-node2
    mgr: ceph-node0(active), standbys: ceph-node1, ceph-node2
    osd: 6 osds: 6 up, 6 in
 
  data:
    pools:   0 pools, 0 pgs
    objects: 0 objects, 0B
    usage:   6.02GiB used, 54.0GiB / 60.0GiB avail
    pgs:     

3.清除操作

  • 安裝過程中如遇到奇怪的錯誤,可以通過以下步驟清除操作從頭再來
[root@ceph-node0 ceph-install]# ceph-deploy purge ceph-node0 ceph-node1 ceph-node2
[root@ceph-node0 ceph-install]# ceph-deploy purgedata ceph-node0 ceph-node1 ceph-node2
[root@ceph-node0 ceph-install]# ceph-deploy forgetkeys

四、配置

1. 為何要分離網絡

  • 性能

OSD 為客戶端處理數據復制,復制多份時 OSD 間的網絡負載勢必會影響到客戶端和 ceph 集群 的通訊,包括延時增加、產生性能問題;恢復和重均衡也會顯著增加公共網延時。

  • 安全

很少的一撮人喜歡折騰拒絕服務攻擊(DoS)。當 OSD 間的流量瓦解時, 歸置組再也不能達到 active+clean 狀態,這樣用戶就不能讀寫數據了。挫敗此類攻擊的一種好方法是 維護一個完全獨立的集群網,使之不能直連互聯網;另外,請考慮用簽名防止欺騙攻擊。

2.分離公共網絡和集群網絡(推薦、可選)

  •  按下方所列修改配置文件 ceph.conf (在目錄 ~/ceph-install 下操作,注意替換 fsid )
[global]

# 注意替換 fsid
fsid = dca70270-3292-4078-91c3-1fbefcd3bd62

mon_initial_members = ceph-node0, ceph-node1, ceph-node2
mon_host = 192.168.0.150,192.168.0.151,192.168.0.152
auth_cluster_required = cephx
auth_service_required = cephx
auth_client_required = cephx

public network  = 192.168.0.0/24
cluster network = 172.16.1.0/24

[mon.a]
host = ceph-node0
mon addr = 192.168.0.150:6789

[mon.b]
host = ceph-node1
mon addr = 192.168.0.151:6789

[mon.c]
host = ceph-node2
mon addr = 192.168.0.152:6789

[osd]
osd data = /var/lib/ceph/osd/ceph-$id
osd journal size = 20000
osd mkfs type = xfs
osd mkfs options xfs = -f

filestore xattr use omap = true
filestore min sync interval = 10
filestore max sync interval = 15
filestore queue max ops = 25000
filestore queue max bytes = 10485760
filestore queue committing max ops = 5000
filestore queue committing max bytes = 10485760000

journal max write bytes = 1073714824
journal max write entries = 10000
journal queue max ops = 50000
journal queue max bytes = 10485760000

osd max write size = 512
osd client message size cap = 2147483648
osd deep scrub stride = 131072
osd op threads = 8
osd disk threads = 4
osd map cache size = 1024
osd map cache bl size = 128
osd mount options xfs = "rw,noexec,nodev,noatime,nodiratime,nobarrier"
osd recovery op priority = 4
osd recovery max active = 10
osd max backfills = 4

[client]
rbd cache = true
rbd cache size = 268435456
rbd cache max dirty = 134217728
rbd cache max dirty age = 5
  • 將配置文件同步到其它節點
[root@ceph-node0 ceph-install]# ceph-deploy --overwrite-conf admin ceph-node0 ceph-node1 ceph-node2
  • 逐一重啟各個節點
systemctl restart ceph\*.service ceph\*.target
  • 此時
ceph-mon 進程應監聽在 192.168.0.0 網段IP上
ceph-osd 應分別監聽在 192.168.0.0172.16.1.0 兩個網段IP上
172.16.1.0 網段為集群內部復制數據時使用
192.168.0.0 網段為客戶端連接時使用

[root@ceph-node2 ~]# netstat -lntp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 172.16.1.102:6800 0.0.0.0:* LISTEN 55794/ceph-osd
tcp 0 0 192.168.0.152:6800 0.0.0.0:* LISTEN 55794/ceph-osd
tcp 0 0 192.168.0.152:6801 0.0.0.0:* LISTEN 55794/ceph-osd
tcp 0 0 172.16.1.102:6801 0.0.0.0:* LISTEN 55794/ceph-osd
tcp 0 0 172.16.1.102:6802 0.0.0.0:* LISTEN 55792/ceph-osd
tcp 0 0 192.168.0.152:6802 0.0.0.0:* LISTEN 55792/ceph-osd
tcp 0 0 192.168.0.152:6803 0.0.0.0:* LISTEN 55792/ceph-osd
tcp 0 0 172.16.1.102:6803 0.0.0.0:* LISTEN 55792/ceph-osd
tcp 0 0 192.168.122.1:53 0.0.0.0:* LISTEN 1981/dnsmasq
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1713/sshd
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 1716/cupsd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1814/master
tcp 0 0 192.168.0.152:6789 0.0.0.0:* LISTEN 55663/ceph-mon
tcp6 0 0 :::22 :::* LISTEN 1713/sshd
tcp6 0 0 ::1:631 :::* LISTEN 1716/cupsd
tcp6 0 0 ::1:25 :::* LISTEN 1814/master

  • 查看osd與ceph狀態
[root@ceph-node0 ceph-install]# ceph osd tree
ID CLASS WEIGHT  TYPE NAME           STATUS REWEIGHT PRI-AFF 
-1       0.05878 root default                                
-3       0.01959     host ceph-node0                         
 0   hdd 0.00980         osd.0           up  1.00000 1.00000 
 1   hdd 0.00980         osd.1           up  1.00000 1.00000 
-5       0.01959     host ceph-node1                         
 2   hdd 0.00980         osd.2           up  1.00000 1.00000 
 3   hdd 0.00980         osd.3           up  1.00000 1.00000 
-7       0.01959     host ceph-node2                         
 4   hdd 0.00980         osd.4           up  1.00000 1.00000 
 5   hdd 0.00980         osd.5           up  1.00000 1.00000 


//

[root@ceph-node0 ceph-install]# ceph -s
  cluster:
    id:     e103fb71-c0a9-488e-ba42-98746a55778a
    health: HEALTH_WARN
            1/3 mons down, quorum ceph-node0,ceph-node1
 
  services:
    mon: 3 daemons, quorum ceph-node0,ceph-node1, out of quorum: ceph-node2
    mgr: ceph-node0(active), standbys: ceph-node2, ceph-node1
    osd: 6 osds: 6 up, 6 in
 
  data:
    pools:   0 pools, 0 pgs
    objects: 0 objects, 0B
    usage:   6.03GiB used, 54.0GiB / 60.0GiB avail
    pgs:     

 

五、Ceph 存儲池與文件系統

1.創建文件系統ceph-fs

 ceph-fs需要元數據mds服務

  • 創建mds,osd上都創建,高可用性
[root@ceph-node0 ceph-install]# ceph-deploy mds create ceph-node0 ceph-node1 ceph-node2
  • 上方命令會在 ceph-node0 和 ceph-node1 上啟動MDS

2.pool 存儲池

  • 查看存儲池
root@ceph-node0 ceph-install]# ceph osd pool ls
  • 創建存儲池
[root@ceph-node0 ceph-install]# ceph osd pool create data_data 32

pool名稱:data_data
pg數:32

3.創建ceph-fs文件系統

  • 查看已有的文件系統
[root@ceph-node0 ceph-install]# ceph fs ls
  • 創建一個名稱為data的文件系統
[root@ceph-node0 ceph-install]# ceph osd pool create data_data 32
[root@ceph-node0 ceph-install]# ceph osd pool create data_metadata 32
[root@ceph-node0 ceph-install]# ceph fs new data data_metadata data_data
  • 使用客戶端 ceph-fuse 掛載文件系統

[root@ceph-mon yum.repos.d]# yum install -y ceph-fuse
  • 客戶端創建目錄掛載文件系統
// 創建data錄目
[root@ceph-mon ~]# mkdir /data

// 掛載
root@ceph-mon ~]# ceph-fuse -m 192.168.0.150,192.168.0.151,192.168.0.152:6789 /data

掛載時出現如下錯誤:

說明認證配置找不到,把管理節點上的ceph.conf拷到客戶端

[root@ceph-node0 ceph-install]# scp ceph.conf 192.168.0.153:/etc/ceph/


//從Ceph集群復制 ceph.conf 與 ceph.client.admin.keyring 文件到客戶端 /etc/ceph 目錄下
[root@ceph-node0 ceph-install]# cat ceph.client.admin.keyring 
[client.admin]
        key = AQB8wL5bnutGMBAAg5+eadh1fNShOG5d8mERIg==

// 在客戶端創建ceph.keyring,為在管理節點創建的用戶
[root@ceph-mon ceph]# cat ceph.keyring 
[client.admin]
        key = AQB8wL5bnutGMBAAg5+eadh1fNShOG5d8mERIg==


 


免責聲明!

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



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