首先介紹一下Ceph安裝部署的方法,Ceph社區提供了三種部署方法:
專注于為中小企業提供做網站、網站制作服務,電腦端+手機端+微信端的三站合一,更高效的管理,為中小企業肇東免費做網站提供優質的服務。我們立足成都,凝聚了一批互聯網行業人才,有力地推動了千余家企業的穩健成長,幫助中小企業通過網站建設實現規模擴充和轉變。我們采用成熟、簡單的ceph-deploy實現Ceph集群的部署,首先了解一下ceph-deploy的架構:
安裝環境以三個節點的方式來完成Ceph集群的部署,如下是各個集群安裝部署的信息:
節點名稱 | 角色說明 | IP地址 | 備注說明 |
---|---|---|---|
node-1 | admin-node,monitor,OSD | 10.254.100.101 | 承擔ceph-deploy安裝部署admin-node角色<br>2. 充當Ceph Monitor節點<br>3. 充當Ceph OSD節點,包含一塊50G磁盤 |
node-2 | OSD | 10.254.100.102 | 充當Ceph OSD數據存儲節點,包含一塊50G磁盤 |
node-3 | OSD | 10.254.100.103 | 充當Ceph OSD數據存儲節點,包含一塊50G磁盤 |
安裝Ceph之前需要將環境提前部署好,部署內容參考上圖內容,官方安裝時推薦創建一個新的用戶來實現安裝部署,官方參考文檔,本文直接以root的身份實現集群的安裝。備注:以下操作除了ssh無密碼登陸之外,其他操作均需要在所有節點上執行。
1、主機名設置,以node-1為例
[root@node-1 ~]# hostnamectl set-hostname node-1
[root@node-1 ~]# hostnamectl status
Static hostname: node-1
Icon name: computer-vm
Chassis: vm
Machine ID: 0ea734564f9a4e2881b866b82d679dfc
Boot ID: b0bc8b8c9cb541d2a582cdb9e9cf22aa
Virtualization: kvm
Operating System: CentOS Linux 7 (Core)
CPE OS Name: cpe:/o:centos:centos:7
Kernel: Linux 3.10.0-957.27.2.el7.x86_64
Architecture: x86-64
2、設置/etc/hosts文件,將node-1至node-3信息寫入到/etc/hosts文件中
[root@node-1 ~]# cat /etc/hosts
10.254.100.101 node-1
10.254.100.102 node-2
10.254.100.103 node-3
3、設置ssh無密碼登陸,需要需要在node-1上生成key,然后將公鑰拷貝到其他節點(包括node-1節點),如下圖
4、關閉Selinux默認已關閉
[root@node-1 ~]# setenforce 0
[root@node-1 ~]# getenforce
5、關閉iptables防火墻,或者放行對應的端口:Ceph monitor 6789/tcp,Ceph OSD 6800-7300/tcp
[root@node-1 ~]# systemctl stop iptables
[root@node-1 ~]# systemctl stop firewalld
[root@node-1 ~]# systemctl disable iptables
[root@node-1 ~]# systemctl disable firewalld
6、配置好ntp時間同步,Ceph是分布式集群,對時間很敏感,如果時間不正確可能會導致集群奔潰,因此在Ceph集中中設置ntp同步非常關鍵,推薦使用內網的ntp服務器同步時間,騰訊云CVM默認會同步到內網的ntp時間同步,讀者根據需要進行設定
[root@node-1 ~]# grep ^server /etc/ntp.conf
server ntpupdate.tencentyun.com iburst
[root@node-1 ~]#
[root@node-1 ~]# ntpq -pn
remote refid st t when poll reach delay offset jitter
==============================================================================
*169.254.0.2 183.3.239.152 4 u 238 1024 377 5.093 4.443 5.145
7、設置Ceph安裝yum源,選擇安裝版本為octopus
[root@node-1 ~]# cat << EOM > /etc/yum.repos.d/ceph.repo
> [ceph-noarch]
> name=Ceph noarch packages
> baseurl=https://download.ceph.com/rpm-mimic/el7/noarch
> enabled=1
> gpgcheck=1
> type=rpm-md
> gpgkey=https://download.ceph.com/keys/release.asc
> EOM
安裝EPEL 倉庫
[root@node-1 ~]# sudo yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
8、安裝Ceph-deploy,對應版本為2.0.1,重要:默認epel源中ceph-deploy的版本是1.5,版本較老,會涉及到很多rpm依賴,安裝問題,安裝前檢查好對應的版本,確保無誤。
[root@node-1 ~]# yum install ceph-deploy -y
[root@node-1 ~]# ceph-deploy --version
2.0.1
Ceph-deploy部署過程中會生成一些集群初始化配置文件和key,后續擴容的時候也需要使用到,因此,建議在admin-node上創建一個單獨的目錄,后續操作都進入到該目錄中進行操作,以創建的ceph-admin-node為例。
1、創建一個Ceph cluster集群,可以指定cluster-network(集群內部通訊)和public-network(外部訪問Ceph集群)
[root@node-1 ceph-admin ]# ceph-deploy new \
>--cluster-network 10.254.100.0/24 \
>--public-network 10.254.100.0/24 node-1 #創建集群
[ceph_deploy.conf][DEBUG ] found configuration file at: /root/.cephdeploy.conf
[ceph_deploy.cli][INFO ] Invoked (2.0.1): /usr/bin/ceph-deploy new --cluster-network 10.254.100.0/24 --public-network 10.254.100.0/24 node-1
[ceph_deploy.cli][INFO ] ceph-deploy options:
[ceph_deploy.cli][INFO ] username : None
[ceph_deploy.cli][INFO ] func : <function new at 0x7fefe8a292a8>
[ceph_deploy.cli][INFO ] verbose : False
[ceph_deploy.cli][INFO ] overwrite_conf : False
[ceph_deploy.cli][INFO ] quiet : False
[ceph_deploy.cli][INFO ] cd_conf : <ceph_deploy.conf.cephdeploy.Conf instance at 0x7fefe83a5b00>
[ceph_deploy.cli][INFO ] cluster : ceph
[ceph_deploy.cli][INFO ] ssh_copykey : True
[ceph_deploy.cli][INFO ] mon : ['node-1']
[ceph_deploy.cli][INFO ] public_network : 10.254.100.0/24
[ceph_deploy.cli][INFO ] ceph_conf : None
[ceph_deploy.cli][INFO ] cluster_network : 10.254.100.0/24
[ceph_deploy.cli][INFO ] default_release : False
[ceph_deploy.cli][INFO ] fsid : None
[ceph_deploy.new][DEBUG ] Creating new cluster named ceph
[ceph_deploy.new][INFO ] making sure passwordless SSH succeeds
[node-1][DEBUG ] connected to host: node-1
[node-1][DEBUG ] detect platform information from remote host
[node-1][DEBUG ] detect machine type
[node-1][DEBUG ] find the location of an executable
[node-1][INFO ] Running command: /usr/sbin/ip link show
[node-1][INFO ] Running command: /usr/sbin/ip addr show
[node-1][DEBUG ] IP addresses found: [u'172.17.0.1', u'10.244.0.1', u'10.244.0.0', u'10.254.100.101']
[ceph_deploy.new][DEBUG ] Resolving host node-1
[ceph_deploy.new][DEBUG ] Monitor node-1 at 10.254.100.101
[ceph_deploy.new][DEBUG ] Monitor initial members are ['node-1']
[ceph_deploy.new][DEBUG ] Monitor addrs are [u'10.254.100.101']
[ceph_deploy.new][DEBUG ] Creating a random mon key...
[ceph_deploy.new][DEBUG ] Writing monitor keyring to ceph.mon.keyring...
[ceph_deploy.new][DEBUG ] Writing initial config to ceph.conf...
通過上面的輸出可以看到,new初始化集群過程中會生成ssh key密鑰,ceph.conf配置文件,ceph.mon.keyring認證管理密鑰,配置cluster network和pubic network,此時查看目錄下的文件可以看到如下內容:
[root@node-1 ceph-admin ]# ls -l
總用量 12
-rw-r--r-- 1 root root 265 3月 1 13:04 ceph.conf #配置文件
-rw-r--r-- 1 root root 3068 3月 1 13:04 ceph-deploy-ceph.log #部署日志文件
-rw------- 1 root root 73 3月 1 13:04 ceph.mon.keyring #monitor認證key
[root@node-1 ceph-admin-node]# cat ceph.conf
[global]
fsid = cfc3203b-6abb-4957-af1b-e9a2abdfe725
public_network = 10.254.100.0/24 #public網絡和cluster網絡
cluster_network = 10.254.100.0/24
mon_initial_members = node-1 #monitor的地址和主機名
mon_host = 10.254.100.101
auth_cluster_required = cephx
auth_service_required = cephx
auth_client_required = cephx
2、安裝Ceph部署相關的軟件,常規通過yum進行安裝,由于可能會安裝錯軟件包,因此ceph-deploy提供了一個install的工具輔助軟件包的安裝,ceph-deploy install node-1 node-2 node-3
[root@node-1 ~]# ceph-deploy install node-1 node-2 node-3
3、初始化monitor節點,執行ceph-deploy mon create-initial做初始化
初始化完畢后會生成對應的keyring文件,用于ceph認證:
ceph.client.admin.keyring
ceph.bootstrap-mgr.keyring
ceph.bootstrap-osd.keyring
ceph.bootstrap-mds.keyring
ceph.bootstrap-rgw.keyring
ceph.bootstrap-rbd.keyring
ceph.bootstrap-rbd-mirror.keyring
4、將認證密鑰拷貝到其他節點,便于ceph命令行可以通過keyring和ceph集群進行交互,ceph-deploy admin node-1 node-2 node-3
此時,Ceph集群已經建立起來,包含一個monitor節點,通過ceph -s可以查看當前ceph集群的狀態,由于此時并沒有任何的OSD節點,因此無法往集群中寫數據等操作,如下是ceph -s查看的輸出結果
[root@node-1 ceph-admin]# ceph -s
cluster:
id: 760da58c-0041-4525-a8ac-1118106312de
health: HEALTH_OK
services:
mon: 1 daemons, quorum 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:
5、集群中目前還沒有OSD節點,因此沒法存儲數據,接下來開始往集群中添加OSD節點,每個節點上都有一塊50G的vdb磁盤,將其加入到集群中作為OSD節點,如ceph-deploy osd create node-1 --data /dev/vdb
如上已將node-1的vdb添加到ceph集群中,ceph -s可以看到當前有一個osd加入到集群中,執行相同的方法將node-2和node-3上的磁盤添加到集群中
執行完畢后,三個OSD均已加入到ceph集群中,通過ceph -s可以看到對應三個OSD節點
[root@node-1 ceph-admin]# ceph -s
cluster:
id: 760da58c-0041-4525-a8ac-1118106312de
health: HEALTH_WARN
no active mgr
services:
mon: 1 daemons, quorum node-1
mgr: no daemons active
osd: 3 osds: 3 up, 3 in #三個OSD,當前狀態都是up和in狀態
data:
pools: 0 pools, 0 pgs
objects: 0 objects, 0 B
usage: 0 B used, 0 B / 0 B avail
pgs:
也可以通過ceph osd tree查看每隔節點上osd的情況和crush tree的情況
[root@node-1 ~]# ceph osd tree
ID CLASS WEIGHT TYPE NAME STATUS REWEIGHT PRI-AFF
-1 0.14369 root default
-3 0.04790 host node-1
0 hdd 0.04790 osd.0 up 1.00000 1.00000
-5 0.04790 host node-2
1 hdd 0.04790 osd.1 up 1.00000 1.00000
-7 0.04790 host node-3
2 hdd 0.04790 osd.2 up 1.00000 1.00000
6、此時Ceph的health狀態為HEALTH_WARN告警狀態,提示信息為“no active mgr”,因此需要部署一個mgr節點,manager節點在luminous之后的版本才可以部署(本環境部署的是M版本,因此可以支持),將mgr部署到node-1節點,執行ceph-deploy mgr create node-1
至此,Ceph集群已經部署完畢。通過ceph-deploy工具進行部署完成Ceph集群的自動化部署,后續添加monitor節點,osd節點,mgr節點也會很方便。
實戰目標:Ceph集群創建資源池,創建RBD塊,RBD塊的使用
部署完Ceph集群之后,如何在Ceph集群中存儲文件呢?ceph提供了三種接口供用戶使用,分別是:
我們先以Ceph RBD的方式來介紹Ceph集群的使用,通過在Ceph集群中創建一個RBD塊文件供用戶進行使用,要使用Ceph,首先需要一個資源池pool,pool是Ceph中數據存儲抽象的概念,其右多個pg(Placegroup)和pgp組成,創建的時候可以指定pg的數量,pg的大小一般為2^n次方,如下先創建一個pool
1、創建一個pool,其名字為happylau,包含128個PG/PGP,
[root@node-1 ~]# ceph osd pool create happylau 128 128
pool 'happylau' created
可以查看pool的信息,如查看當前集群的pool列表——lspools,查看pg_num和pgp_num,副本數size大小
查看pool列表
[root@node-1 ~]# ceph osd lspools
1 happylau
查看pg和pgp數量
[root@node-1 ~]# ceph osd pool get happylau pg_num
pg_num: 128
[root@node-1 ~]# ceph osd pool get happylau pgp_num
pgp_num: 128
查看size大小,默認為三副本
[root@node-1 ~]# ceph osd pool get happylau size
size: 3
2、此時pool已經創建好,可以在pool中創建RBD塊,通過rbd命令來實現RBD塊的創建,如創建一個10G的塊存儲
[root@node-1 ~]# rbd create -p happylau --image ceph-rbd-demo.img --size 10G
如上創建了一個ceph-rbd-demo.img的RBD塊文件,大小為10G,可以通過ls和info查看RBD鏡像的列表和詳情信息
查看RBD鏡像列表
[root@node-1 ~]# rbd -p happylau ls
ceph-rbd-demo.img
查看RBD詳情,可以看到鏡像包含2560個objects,每個ojbect大小為4M,對象以rbd_data.10b96b8b4567開頭
[root@node-1 ~]# rbd -p happylau info ceph-rbd-demo.img
rbd image 'ceph-rbd-demo.img':
size 10 GiB in 2560 objects
order 22 (4 MiB objects)
id: 10b96b8b4567
block_name_prefix: rbd_data.10b96b8b4567
format: 2
features: layering, exclusive-lock, object-map, fast-diff, deep-flatten
op_features:
flags:
create_timestamp: Mon Mar 2 15:32:39 2020
3、RBD存儲塊已創建起來了,如何使用呢?如果已和虛擬化環境結合,創建好虛擬機然后在磁盤中寫數據即可,但此時還未與虛擬化結合(結合難度也比較大,后續再專門討論),rbd提供了一個map的工具,可以將一個RBD塊映射到本地塊進行使用,大大簡化了使用過程,rbd map時候,exclusive-lock, object-map, fast-diff, deep-flatten的features不支持,因此需要先disable,否則會提示RBD image feature set mismatch報錯信息
關閉默認的featrues
[root@node-1 ~]# rbd -p happylau --image ceph-rbd-demo.img feature disable deep-flatten
[root@node-1 ~]# rbd -p happylau --image ceph-rbd-demo.img feature disable fast-diff
[root@node-1 ~]# rbd -p happylau --image ceph-rbd-demo.img feature disable object-map
[root@node-1 ~]# rbd -p happylau --image ceph-rbd-demo.img feature disable exclusive-lock
查看校驗featrue信息
[root@node-1 ~]# rbd -p happylau info ceph-rbd-demo.img
rbd image 'ceph-rbd-demo.img':
size 10 GiB in 2560 objects
order 22 (4 MiB objects)
id: 10b96b8b4567
block_name_prefix: rbd_data.10b96b8b4567
format: 2
features: layering
op_features:
flags:
create_timestamp: Mon Mar 2 15:32:39 2020
將RBD塊map到本地,此時map后,可以看到RBD塊設備映射到了本地的一個/dev/rbd0設備上
[root@node-1 ~]# rbd map -p happylau --image ceph-rbd-demo.img
/dev/rbd0
[root@node-1 ~]# ls -l /dev/rbd0
brw-rw---- 1 root disk 251, 0 3月 2 15:58 /dev/rbd0
4、RBD塊設備已映射到本地的/dev/rbd0設備上,因此可以對設備進行格式化操作使用
通過device list可以查看到當前機器RBD塊設備的映射情況
[root@node-1 ~]# ls -l /dev/rbd0
brw-rw---- 1 root disk 251, 0 3月 2 15:58 /dev/rbd0
該設備可以像本地的一個盤來使用,因此可以對其進行格式化操作
[root@node-1 ~]# mkfs.xfs /dev/rbd0
meta-data=/dev/rbd0 isize=512 agcount=16, agsize=163840 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=2621440, imaxpct=25
= sunit=1024 swidth=1024 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=8 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
[root@node-1 ~]# blkid /dev/rbd0
/dev/rbd0: UUID="35f63145-0b62-416d-81f2-730c067652a8" TYPE="xfs"
掛載磁盤到系統中
[root@node-1 ~]# mkdir /mnt/ceph-rbd
[root@node-1 ~]# mount /dev/rbd0 /mnt/ceph-rbd/
[root@node-1 ~]# df -h /mnt/ceph-rbd/
文件系統 容量 已用 可用 已用% 掛載點
/dev/rbd0 10G 33M 10G 1% /mnt/ceph-rbd
[root@node-1 ~]# cd /mnt/ceph-rbd/
[root@node-1 ceph-rbd]# echo "testfile for ceph rbd" >rbd.log
本文通過ceph-deploy完成一個1mon節點+1mgr節點+3個osd節點的集群,ceph-deploy安裝簡化了集群的部署,我在安裝過程中遇到了不少報錯(主要是rpm版本問題,尤其是ceph-deploy的包,EPEL默認的是1.5版本,需要用到ceph官網的2.0.1,否則會遇到各種各樣的問題,1年未安裝Ceph,變化很大,不得不感慨社區的發展速度)。
除此之外,介紹了Ceph中RBD的使用方式,資源池pool的創建,rbd鏡像創建接口,rbd存儲映射的使用,通過接口的使用,演示了Ceph中RBD塊存儲的使用,如和虛擬化對接,虛擬化產品會調用接口實現相同功能。章節中未介紹object storage對象存儲的使用和cephfs文件存儲的使用,由于相關組件未安裝,后續章節中再做介紹。
另外,還介紹了Ceph另外當前集群只有一個monitor節點,存在單點故障,當node-1節點故障時,整個集群都會處于不可用狀態,因此需要部署高可用集群,以避免集群存在單點故障,保障業務的高可用性,下個章節來介紹monitor節點的擴容。
另外有需要云服務器可以了解下創新互聯cdcxhl.cn,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業上云的綜合解決方案,具有“安全穩定、簡單易用、服務可用性高、性價比高”等特點與優勢,專為企業上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。
網頁題目:Ceph集群的安裝和使用-創新互聯
標題網址:http://m.newbst.com/article26/dihicg.html
成都網站建設公司_創新互聯,為您提供面包屑導航、微信小程序、標簽優化、品牌網站制作、建站公司、網站制作
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯