分佈式存儲ceph集羣部署

ceph簡介html


Ceph是一個具備高擴展、高可用、高性能的分佈式存儲系統,根據場景劃分能夠將Ceph分爲對象存儲、塊設備存儲和文件系統服務。在虛擬化領域裏,比較經常使用到的是Ceph的塊設備存儲,好比在OpenStack項目裏,Ceph的塊設備存儲能夠對接OpenStack的cinder後端存儲、Glance的鏡像存儲和虛擬機的數據存儲。比較直觀的是Ceph集羣能夠提供一個raw格式的塊存儲來做爲虛擬機實例的硬盤。
Ceph相比其它存儲的優點點在於它不僅僅是存儲,同時還充分利用了存儲節點上的計算能力,在存儲每個數據時,都會經過計算得出該數據存儲的位置,儘可能將數據分佈均衡。同時因爲Ceph自己的良好設計,採用了CRUSH算法、HASH環等方法,使得它不存在傳統的單點故障的問題,且隨着規模的擴大性能並不會受到影響。
node



ceph 目前提供對象存儲(RADOSGW)、塊存儲RDB以及 CephFS 文件系統這 3 種功能。對於這3種功能介紹,分別以下:python

1.對象存儲,也就是一般意義的鍵值存儲,其接口就是簡單的GET、PUT、DEL 和其餘擴展,表明主要有 Swift 、S3 以及 Gluster 等;linux

2.塊存儲,這種接口一般以 QEMU Driver 或者 Kernel Module 的方式存在,這種接口須要實現 Linux 的 Block Device 的接口或者 QEMU 提供的 Block Driver 接口,如 Sheepdog,AWS 的 EBS,×××的雲硬盤和阿里雲的盤古系統,還有 Ceph 的 RBD(RBD是Ceph面向塊存儲的接口)。在常見的存儲中 DAS、SAN 提供的也是塊存儲;算法

3.文件存儲,一般意義是支持 POSIX 接口,它跟傳統的文件系統如 Ext4 是一個類型的,但區別在於分佈式存儲提供了並行化的能力,如 Ceph 的 CephFS (CephFS是Ceph面向文件存儲的接口),可是有時候又會把 GlusterFS ,HDFS 這種非POSIX接口的類文件存儲接口納入此類。固然 NFS、NAS也是屬於文件系統存儲;bootstrap


ceph組件介紹vim

Ceph的核心構成包括:Ceph OSD(對象存出設備)、Ceph Monitor(監視器) 、Ceph MSD(元數據服務器)、Object、PG、RADOS、Libradio、CRUSH、RDB、RGW、CephFS後端

OSD:全稱 Object Storage Device,真正存儲數據的組件,通常來講每塊參與存儲的磁盤都須要一個 OSD 進程,若是一臺服務器上又 10 塊硬盤,那麼該服務器上就會有 10 個 OSD 進程。centos

MON:MON經過保存一系列集羣狀態 map 來監視集羣的組件,使用 map 保存集羣的狀態,爲了防止單點故障,所以 monitor 的服務器須要奇數臺(大於等於 3 臺),若是出現意見分歧,採用投票機制,少數服從多數。bash

MDS:全稱 Ceph Metadata Server,元數據服務器,只有 Ceph FS 須要它。

Object:Ceph 最底層的存儲單元是 Object 對象,每一個 Object 包含元數據和原始數據。

PG:全稱 Placement Grouops,是一個邏輯的概念,一個PG包含多個OSD。引入PG這一層實際上是爲了更好的分配數據和定位數據。

RADOS:全稱Reliable Autonomic Distributed Object Store,是Ceph集羣的精華,可靠自主分佈式對象存儲,它是 Ceph 存儲的基礎,保證一切都以對象形式存儲。

Libradio:Librados是Rados提供庫,由於RADOS是協議很難直接訪問,所以上層的RBD、RGW和CephFS都是經過librados訪問的,目前僅提供PHP、Ruby、Java、Python、C和C++支持。

CRUSH:是Ceph使用的數據分佈算法,相似一致性哈希,讓數據分配到預期的地方。

RBD:全稱 RADOS block device,它是 RADOS 塊設備,對外提供塊存儲服務。

RGW:全稱 RADOS gateway,RADOS網關,提供對象存儲,接口與 S3 和 Swift 兼容。

CephFS:提供文件系統級別的存儲。


ceph集羣服務器規劃

名稱 ip 系統
硬盤 角色
node1 192.168.0.198 centos7.2(最小化)2核2G sda系統盤30G,sdb20G,sdc20G mon,osd,mgr,deploy
node2 192.168.0.199 centos7.2(最小化)2核2G sda系統盤30G,sdb20G,sdc20G mon,osd,mgr
node3 192.168.0.200 centos7.2(最小化)2核2G sda系統盤30G,sdb20G,sdc20G mon,osd,mgr


服務器環境準備(三臺機器)


安裝centos7.2系統,最小化安裝

設置好網絡和防火牆  網絡須要能訪問外網,

ip 192.168.0.198

下面關閉防火牆

setenforce 0

systemctl stop firewalld

systemctl disable firewalld

sed -i 's/enforcing/disabled/g' /etc/sysconfig/selinux


設置yum源

cd /etc/yum.repos.d/

wget http://mirrors.aliyun.com/repo/Centos-7.repo

wget http://mirrors.aliyun.com/repo/epel-7.repo

yum -y install epel-release 

yum -y install vim wget lrzsz net-tools

而後清理掉其餘yum源文件


ceph源

/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


配置主機名

hostnamectl set-hostname node1

hostname node1    ##198機器

hostnamectl set-hostname node2

hostname node2    ##199機器

hostnamectl set-hostname node3

hostname node3    ##200機器


增長hosts解析

vi /etc/hosts

192.168.0.198 node1

192.168.0.199 node2

192.168.0.200 node3


時間同步

yum install ntpdate -y

ntpdate 0.asia.pool.ntp.org

crontab -e

*/5 * * * * ntpdate 0.asia.pool.ntp.org


配置python2.7環境

cd /tmp

wget https://files.pythonhosted.org/packages/ed/69/c805067de1feedbb98c53174b0f2df44cc05e0e9ee73bb85eebc59e508c6/setuptools-41.0.0.zip

wget https://files.pythonhosted.org/packages/36/fa/51ca4d57392e2f69397cd6e5af23da2a8d37884a605f9e3f2d3bfdc48397/pip-19.0.3.tar.gz

unzip setuptools-41.0.0.zip 

cd setuptools-41.0.0

python setup.py install

tar zxf pip-19.0.3.tar.gz 

 cd pip-19.0.3

 python setup.py install


配置免密登陸

ssh-keygen -t rsa -P ""

ssh-copy-id 192.168.0.198

ssh-copy-id 192.168.0.199

ssh-copy-id 192.168.0.200

ssh node1

ssh node2

ssh node3


=================================================

安裝ceph

yum -y install ceph-deploy  (node1上)

查看版本

ceph-deploy --version

建立安裝目錄

mkdir /ceph-install && cd /ceph-install

建立ceph集羣

ceph-deploy new node1 node2 node3

所有節點安裝ceph (時間會比較長)

ceph-deploy install node1 node2 node3

或在節點上手動執行 yum install -y ceph

安裝mon監控(會生成祕鑰文件)

ceph-deploy mon create-initial

監控在/ceph-install 目錄下執行,祕鑰文件也會保存在這個目錄

須要把祕鑰文件複製到/etc/ceph/目錄,才能正常執行ceph集羣命令  如ceph -s

cp *.keyring /etc/ceph/

[root@localhost ceph-install]# ll
總用量 476
-rw------- 1 root root     71 4月  22 14:56 ceph.bootstrap-mds.keyring
-rw------- 1 root root     71 4月  22 14:56 ceph.bootstrap-mgr.keyring
-rw------- 1 root root     71 4月  22 14:56 ceph.bootstrap-osd.keyring
-rw------- 1 root root     71 4月  22 14:56 ceph.bootstrap-rgw.keyring
-rw------- 1 root root     63 4月  22 14:56 ceph.client.admin.keyring
-rw-r--r-- 1 root root    238 4月  22 14:24 ceph.conf
-rw-r--r-- 1 root root 434608 4月  22 14:56 ceph-deploy-ceph.log
-rw------- 1 root root     73 4月  22 14:24 ceph.mon.keyring

查看集羣 ceph -s

[root@localhost ceph-install]# ceph -s
  cluster:
    id:     ed5d45f5-d722-4a3d-970b-d5936617919c
    health: HEALTH_OK
  services:
    mon: 3 daemons, quorum node1,node2,node3
    mgr: no daemons active
    osd: 0 osds: 0 up, 0 in
  data:
    pools:   0 pools, 0 pgs
    objects: 0 objects, 0B
    usage:   0B used, 0B / 0B avail
    pgs:

建立OSD

 ceph-deploy osd create node1 --data /dev/sdb

 ceph-deploy osd create node1 --data /dev/sdc

 ceph-deploy osd create node2 --data /dev/sdb

 ceph-deploy osd create node2 --data /dev/sdc

 ceph-deploy osd create node3 --data /dev/sdb

 ceph-deploy osd create node3 --data /dev/sdc


把配置及admin祕鑰放到各個節點

ceph-deploy --overwrite-conf admin node1 node2 node3


部署mgr

ceph-deploy mgr create node1 node2 node3


查看ceph狀態

[root@localhost ceph-install]# ceph -s
  cluster:
    id:     ed5d45f5-d722-4a3d-970b-d5936617919c
    health: HEALTH_OK
 
  services:
    mon: 3 daemons, quorum node1,node2,node3
    mgr: node1(active), standbys: node3, node2
    osd: 6 osds: 6 up, 6 in
 
  data:
    pools:   0 pools, 0 pgs
    objects: 0 objects, 0B
    usage:   6.02GiB used, 114GiB / 120GiB avail
    pgs:

查看osd狀態

[root@localhost ceph-install]# ceph osd tree
ID CLASS WEIGHT  TYPE NAME      STATUS REWEIGHT PRI-AFF 
-1       0.11691 root default                           
-3       0.03897     host node1                         
 0   hdd 0.01949         osd.0      up  1.00000 1.00000 
 1   hdd 0.01949         osd.1      up  1.00000 1.00000 
-5       0.03897     host node2                         
 2   hdd 0.01949         osd.2      up  1.00000 1.00000 
 3   hdd 0.01949         osd.3      up  1.00000 1.00000 
-7       0.03897     host node3                         
 4   hdd 0.01949         osd.4      up  1.00000 1.00000 
 5   hdd 0.01949         osd.5      up  1.00000 1.00000


cephFS 建立存儲池與文件系統

ceph-fs須要元數據mds服務

全部osd上都建立mds服務

ceph-deploy mds create node1 node2 node3

接着建立poll存儲池和名爲data的文件系統

ceph osd pool create data_data 32

ceph osd pool create data_metadata 32

ceph fs new data data_metadata data_data

查看存儲池和文件系統

ceph osd pool ls

ceph fs ls


客戶端掛載

找一個客戶機器,安裝ceph-fuse掛載文件系統

mkdir /guazai

首先安裝  yum install -y ceph-fuse

而後將ceph集羣的配置文件和ceph.client.admin.keyring認證文件複製過來,注意keyring名稱變化

scp 192.168.0.198:/etc/ceph/ceph.conf /etc/ceph/

scp 192.168.0.198:/etc/ceph/ceph.client.admin.keyring /etc/ceph/ceph.keyring


執行掛載

ceph-fuse -m 192.168.0.198,192.168.0.199,192.168.0.200:6789 /guazai

[root@node1 ceph]# df -h
文件系統        容量  已用  可用 已用% 掛載點
/dev/sda3        28G  3.6G   25G   13% /
devtmpfs        904M     0  904M    0% /dev
tmpfs           913M     0  913M    0% /dev/shm
tmpfs           913M  8.7M  904M    1% /run
tmpfs           913M     0  913M    0% /sys/fs/cgroup
/dev/sda1       297M  109M  189M   37% /boot
tmpfs           913M   24K  913M    1% /var/lib/ceph/osd/ceph-1
tmpfs           913M   24K  913M    1% /var/lib/ceph/osd/ceph-0
tmpfs           183M     0  183M    0% /run/user/0
ceph-fuse        36G     0   36G    0% /guazai


RDB塊存儲方式

查看存儲池

ceph osd  pool ls

建立存儲池

ceph osd pool create cephrbd 256

建立名爲image的鏡像大小10G

rbd create cephrbd/image --image-feature layering --size 10G

查看池中鏡像及信息

rbd ls cephrbd

rbd info cephrbd/image

[root@node1 ~]#  rbd ls cephrbd
image
[root@node1 ~]# rbd info cephrbd/image
rbd image 'image':
	size 10GiB in 2560 objects
	order 22 (4MiB objects)
	block_name_prefix: rbd_data.111e6b8b4567
	format: 2
	features: layering
	flags: 
	create_timestamp: Mon Apr 22 17:51:43 2019

鏡像擴容

rbd resize --size 15G cephrbd/image

[root@node1 ~]#  rbd resize --size 15G cephrbd/image
Resizing image: 100% complete...done.

鏡像縮容

 rbd resize --size 12G cephrbd/image --allow-shrink

[root@node1 ~]# rbd resize --size 12G cephrbd/image --allow-shrink
Resizing image: 100% complete...done.

刪除鏡像

rbd rm cephrbd/demo-img


客戶端掛載使用磁盤鏡像

到客戶機上安裝ceph-common

yum install ceph-common -y

ceph.conf 和 ceph.client.admin.keyring 拷貝到客戶端機器上

scp 192.168.0.198:/etc/ceph/ceph.conf /etc/ceph/

scp 192.168.0.198:/etc/ceph/ceph.client.admin.keyring /etc/ceph/

而後用ceph -s 客戶機上查看集羣

接着執行ceph osd crush tunables hammer     ##防止掛載鏡像missing required protocol features失敗

執行掛載鏡像

rbd map cephrbd/image

[root@node1 ~]# rbd map cephrbd/image
/dev/rbd0
[root@node1 ~]# lsblk
NAME                                                                                                  MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda                                                                                                     8:0    0   30G  0 disk 
├─sda1                                                                                                  8:1    0  300M  0 part /boot
├─sda2                                                                                                  8:2    0    2G  0 part [SWAP]
└─sda3                                                                                                  8:3    0 27.7G  0 part /
sdb                                                                                                     8:16   0   20G  0 disk 
└─ceph--94d4a7fb--5998--42d2--8420--c8486f5f6ed9-osd--block--39bf5af2--aefa--4e1c--881e--7535f273f588 253:0    0   20G  0 lvm  
sdc                                                                                                     8:32   0   20G  0 disk 
└─ceph--a76198d8--61d8--4c1a--84d1--c9a0ef0dd806-osd--block--3baaa769--1396--4d2f--8692--189fd23cc68e 253:1    0   20G  0 lvm  
sr0                                                                                                    11:0    1    4G  0 rom  
rbd0                                                                                                  252:0    0   12G  0 disk

查看磁盤映射信息

rbd showmapped

[root@node1 ~]# rbd showmapped
id pool    image snap device    
0  cephrbd image -    /dev/rbd0

格式化、掛載 /dev/rbd0

mkfs.ext4 /dev/rbd0

[root@node1 ~]# mkdir /image

[root@node1 ~]# mount /dev/rbd0 /image

[root@node1 ~]# echo -e "/dev/rbd0 /image ext4 defaults 0 0" >> /etc/fstab

[root@node1 ~]# df -h
文件系統        容量  已用  可用 已用% 掛載點
/dev/sda3        28G  3.6G   25G   13% /
devtmpfs        904M     0  904M    0% /dev
tmpfs           913M     0  913M    0% /dev/shm
tmpfs           913M  8.7M  904M    1% /run
tmpfs           913M     0  913M    0% /sys/fs/cgroup
/dev/sda1       297M  109M  189M   37% /boot
tmpfs           913M   24K  913M    1% /var/lib/ceph/osd/ceph-1
tmpfs           913M   24K  913M    1% /var/lib/ceph/osd/ceph-0
tmpfs           183M     0  183M    0% /run/user/0
/dev/rbd0        12G   41M   12G    1% /image


爲鏡像建立快照

rbd snap create cephrbd/image --snap image-sn1

查看快照

rbd snap ls cephrbd/image

[root@node1 image]# rbd snap ls cephrbd/image
SNAPID NAME       SIZE TIMESTAMP                
     4 image-sn1 12GiB Mon Apr 22 19:24:50 2019

刪除快照

rbd snap remove cephrbd/image@image-sn1

[root@node1 ~]# rbd snap remove cephrbd/image@image-sn1
Removing snap: 100% complete...done.



rdb在線擴容

查看設備

[root@node1 image]# rbd showmapped
id pool    image snap device    
0  cephrbd image -    /dev/rbd0 
[root@node1 image]# rbd info cephrbd/image
rbd image 'image':
	size 12GiB in 3072 objects
	order 22 (4MiB objects)
	block_name_prefix: rbd_data.111e6b8b4567
	format: 2
	features: layering
	flags: 
	create_timestamp: Mon Apr 22 17:51:43 2019

12G擴容到20G

  rbd resize --size 20480 cephrbd/image

[root@node1 image]#  rbd resize --size 20480 cephrbd/image
Resizing image: 100% complete...done.

擴容格式化

resize2fs /dev/rbd0    

[root@node1 image]# resize2fs /dev/rbd0
resize2fs 1.42.9 (28-Dec-2013)
Filesystem at /dev/rbd0 is mounted on /image; on-line resizing required
old_desc_blocks = 2, new_desc_blocks = 3
The filesystem on /dev/rbd0 is now 5242880 blocks long.
[root@node1 image]# df -h
文件系統        容量  已用  可用 已用% 掛載點
/dev/sda3        28G  3.6G   25G   13% /
devtmpfs        904M     0  904M    0% /dev
tmpfs           913M     0  913M    0% /dev/shm
tmpfs           913M  8.7M  904M    1% /run
tmpfs           913M     0  913M    0% /sys/fs/cgroup
/dev/sda1       297M  109M  189M   37% /boot
tmpfs           913M   24K  913M    1% /var/lib/ceph/osd/ceph-1
tmpfs           913M   24K  913M    1% /var/lib/ceph/osd/ceph-0
tmpfs           183M     0  183M    0% /run/user/0
/dev/rbd0        20G   44M   19G    1% /image

上面是ext4 格式操做。對於XFS格式要執行    xfs_growfs  -d /image  進行格式化擴容


測試參考

http://www.javashuo.com/article/p-ghmqdwwp-cq.html

https://www.cnblogs.com/zhangzihong/p/9771035.html

http://www.javashuo.com/article/p-yhbhmekt-gg.html

https://blog.51cto.com/wangzhijian/2159701?source=dra

http://www.mamicode.com/info-detail-1480817.html

相關文章
相關標籤/搜索