Ceph(v13.2.5 mimic穩定版)分佈式存儲部署

1、ceph簡介

Ceph(v13.2.5 mimic穩定版)分佈式存儲部署

1. 功能特性

ceph提供了對象存儲(RADOSGW)、塊存儲(RBD)和文件存儲(Ceph FS)三種功能:
RADOSGW:基於LIBRADOS之上,提供當前流行的RESTful協議的網關,而且兼容S3和Swift接口,做爲對象存儲,能夠對接網盤類應用以及HLS流媒體應用等。
RBD:也基於LIBRADOS之上,經過LIBRBD建立一個塊設備,經過QEMU/KVM附加到VM上,做爲傳統的塊設備來用。目前OpenStack、CloudStack等都是採用這種方式來爲VM提供塊設備,同時也支持快照、COW(Copy On Write)等功能。
Ceph FS: 基於RADOS來實現分佈式的文件系統,引入了MDS(Metadata Server),主要爲兼容POSIX文件系統提供元數據。通常都是當作文件系統來掛載。node

2. 核心組件

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 等基本命令。linux

3. 其餘概念

RADOS
CRUSH
journal服務器

2、集羣規劃

系統類型:CentOS7.5
cehp版本:mimic網絡

主機名 IP地址 角色 數據盤
ceph-node1 172.16.1.31 mon、osd、deploy /dev/sdb
ceph-node2 172.16.1.32 mon、osd /dev/sdb
ceph-node3 172.16.1.33 mon、osd /dev/sdb

3、安裝

1.預檢

host解析
時間同步
ssh免密登陸,deploy節點須要ssh免密登陸到全部node節點
關閉防火牆
關閉selinuxssh

2.部署

(1)全部節點配置yum源

[root@ceph-node1 ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
[root@ceph-node1 ~]# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo  

[root@ceph-node1 ~]# cat << EOF > /etc/yum.repos.d/ceph.repo
[Ceph]
name=Ceph packages for $basearch
baseurl=http://download.ceph.com/rpm-mimic/el7/$basearch
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://download.ceph.com/keys/release.asc
priority=1
[Ceph-noarch]
name=Ceph noarch packages
baseurl=http://download.ceph.com/rpm-mimic/el7/noarch
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://download.ceph.com/keys/release.asc
priority=1
[ceph-source]
name=Ceph source packages
baseurl=http://download.ceph.com/rpm-mimic/el7/SRPMS
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://download.ceph.com/keys/release.asc
priority=1
EOF

(2)deploy節點安裝ceph-deploy並初始化集羣

#在node1安裝ceph-deploy工具分佈式

[root@ceph-node1 ~]# yum -y install ceph-deploy
[root@ceph-node1 ~]# ceph-deploy --version
2.0.1

#配置config文件,指定ssh用戶ide

[root@ceph-node1 ~]# cat .ssh/config 
Host node1
   Hostname ceph-node1
   User root
Host node2
   Hostname ceph-node2
   User root
Host node3
   Hostname ceph-node3
   User root
[root@ceph-node1 ~]# chmod 600 .ssh/config 
[root@ceph-node1 ~]# systemctl restart sshd

#在三個節點安裝ceph
[root@ceph-node1 ~]# ceph-deploy install --release mimic ceph-node1 ceph-node2 ceph-node3
#建立目錄,用於保存執行ceph-deploy時產生的文件
[root@ceph-node1 ~]# mkdir /etc/ceph && cd /etc/ceph
#初始化集羣
[root@ceph-node1 ceph]# ceph-deploy new ceph-node1 ceph-node2 ceph-node3
#修改配置文件工具

[root@ceph-node1 ceph]# cat ceph.conf 
[global]
fsid = aa6f450a-613a-435d-ace3-4e1a4c8d231a
mon_initial_members = ceph-node1, ceph-node2, ceph-node3
mon_host = 172.16.1.31,172.16.1.32,172.16.1.33
auth_cluster_required = cephx
auth_service_required = cephx
auth_client_required = cephx
public network = 172.16.1.0/24  #新添加

配置含義:ui

fsid:文件系統id
mon_initial_members:監視器主機名
mon_host:監視器IP地址
cephx:表示開啓認證
public network:指定public網絡,參看ceph網絡
#參考:http://docs.ceph.org.cn/rados/configuration/network-config-ref/

#初始化mon
[root@ceph-node1 ceph]# ceph-deploy mon create-initial
#拷貝配置文件及admin密鑰到各ceph節點
[root@ceph-node1 ceph]# ceph-deploy admin ceph-node1 ceph-node2 ceph-node3
#建立ceph管理進程服務
[root@ceph-node1 ceph]# ceph-deploy mgr create ceph-node1 ceph-node2 ceph-node3
#查看集羣狀態url

[root@ceph-node1 ceph]# ceph -s
  cluster:
    id:     aa6f450a-613a-435d-ace3-4e1a4c8d231a
    health: HEALTH_OK

  services:
    mon: 3 daemons, quorum ceph-node1,ceph-node2,ceph-node3
    mgr: ceph-node1(active), standbys: ceph-node2, ceph-node3
    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:

#建立osd

#注意:若是磁盤已存在分區須要執行zap命令,刪除分區和磁盤內容,而後再執行create。
[root@ceph-node1 ceph]# ceph-deploy disk zap ceph-node1 /dev/sdb
[root@ceph-node1 ceph]# ceph-deploy disk zap ceph-node2 /dev/sdb
[root@ceph-node1 ceph]# ceph-deploy disk zap ceph-node3 /dev/sdb
[root@ceph-node1 ceph]# ceph-deploy osd create --data /dev/sdb ceph-node1
[root@ceph-node1 ceph]# ceph-deploy osd create --data /dev/sdb ceph-node2
[root@ceph-node1 ceph]# ceph-deploy osd create --data /dev/sdb ceph-node3

#再次查看集羣狀態

[root@ceph-node1 ceph]# ceph -s
  cluster:
    id:     aa6f450a-613a-435d-ace3-4e1a4c8d231a
    health: HEALTH_OK

  services:
    mon: 3 daemons, quorum ceph-node1,ceph-node2,ceph-node3
    mgr: ceph-node1(active), standbys: ceph-node2, ceph-node3
    osd: 3 osds: 3 up, 3 in

  data:
    pools:   0 pools, 0 pgs
    objects: 0  objects, 0 B
    usage:   3.0 GiB used, 57 GiB / 60 GiB avail
pgs:

#啓用dashboard
[root@ceph-node1 ceph]# ceph mgr module enable dashboard
#爲dashboard生成自簽名證書,使用https訪問

[root@ceph-node1 ceph]# ceph dashboard create-self-signed-cert
Self-signed certificate created

#爲dashboard綁定IP和端口

[root@ceph-node1 ceph]# ceph config set mgr mgr/dashboard/server_addr 172.16.1.31
[root@ceph-node1 ceph]# ceph config set mgr mgr/dashboard/server_port 7000

#查看服務

[root@ceph-node1 ceph]# ceph mgr services
{
    "dashboard": "https://172.16.1.31:7000/"
}

#更新dashboard帳號密碼
ceph dashboard set-login-credentials admin admin
#登陸dashboard
Ceph(v13.2.5 mimic穩定版)分佈式存儲部署

(3)取消部署ceph

若是部署失敗,能夠執行以下命令清除各節點上的軟件及部署時生成的文件。

ceph-deploy purge {ceph-node}
ceph-deploy purgedata {ceph-node}
ceph-deploy forgetkeys

4、 ceph經常使用命令

一、集羣監控

#檢查集羣健康情況,正常返回HEALTH_OK
ceph health
若是配置文件或密鑰不在默認路徑,須要指定:
ceph -c /path/to/conf -k /path/to/keyring health
#檢查集羣狀態,返回集羣健康狀態、服務狀態以及數據狀態
ceph status 或者 ceph –s
#檢查集羣的使用狀況,返回集羣總體使用狀況和各個存儲池的使用狀況
ceph df
#檢查OSD狀態
ceph osd stat 或者 ceph osd dump 或者 ceph osd tree
#檢查監視器狀態
ceph mon stat 或者 ceph mon dump
#檢查MDS狀態
ceph mds stat 或者 ceph mds dump

二、存儲池

#列出存儲池
ceph osd lspools
#建立存儲池
##副本類型
ceph osd pool create {pool-name} {pg-num} [{pgp-num}] [replicated] [crush-ruleset-name] [expected-num-objects]
##糾刪類型(相似於RAID5)
ceph osd pool create {pool-name} {pg-num} {pgp-num} erasure [erasure-code-profile] [crush-ruleset-name] [expected_num_objects]
##必需參數:
pool-name 池名稱
pg-num 存儲池擁有的歸置組總數
少於 5 個 OSD 時可把 pg_num 設置爲 128
OSD 數量在 5 到 10 個時,可把 pg_num 設置爲 512
OSD 數量在 10 到 50 個時,可把 pg_num 設置爲 4096
pgp-num 用於歸置的歸置組總數,通常等於歸置組總數
#設置存儲池配額
ceph osd pool set-quota {pool-name} [max_objects {obj-count}] [max_bytes {bytes}]
#刪除存儲池
ceph osd pool delete {pool-name} [{pool-name} --yes-i-really-really-mean-it]
#重命名存儲池
ceph osd pool rename {current-pool-name} {new-pool-name}
#查看存儲池統計信息
rados df

三、用戶管理

#羅列用戶
ceph auth list
#獲取用戶信息,包括用戶密鑰、能力(用戶的權限)
ceph auth get {TYPE.ID}
#新增用戶
##直接添加用戶並指定能力
ceph auth add client.john mon 'allow r' osd 'allow rw pool=liverpool'
##經常使用的添加用戶並指定能力,會以標準格式返回用戶名稱和key,若是用戶已存在,會直接返回用戶名和key
ceph auth get-or-create client.paul mon 'allow r' osd 'allow rw pool=liverpool'
##在上條命令基礎上,將返回保存到文件中
ceph auth get-or-create client.george mon 'allow r' osd 'allow rw pool=liverpool' -o george.keyring
##添加用戶並指定能力,只返回key,-o表示將返回保存到文件
ceph auth get-or-create-key client.ringo mon 'allow r' osd 'allow rw pool=liverpool' -o ringo.key
#修改用戶能力,ceph auth caps會覆蓋當前能力,若是新增能力時注意在命令中加上當前能力
ceph auth caps USERTYPE.USERID {daemon} 'allow [r|w|x|*|...] [pool={pool-name}] [namespace={namespace-name}]' [{daemon} 'allow [r|w|x|*|...] [pool={pool-name}] [namespace={namespace-name}]']
#刪除用戶,其中 {TYPE} 是 client 、 osd 、 mon 或 mds 之一, {ID} 是用戶名或守護進程的 ID
ceph auth del {TYPE}.{ID}
#查看用戶密鑰
ceph auth print-key {TYPE}.{ID}
#導入用戶
ceph auth import -i /path/to/keyring

查看更多的命令請參考官方文檔:http://docs.ceph.org.cn/rados/operations/

參考:
ceph中文手冊
ceph英文手冊(dashboard)
ceph問題解決

相關文章
相關標籤/搜索