Ceph分佈式存儲全網詳細,親測可以安裝

Ceph簡單搭建

Ceph基礎介紹
​ Ceph是一個可靠地、自動重均衡、自動恢復的分佈式存儲系統,根據場景劃分可以將Ceph分爲三大塊,分別是對象存儲、塊設備存儲和文件系統服務。在虛擬化領域裏,比較常用到的是Ceph的塊設備存儲,比如在OpenStack項目裏,Ceph的塊設備存儲可以對接OpenStack的cinder後端存儲、Glance的鏡像存儲和虛擬機的數據存儲,比較直觀的是Ceph集羣可以提供一個raw格式的塊存儲來作爲虛擬機實例的硬盤。

​ Ceph相比其它存儲的優勢點在於它不單單是存儲,同時還充分利用了存儲節點上的計算能力,在存儲每一個數據時,都會通過計算得出該數據存儲的位置,儘量將數據分佈均衡,同時由於Ceph的良好設計,採用了CRUSH算法、HASH環等方法,使得它不存在傳統的單點故障的問題,且隨着規模的擴大性能並不會受到影響。

Ceph的核心組件

Ceph的核心組件包括Ceph OSD、Ceph Monitor和Ceph MDS。

  Ceph OSD:OSD的英文全稱是Object Storage Device,它的主要功能是存儲數據、複製數據、平衡數據、恢復數據等,與其它OSD間進行心跳檢查等,並將一些變化情況上報給Ceph Monitor。一般情況下一塊硬盤對應一個OSD,由OSD來對硬盤存儲進行管理,當然一個分區也可以成爲一個OSD。

  Ceph OSD的架構實現由物理磁盤驅動器、Linux文件系統和Ceph OSD服務組成,對於Ceph OSD Deamon而言,Linux文件系統顯性的支持了其拓展性,一般Linux文件系統有好幾種,比如有BTRFS、XFS、Ext4等,BTRFS雖然有很多優點特性,但現在還沒達到生產環境所需的穩定性,一般比較推薦使用XFS。

  伴隨OSD的還有一個概念叫做Journal盤,一般寫數據到Ceph集羣時,都是先將數據寫入到Journal盤中,然後每隔一段時間比如5秒再將Journal盤中的數據刷新到文件系統中。一般爲了使讀寫時延更小,Journal盤都是採用SSD,一般分配10G以上,當然分配多點那是更好,Ceph中引入Journal盤的概念是因爲Journal允許Ceph OSD功能很快做小的寫操作;一個隨機寫入首先寫入在上一個連續類型的journal,然後刷新到文件系統,這給了文件系統足夠的時間來合併寫入磁盤,一般情況下使用SSD作爲OSD的journal可以有效緩衝突發負載。

  Ceph Monitor:由該英文名字我們可以知道它是一個監視器,負責監視Ceph集羣,維護Ceph集羣的健康狀態,同時維護着Ceph集羣中的各種Map圖,比如OSD Map、Monitor Map、PG Map和CRUSH Map,這些Map統稱爲Cluster Map,Cluster Map是RADOS的關鍵數據結構,管理集羣中的所有成員、關係、屬性等信息以及數據的分發,比如當用戶需要存儲數據到Ceph集羣時,OSD需要先通過Monitor獲取最新的Map圖,然後根據Map圖和object id等計算出數據最終存儲的位置。

  Ceph MDS:全稱是Ceph MetaData Server,主要保存的文件系統服務的元數據,但對象存儲和塊存儲設備是不需要使用該服務的。

查看各種Map的信息可以通過如下命令:ceph osd(mon、pg) dump

所有節點安裝

1、Ceph-deploy安裝ceph
基本環境

192.168.0.250   node1
192.168.6.251   node2

2、準備磁盤
系統盤/dev/sda OSD盤 /dev/sdb
倆臺機器都掛倆塊盤,一塊系統盤,一塊osd

測試時使用的磁盤不要太小,否則後面添加磁盤時會報錯,建議磁盤大小爲20G及以上。

檢查磁盤

fdisk -l /dev/sdb 

格式化磁盤

sudo parted -s /dev/sdb mklabel gpt mkpart primary xfs 0% 100%
mkfs.xfs /dev/sdb -f

查看磁盤格式

sudo blkid -o value -s TYPE /dev/sdb
 mkdir /var/local/osd{0,1,2}
mount /dev/sdb1 /var/local/osd0/   # node1執行
 mount /dev/sdb1 /var/local/osd1/   #node2執行

3、 配hosts和基本環境:

[root@node1 ~]# vim /etc/hosts
192.168.0.250 node1
192.168.0.251 node2

關閉selinxu和防火牆
[root@node1 ~]# systemctl stop firewalld
[root@node1 ~]# systemctl disable firewalld
[root@node1 ~]# cat /etc/selinux/config 
SELINUX=disabled
[root@node1 ~]# setenforce 0

4、時間同步:
安裝

yum -y install ntp
ntpdate ntp1.aliyun.com

5、允許無密碼SSH登錄

本步只在node1上執行


ssh-keygen
ssh-copy-id node1
ssh-copy-id node2

6、配置主機名:

hostnamectl set-hostname node1   ##node1執行
hostnamectl set-hostname node2    ##node2執行
bash

7、配置ceph.repo

[root@node1 ~]# vim /etc/yum.repos.d/ceph.repo
[ceph]
name=Ceph packages for $basearch
baseurl=http://mirrors.aliyun.com/ceph/rpm-luminous/el7/$basearch
enabled=1
gpgcheck=1
priority=1
type=rpm-md
gpgkey=https://mirrors.aliyun.com/ceph/keys/release.asc

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

[ceph-source]
name=Ceph source packages
baseurl=http://mirrors.aliyun.com/ceph/rpm-luminous/el7/SRPMS
enabled=0
gpgcheck=1
type=rpm-md
gpgkey=https://mirrors.aliyun.com/ceph/keys/release.asc
priority=1

8、安裝ceph-deploy:

yum install epel-release ##華爲源
yum list | grep ceph 
yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
yum makecache
yum update -y
yum install -y ceph-deploy

9、創建一個 Ceph 存儲集羣,它有一個 Monitor 和兩個 OSD 守護進程

mkdir /etc/ceph && cd /etc/ceph
ceph-deploy new node1    ###配置

一般會遇到個報錯:

Traceback (most recent call last):
  File "/usr/bin/ceph-deploy", line 18, in <module>
    from ceph_deploy.cli import main
  File "/usr/lib/python2.7/site-packages/ceph_deploy/cli.py", line 1, in <module>
    import pkg_resources
ImportError: No module named pkg_resources

解決:

yum install -y python-setuptools

10、 存儲集羣副本個數
在ceph.conf中追加以下內容

vim /etc/ceph/ceph.conf 
osd_pool_default_size = 2 ##添加

11、管理節點和osd節點都需要安裝ceph 集羣:

ceph-deploy install node1 node2  ### 自動安裝可能會報錯,執行下面手動安裝

 yum -y install epel-release && yum -y install ceph-release && yum -y install ceph ceph-radosgw

12、配置MON初始化:

ceph-deploy mon create-initial

13、查看ceph集羣狀態:

[root@node1 ceph]# ceph -s
  cluster:
    id:     cde3244e-89e0-4630-84d5-bf08c0e33b24
    health: HEALTH_OK
 
  services:
    mon: 1 daemons, quorum ceph1
    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:

14、開啓監控模塊

ceph-deploy mgr create node1

15、在/etc/ceph/ceph.conf中添加

[mgr]
mgr modules = dashboard

16、查看集羣支持的模塊

[root@node1 ceph]# ceph mgr dump   
[root@node1 ceph]# ceph mgr module enable dashboard   #啓用dashboard模塊
[root@node1 ceph]# ceph mgr dump
{
    "epoch": 3,
    "active_gid": 4110,
    "active_name": "node1",
    "active_addr": "192.168.0.250:6800/6619",
    "available": true,
    "standbys": [],
    "modules": [        "balancer",
        "restful",
        "status"
    ],
    "available_modules": [        "balancer",
        "dashboard",
        "influx",
        "localpool",
        "prometheus",
        "restful",
        "selftest",
        "status",
        "zabbix"
    ],
    "services": {}
}
[root@node1 ceph]# ceph mgr module enable dashboard
[root@node1 ceph]# ceph mgr dump
{
    "epoch": 6,
    "active_gid": 4114,
    "active_name": "node1",
    "active_addr": "192.168.0.250:6800/6619",
    "available": true,
    "standbys": [],
    "modules": [        "balancer",
        "dashboard",
        "restful",
        "status"
    ],
    "available_modules": [        "balancer",
        "dashboard",
        "influx",
        "localpool",
        "prometheus",
        "restful",
        "selftest",
        "status",
        "zabbix"
    ],
    "services": {}
}
[root@node1 ceph]# ceph -s
  cluster:
    id:     cde3244e-89e0-4630-84d5-bf08c0e33b24
    health: HEALTH_OK
 
  services:
    mon: 1 daemons, quorum ceph1
    mgr: node1(active)
    osd: 2 osds: 2 up, 2 in
 
  data:
    pools:   0 pools, 0 pgs
    objects: 0 objects, 0B
    usage:   2.00GiB used, 30.0GiB / 32.0GiB avail
    pgs:

17、設置dashboard的ip和端口

[root@ceph-node1 ceph]# ceph config-key put mgr/dashboard/server_addr 192.168.0.250
set mgr/dashboard/server_addr
[root@ceph-node1 ceph]# ceph config-key put mgr/dashboard/server_port 7000
set mgr/dashboard/server_port
[root@ceph1 ~]# netstat -tulnp |grep 7000
tcp        0      0 192.168.0.250:7000      0.0.0.0:*               LISTEN      19836/ceph-mgr

18、創建osd
刪除磁盤數據

[root@node1 ceph]# ceph-deploy disk zap node1 /dev/sdb
[root@node1 ceph]# ceph-deploy disk zap node2 /dev/sdb

19、創建osd(一共倆個)

[root@node1 ceph]# ceph-deploy osd create node1--data /dev/sdb
[root@node1 ceph]# ceph-deploy osd create node2 --data /dev/sdb

20、ceph祕鑰拷貝(主節點執行)及修改密鑰權限
用 ceph-deploy 把配置文件和 admin 密鑰拷貝到管理節點和 Ceph 節點,這樣你每次執行 Ceph 命令行時就無需指定 monitor 地址和 ceph.client.admin.keyring 了

[root@node1 ceph]# ceph-deploy admin node1 node2

21、修改密鑰權限(所有節點上執行)

[root@ceph1 ceph] # chmod +r /etc/ceph/ceph.client.admin.keyring
[root@ceph2] # chmod +r /etc/ceph/ceph.client.admin.keyring

22、這時看下danshboard圖:

http://192.168.0.250:7000/

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章