【ceph】CentOS7.x上ceph單機的離線部署和cephFS文件系統(tǒng)的使用

一、實驗背景

1. 內(nèi)網(wǎng)環(huán)境下坞靶,無法連接互聯(lián)網(wǎng)憔狞,需要搭建ceph,為分布式集群提供ceph文件系統(tǒng)

2. 要實現(xiàn)腳本的自動化安裝彰阴,shell腳本或者ansible playbook瘾敢,不使用ceph-deploy工具

我們需要在一臺能聯(lián)網(wǎng)的實驗機機器上,將ceph集群安裝所需的主包及其依賴一次性下載尿这,編寫安裝腳本簇抵,然后在目標機器上搭建本地yum源,實現(xiàn)離線安裝射众。

我們先實現(xiàn)搭建本地倉庫碟摆,在目標機器上手動安裝。


二叨橱、實驗環(huán)境

操作系統(tǒng):CentOS7.5 Minimal

聯(lián)網(wǎng)的實驗機: 192.168.1.101

cephServer(node01): 192.168.1.103??

cephServer(node01)數(shù)據(jù)盤:/dev/sdb 100G

cephClient: 192.168.1.106


三典蜕、在聯(lián)網(wǎng)的實驗機下載ceph主包及其依賴


添加ceph官方y(tǒng)um鏡像倉庫

#? vi? ?/etc/yum.repos.d/ceph.repo

##################################################

[Ceph]

name=Ceph packages for $basearch

baseurl=http://mirrors.163.com/ceph/rpm-luminous/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://mirrors.163.com/ceph/rpm-luminous/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://mirrors.163.com/ceph/rpm-luminous/el7/SRPMS

enabled=1

gpgcheck=1

type=rpm-md

gpgkey=https://download.ceph.com/keys/release.asc

##################################################


# yum clean all

# yum repolist?

# yum list all |grep ceph

# yum? -y install epel-release?

# yum -y install yum-utils?

# yum -y install createrepo?

# mkdir /root/cephDeps?

# repotrack??ceph ceph-mgr ceph-mon ceph-mds ceph-osd ceph-fuse?ceph-radosgw? -p??/root/cephDeps

# createrepo? -v???/root/cephDeps

# tar? -zcf? ??cephDeps.tar.gz???/root/cephDeps


四、在cephServer(node01)上搭建 本地yum源

將cephDeps.tar.gz拷貝到cephServer(node01)服務(wù)器

#? tar? -zxf??cephDeps.tar.gz?

# vim? build_localrepo.sh?

##################################################

#!/bin/bash

parent_path=$( cd "$(dirname "${BASH_SOURCE}")" ; pwd -P )

cd "$parent_path"

mkdir /etc/yum.repos.d/backup

mv /etc/yum.repos.d/*.repo? /etc/yum.repos.d/backup

# create local repositry

rm -rf /tmp/localrepo

mkdir -p /tmp/localrepo

cp -rf? ./cephDeps/*? /tmp/localrepo

echo "

[localrepo]

name=Local Repository

baseurl=file:///tmp/localrepo

gpgcheck=0

enabled=1"? > /etc/yum.repos.d/ceph.repo

yum clean all

##################################################

#? sh? -x??build_localrepo.sh??

#? yum repolist??

五罗洗、在cephServer(node01)上離線安裝單機ceph


關(guān)閉selinux

# setenforce 0

# sed? -i? 's/^SELINUX=.*/SELINUX=permissive/g'? /etc/selinux/config


設(shè)置防火墻愉舔,放行相關(guān)端口

# systemctl? start? firewalld

# systemctl enable firewalld?

# firewall-cmd --zone=public --add-port=6789/tcp?--permanent

# firewall-cmd --zone=public --add-port=6800-7300/tcp?--permanent

# firewall-cmd --reload


用本地yum源安裝ceph組件

#? yum -y install ceph ceph-mds ceph-mgr ceph-osd ceph-mon

# yum list installed | grep ceph


# ll /etc/ceph/

# ll /var/lib/ceph/



配置ceph組件

創(chuàng)建集群id

#?uidgen?

用uidgen 生成一個uuid 例如 ee741368-4233-4cbc-8607-5d36ab314dab

創(chuàng)建ceph主配置文件

# vim? /etc/ceph/ceph.conf

######################################

[global]

fsid = ee741368-4233-4cbc-8607-5d36ab314dab??


mon_initial_members = node01

mon_host = 192.168.1.103

mon_max_pg_per_osd = 300


auth_cluster_required = cephx

auth_service_required = cephx

auth_client_required = cephx


osd_pool_default_size = 1

osd_pool_default_min_size = 1

osd_journal_size = 1024

osd_crush_chooseleaf_type = 0


public_network = 192.168.1.0/24

cluster_network = 192.168.1.0/24

[mon]

mon allow pool delete = true

###################################


1.部署mon


創(chuàng)建mon密鑰

#? ?ceph-authtool? --create-keyring? /tmp/ceph.mon.keyring? --gen-key? -n mon.? --cap mon 'allow *'

#? cat /tmp/ceph.mon.keyring

創(chuàng)建管理密鑰

#? ceph-authtool --create-keyring /etc/ceph/ceph.client.admin.keyring --gen-key -n client.admin --cap mon 'allow *' --cap osd 'allow *' --cap mds 'allow *' --cap mgr 'allow *'

# ceph-authtool --create-keyring /var/lib/ceph/bootstrap-osd/ceph.keyring --gen-key -n client.bootstrap-osd --cap mon 'profile bootstrap-osd'

# cat /etc/ceph/ceph.client.admin.keyring

# cat /var/lib/ceph/bootstrap-osd/ceph.keyring

將管理密鑰都導(dǎo)入到mon密鑰中

# ceph-authtool /tmp/ceph.mon.keyring --import-keyring /etc/ceph/ceph.client.admin.keyring

# ceph-authtool /tmp/ceph.mon.keyring --import-keyring /var/lib/ceph/bootstrap-osd/ceph.keyring

# cat /tmp/ceph.mon.keyring

創(chuàng)建monitor map

# monmaptool --create --add node01 192.168.1.103 --fsid ee741368-4233-4cbc-8607-5d36ab314dab /tmp/monmap

創(chuàng)建mon的目錄,啟動mon

#?mkdir? ?/var/lib/ceph/mon/ceph-node1

# chown?-R? ceph:ceph? /var/lib/ceph/

# chown?ceph:ceph???/tmp/monmap? ?/tmp/ceph.mon.keyring

#??sudo -u ceph ceph-mon --mkfs -i node01? --monmap /tmp/monmap? ?--keyring /tmp/ceph.mon.keyring

# ll /var/lib/ceph/mon/ceph-node01/

啟動mon服務(wù)

# systemctl start ceph-mon@node01.service

# systemctl enable ceph-mon@node01.service

#?systemctl status ceph-mon@node01.service

# ceph -s


2.部署osd

cephServer(node01)數(shù)據(jù)盤:/dev/sdb 100G

# lsblk

創(chuàng)建osd

#???ceph-volume lvm create --data /dev/sdb

#? ll /dev/mapper/

#? ll? /var/lib/ceph/osd/ceph-0/

# ceph auth list


啟動osd服務(wù)

# systemctl start? ceph-osd@0.service

# systemctl enable? ceph-osd@0.service

# systemctl status? ceph-osd@0.service

# ceph -s


3.部署mgr


創(chuàng)建密鑰

# mkdir /var/lib/ceph/mgr/ceph-node01

# ceph auth get-or-create mgr.node01 mon 'allow profile mgr' osd 'allow *' mds 'allow *'? >??/var/lib/ceph/mgr/ceph-node01/keyring

# chown -R ceph:ceph /var/lib/ceph/mgr

啟動mgr服務(wù)

# systemctl start ceph-mgr@node01.service

# systemctl enable ceph-mgr@node01.service

# systemctl status ceph-mgr@node01.service

# ceph -s

查看mgr模塊

# ceph mgr module ls??

4.部署mds


創(chuàng)建mds數(shù)據(jù)目錄

#? mkdir -p? /var/lib/ceph/mds/ceph-node01

創(chuàng)建秘鑰

#? ceph-authtool? --create-keyring? /var/lib/ceph/mds/ceph-node01/keyring? ?--gen-key? -n? ?mds.node01

導(dǎo)入秘鑰

#?ceph auth add mds.node01? osd "allow rwx" mds "allow" mon "allow profile mds"? -i? /var/lib/ceph/mds/ceph-node01/keyring

# chown -R ceph:ceph /var/lib/ceph/mds

# ceph auth list

啟動mds服務(wù)

# systemctl start ceph-mds@node01.service

# systemctl enable ceph-mds@node01.service

# systemctl status ceph-mds@node01.service

# ceph osd tree


5.?創(chuàng)建Ceph Pool

一個ceph集群可以有多個pool栖博,每個pool是邏輯上的隔離單位屑宠,不同的pool可以有完全不一樣的數(shù)據(jù)處理方式,比如Replica Size(副本數(shù))仇让、Placement Groups典奉、CRUSH Rules躺翻、快照、所屬者等卫玖。

pg_num設(shè)置參考:https://ceph.com/pgcalc


# ceph osd pool create cephfs_data 128

# ceph osd pool create cephfs_metadata 128

# ceph fs new cephfs cephfs_metadata cephfs_data

# ceph fs ls

# ceph -s

# ceph --show-config | grep mon_max_pg_per_osd

集群osd 數(shù)量較少拂到,如果創(chuàng)建了大量的pool忽洛,每個pool要占用一些pg ,ceph集群默認每塊磁盤都有默認值,為250 pgs单刁,不過這個默認值是可以調(diào)整的,但調(diào)整得過大或者過小都會對集群的性能產(chǎn)生一定影響非驮。

# vim /etc/ceph/ceph.conf

################################

mon_max_pg_per_osd = 300

################################

# systemctl restart ceph-mgr@node01.service

#?systemctl status ceph-mgr@node01.service

# ceph --show-config | grep "mon_max_pg_per_osd"

# ceph osd lspools



cephServer節(jié)點 服務(wù)正常啟動后各服務(wù)狀態(tài)壕鹉,服務(wù)進程、日志文件琴许、端口監(jiān)聽一覽


# ll /etc/ceph/

# ll /var/lib/ceph/

#? tree?/var/lib/ceph/

# cd /var/lib/ceph/

# ll bootstrap-*


六税肪、安裝配置cephClient

客戶端要掛載使用cephfs的目錄,有兩種方式:

1. 使用linux kernel client

2.? 使用ceph-fuse

這兩種方式各有優(yōu)劣勢榜田,kernel client的特點在于它與ceph通信大部分都在內(nèi)核態(tài)進行益兄,因此性能要更好,缺點是L版本的cephfs要求客戶端支持一些高級特性箭券,ceph FUSE就是簡單一些净捅,還支持配額,缺點就是性能比較差辩块,實測全ssd的集群蛔六,性能差不多為kernel client的一半。

關(guān)閉selinux

# setenforce 0

# sed -i 's/^SELINUX=.*/SELINUX=permissive/g' /etc/selinux/config

方式一:使用linux kernel client

在cephSever服務(wù)器上獲取admin認證key

# cat /etc/ceph/ceph.client.admin.keyring

默認采用ceph-deploy部署ceph集群是開啟了cephx認證庆捺,需要掛載secret-keyring古今,即集群mon節(jié)點/etc/ceph/ceph.client.admin.keyring文件中的”key”值,采用secretfile可不用暴露keyring滔以,但有1個bug捉腥,始終報錯:libceph: bad option at 'secretfile=/etc/ceph/admin.secret'

Bug地址:https://bugzilla.redhat.com/show_bug.cgi?id=1030402


# mount -t ceph 192.168.1.103:6789:/? /mnt -o name=admin,secret=AQDZRfJcn4i0BRAAAHXMjFmkEZX2oO/ron1mRA==

# mount -l? | grep ceph?

# df -hT?


方式二:使用ceph-fuse


在cephClient上搭建 本地yum源

將cephDeps.tar.gz拷貝到cephClient)服務(wù)器

#? tar? -zxf??cephDeps.tar.gz?

# vim? build_localrepo.sh?

##################################################

#!/bin/bash

parent_path=$( cd "$(dirname "${BASH_SOURCE}")" ; pwd -P )

cd "$parent_path"

mkdir /etc/yum.repos.d/backup

mv /etc/yum.repos.d/*.repo? /etc/yum.repos.d/backup

# create local repositry

rm -rf /tmp/localrepo

mkdir -p /tmp/localrepo

cp -rf? ./cephDeps/*? /tmp/localrepo

echo "

[localrepo]

name=Local Repository

baseurl=file:///tmp/localrepo

gpgcheck=0

enabled=1"? > /etc/yum.repos.d/ceph.repo

yum clean all

##################################################

#? sh? -x??build_localrepo.sh??

#? yum repolist??

安裝ceph-fuse 相關(guān)組件

#? yum -y install ceph-fuse

# rpm -ql ceph-fuse

創(chuàng)建ceph-fuse 相關(guān)目錄,從cephServer拷貝配置文件和秘鑰

#? mkdir? /etc/ceph

#? scp? root@192.168.1.103:/etc/ceph/ceph.client.admin.keyring? /etc/ceph

#? scp? root@192.168.1.103:/etc/ceph/ceph.conf? ? /etc/ceph?

#? chmod? 600? /etc/ceph/ceph.client.admin.keyring

創(chuàng)建ceph-fuse的service文件

#? cp /usr/lib/systemd/system/ceph-fuse@.service? ?/etc/systemd/system/ceph-fuse.service

#? vim? /etc/systemd/system/ceph-fuse.service?

##############################################

[Unit]

Description=Ceph FUSE client

After=network-online.target local-fs.target time-sync.target

Wants=network-online.target local-fs.target time-sync.target

Conflicts=umount.target

PartOf=ceph-fuse.target

[Service]

EnvironmentFile=-/etc/sysconfig/ceph

Environment=CLUSTER=ceph

ExecStart=/usr/bin/ceph-fuse -f -o rw,noexec,nosuid,nodev? /mnt

TasksMax=infinity

Restart=on-failure

StartLimitInterval=30min

StartLimitBurst=3

[Install]

WantedBy=ceph-fuse.target

########################################################

我們將cephfs掛載在客戶端/mnt下

# systemctl daemon-reload

# systemctl? start ceph-fuse.service

# systemctl? enable? ceph-fuse.service

# systemctl? status? ceph-fuse.service

# systemctl? start ceph-fuse.target

# systemctl? enable ceph-fuse.target

# systemctl? status ceph-fuse.target


#? df? -hT

測試寫入一個大文件

#? dd if=/dev/zero of=/mnt/test? bs=1M count=10000

# df? -hT

設(shè)置cephFS 掛載子目錄

從上面的可以看出你画,掛載cephfs的時候抵碟,源目錄使用的是/,如果一個集群只提供給一個用戶使用就太浪費了坏匪,能不能把集群切分成多個目錄拟逮,多個用戶自己掛載自己的目錄進行讀寫呢?

# ceph-fuse --help

使用admin掛載了cephfs的/之后适滓,只需在/中創(chuàng)建目錄敦迄,這些創(chuàng)建后的目錄就成為cephFS的子樹,其他用戶經(jīng)過配置,是可以直接掛載這些子樹目錄的罚屋,具體步驟為:

1. 使用admin掛載了/之后苦囱,創(chuàng)建了/ceph

#?mkdir?-p?/opt/tmp

#?ceph-fuse?/opt/tmp

#?mkdir? /opt/tmp/ceph

#??umount? /opt/tmp

#??rm?-rf? /opt/tmp

2. 設(shè)置ceph-fuse.service,掛載子目錄

# vim /etc/systemd/system/ceph-fuse.service

################################################

[Unit]

Description=Ceph FUSE client

After=network-online.target local-fs.target time-sync.target

Wants=network-online.target local-fs.target time-sync.target

Conflicts=umount.target

PartOf=ceph-fuse.target

[Service]

EnvironmentFile=-/etc/sysconfig/ceph

Environment=CLUSTER=ceph

ExecStart=/usr/bin/ceph-fuse -f -o rw,noexec,nosuid,nodev? /mnt? ?-r /ceph

TasksMax=infinity

Restart=on-failure

StartLimitInterval=30min

StartLimitBurst=3

[Install]

WantedBy=ceph-fuse.target

###################################################################

#?systemctl daemon-reload?

#?systemctl start ceph-fuse.service

#?systemctl enable ceph-fuse.service

#?systemctl status ceph-fuse.service

# systemctl? start ceph-fuse.target

# systemctl? enable ceph-fuse.target

# systemctl? status ceph-fuse.target

#? df? -hT

cephClient節(jié)點 服務(wù)正常啟動后各服務(wù)狀態(tài)脾猛,服務(wù)進程撕彤、日志文件、端口監(jiān)聽一覽



當然猛拴,這篇文章我們只講了ceph的文件系統(tǒng)cephFS羹铅,關(guān)于另外兩種存儲 塊存儲和對象存儲,大家可以參閱相關(guān)資料愉昆,自行解決职员!



七、參考

Ceph基礎(chǔ)知識

https://www.cnblogs.com/zywu-king/p/9064032.html


centos7離線搭建Ceph塊存儲和對象存儲

https://pianzong.club/2018/11/05/install-ceph-offline/


分布式文件系統(tǒng)Ceph

https://blog.csdn.net/dapao123456789/article/category/2197933


ceph-deploy?v2.0.0初始化磁盤

https://blog.51cto.com/3168247/2088865


Ceph告警:too many PGs per OSD處理

http://www.reibang.com/p/f2b20a175702


ceph (luminous 版) pool 管理

https://blog.csdn.net/signmem/article/details/78594340


ceph集群添加了一個osd之后撼唾,該osd的狀態(tài)始終為down

https://blog.51cto.com/xiaowangzai/2173309?source=dra


CentOS7.x上ceph的單機部署和cephFS文件系統(tǒng)的使用

http://www.reibang.com/p/736fc03bd164


Ceph?bluestore?和?ceph-volume

http://xcodest.me/ceph-bluestore-and-ceph-volume.html


Ceph PGs per Pool Calculator

https://ceph.com/pgcalc


MANUAL?DEPLOYMENT

http://docs.ceph.com/docs/master/install/manual-deployment/#manager-daemon-configuration


CEPH-MGR ADMINISTRATOR’S GUIDE

http://docs.ceph.com/docs/master/mgr/administrator/#mgr-administrator-guide?tdsourcetag=s_pcqq_aiomsg


CREATE A CEPH FILESYSTEM

http://docs.ceph.com/docs/master/cephfs/createfs

http://docs.ceph.org.cn/cephfs/createfs


Redhat/MANUALLY INSTALLING RED HAT CEPH STORAGE

https://access.redhat.com/documentation/en-us/red_hat_ceph_storage/3/html/installation_guide_for_red_hat_enterprise_linux/manually-installing-red-hat-ceph-storage


WHAT IS RED HAT CEPH STORAGE?

https://access.redhat.com/documentation/en-us/red_hat_ceph_storage/3/html/installation_guide_for_red_hat_enterprise_linux/what_is_red_hat_ceph_storage

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末廉邑,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子倒谷,更是在濱河造成了極大的恐慌,老刑警劉巖糙箍,帶你破解...
    沈念sama閱讀 216,919評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件渤愁,死亡現(xiàn)場離奇詭異,居然都是意外死亡深夯,警方通過查閱死者的電腦和手機抖格,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,567評論 3 392
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來咕晋,“玉大人雹拄,你說我怎么就攤上這事≌莆兀” “怎么了滓玖?”我有些...
    開封第一講書人閱讀 163,316評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長质蕉。 經(jīng)常有香客問我势篡,道長,這世上最難降的妖魔是什么模暗? 我笑而不...
    開封第一講書人閱讀 58,294評論 1 292
  • 正文 為了忘掉前任禁悠,我火速辦了婚禮,結(jié)果婚禮上兑宇,老公的妹妹穿的比我還像新娘碍侦。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 67,318評論 6 390
  • 文/花漫 我一把揭開白布瓷产。 她就那樣靜靜地躺著比规,像睡著了一般。 火紅的嫁衣襯著肌膚如雪拦英。 梳的紋絲不亂的頭發(fā)上蜒什,一...
    開封第一講書人閱讀 51,245評論 1 299
  • 那天,我揣著相機與錄音疤估,去河邊找鬼灾常。 笑死,一個胖子當著我的面吹牛铃拇,可吹牛的內(nèi)容都是我干的钞瀑。 我是一名探鬼主播,決...
    沈念sama閱讀 40,120評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼慷荔,長吁一口氣:“原來是場噩夢啊……” “哼雕什!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起显晶,我...
    開封第一講書人閱讀 38,964評論 0 275
  • 序言:老撾萬榮一對情侶失蹤贷岸,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后磷雇,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體偿警,經(jīng)...
    沈念sama閱讀 45,376評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,592評論 2 333
  • 正文 我和宋清朗相戀三年唯笙,在試婚紗的時候發(fā)現(xiàn)自己被綠了螟蒸。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,764評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡崩掘,死狀恐怖七嫌,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情苞慢,我是刑警寧澤诵原,帶...
    沈念sama閱讀 35,460評論 5 344
  • 正文 年R本政府宣布,位于F島的核電站枉疼,受9級特大地震影響皮假,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜骂维,卻給世界環(huán)境...
    茶點故事閱讀 41,070評論 3 327
  • 文/蒙蒙 一惹资、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧航闺,春花似錦褪测、人聲如沸猴誊。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,697評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽懈叹。三九已至,卻和暖如春分扎,著一層夾襖步出監(jiān)牢的瞬間澄成,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,846評論 1 269
  • 我被黑心中介騙來泰國打工畏吓, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留墨状,地道東北人。 一個月前我還...
    沈念sama閱讀 47,819評論 2 370
  • 正文 我出身青樓菲饼,卻偏偏與公主長得像肾砂,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子宏悦,可洞房花燭夜當晚...
    茶點故事閱讀 44,665評論 2 354

推薦閱讀更多精彩內(nèi)容