摘要:特別是討論了算法的基本理后,就更容易理解分布式文件系統中各種角色的工作原理。接下來我們使用工具在將要參與分布式文件系統的各個節點上,安裝軟件。注意,為了保證節點故障的情況下,整個分布式文件系統依然可以穩定工作,我們必須設置多個角色。
1. 概述
從本篇文章開始介紹一款現在非常火的分布式文件系統Ceph,包括這款文件系統的安裝、基本使用場景、常用管理命令和重要工作原理。特別是討論了PaxOS算法的基本理后,就更容易理解Ceph分布式文件系統中各種角色的工作原理。
2. Ceph的安裝部署
本文將介紹Ceph分布式文件系統如何在CentOS 7.X版本上一步一步完成安裝,使讀者在閱讀過程中了解Ceph有哪些重要的子系統/工作模塊,以及它們是如何關聯工作的。請注意Ceph在Ubuntu等Linux操作系統上的安裝過程和注意點大致相同,但如果讀者和筆者同樣選擇在CentOS上安裝Ceph,那么就請使用CentOS 7.X的版本,因為這個版本是Ceph官方介紹中推薦的,更重要的是CentOS 6.X已經不受支持了。
2-1. 準備工作
本文的演示中我們將按照以下表格安裝一個三節點的Ceph分布式文件系統,并綁定一個文件系統的客戶端進行文件讀寫操作。
節點 IP地址 角色說明
vmnode1 172.16.71.182 MDN、MDS、OSD
vmnode2 172.16.71.183 MDN、MDS、OSD
vmnode3 172.16.71.184 MDN、MDS、OSD
client 172.16.71.1 Client
以上表格中的角色縮寫如果目前看不懂也無所謂,在后續的安裝介紹中我們將說明這些功能角色的作用。Ceph的安裝準備工作相對而言有一些繁瑣,如果每一個節點都是全新的操作系統,那么這些節點至少需要經過創建用戶、設置用戶無密碼登錄權限、變更Ceph下載倉庫、更新軟件倉庫等工作才能完成準備動作。其過程中往往會出現一些錯誤,需要在安裝過程中耐心解決,下面我們就開始Ceph安裝前的準備工作。
2-1-1. 關于用戶
無論是測試環境還是正式環境,安裝Ceph都不建議使用root賬號。所以第一步我們需要專門創建一個用戶和用戶組,并為這個用戶給定管理員權限。我們創建一個用戶組ceph和一個專門用來運行Ceph各個模塊的用戶,用戶名也叫做ceph
[......]# groupadd ceph
[......]# useradd ceph -g ceph
[......]# passwd ceph
// 修改成你想要的密碼
......123456123456
記得為用戶設置root權限,既是在sudoers文件中加入相關配置信息:
[......]# vim /etc/sudoers
// 加入ceph的sudo權限
......
root ALL=(ALL) ALL
ceph ALL=(ALL) NOPASSWD:ALL
......12345671234567
參與Ceph構建的每個節點都要設置相同的用戶信息,并且設置該用戶在各個節點間的無密碼登錄功能——這是因為后面Ceph-deploy的工作過程中,將登錄到各個節點上執行命令。
[ceph@vmnode1 ~]$ ssh-keygen
// 操作系統會出現一些提示,回車就行了
[ceph@vmnode1 ~]$ cd ~/.ssh/
[ceph@vmnode1 .ssh]$ cat ./id_rsa.pub >> ./authorized_keys
// 一定要更改authorized_keys的訪問權限,不然無密碼登錄要失敗
[ceph@vmnode1 ~]$ chmod 600 ./authorized_keys
// 將authorized_keys copy到你將要登錄的操作系統上,注意用戶的home目錄要做對應12345671234567
關于無密碼登錄的設置過程就不再深入講解了,因為是很基本的ssh設置。主要原則就是保證authorized_keys文件的公鑰記錄信息和這個文件在幾個節點間的一致性。如果后續有新的節點加入到Ceph集群中,并且也要承擔MDS Follower角色的工作,則同樣要設置這個新節點到各個節點的相互無密碼登錄功能。
2-1-2. 關于Ceph源和擴展組件
Ceph官網的下載速度奇慢,這實際上不怪Ceph,原因大家也都懂,呵呵。一個辦法是設置國外的代理服務,有免費的,不過好用的還是付費的。另一個好消息是,Ceph有國內鏡像,例如163的和aliyun的。根據筆者觀察163的鏡像同步要比aliyun的鏡像同步及時,比如163的鏡像中已經有rpm-hammer/ceph-deploy-1.5.37的下載,但是aliyun的鏡像中最高版本只有ceph-deploy-1.5.36。通過以下環境變量的設置就可以使用國內的鏡像(這個過程不會影響后續的任何安裝步驟):
# 你也可以改成國內其它Ceph鏡像
export CEPH_DEPLOY_REPO_URL
export CEPH_DEPLOY_GPG_URL
另外Ceph的安裝過程還需要相當的第三方組件依賴,其中一些第三方組件在CentOS yum.repo Base等官方源中是沒有的(例如LevelDB),所以讀者在安裝過程中會有一定的幾率遇到各種依賴關系異常,并要求先行安裝XXX第三方組件的提示(例如提示先安裝liblevel.so)。雖然我們后文將會介紹的Ceph輔助部署工具,Ceph-deploy的工作本質還是通過yum命令去安裝管理組件,但是既然CentOS yum.repo Base官方源中并沒有某些需要依賴的第三方組件,所以一旦遇到類似的組件依賴問題安裝過程就沒法自動繼續了。解決這個問題,本示例中建議引入CentOS的第三方擴展源Epel。
# 關于Epel 擴展源的引入這里不過做介紹了,網絡上的資料一大把。這里給出一個“目前可用”(不保證多年后依然可用)的安裝地址,以及安裝后生成的repo配置片段(本示例中的第三方擴展源匹配CentOS 7.X操作系統)。
http://dl.fedoraproject.org/p...
# repo文件的名字叫做epel.repo
[epel]
name=Extra Packages for Enterprise Linux 7 - $basearch
#baseurl$basearch
mirrorlist=epel-7&arch=$basearch
failovermethod=priority
enabled=1
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
......123456789101112131415123456789101112131415
為了保證擴展源中的組件與CentOS官方源中的組件不沖突,可以調低擴展源的優先級。當然讀者也可以自行手動解決Ceph安裝過程提示的組件依賴問題——使用rpm命令的方式。筆者試過,深刻的體會到什么叫生不如死。。。
設置倉庫后,需要更新倉庫緩存,如下:
[......]$ yum makecache
[......]$ yum update1212
2-1-3. 關于物理磁盤
Ceph是一種分布式文件系統,既然是文件系統,那么無論它的上層如何設計如何劃分,始終需要對數據持久化存儲進行落地。所以Ceph需要操作塊存儲設備(關于塊存儲的相關介紹,可以參看本專題最初的幾篇文章),Ceph要求塊存儲設備的文件系統必須為XFS、BTRFS或者EXT4,且必須在操作系統上有獨立掛載點。
2-2. 正式安裝
Ceph的安裝有兩種方式,第一種是使用Ceph官方提供的Ceph-deploy(部署工具)進行安裝,這種方式我們需要首先yum Ceph-deploy,然后再使用Ceph-deploy提供的各種命令來安裝Ceph的各個節點,但好處也很明顯——Ceph的安裝過程基本上是半自動化的,除了一些操作系統層面的問題需要解決外(例如用戶對某個目錄的讀寫權限設定錯誤,再例如防火墻的端口沒有打開等等)整個過程還算比較順利。另外一種是全人工安裝,除非你的操作系統存在特殊應用場景,或者有需要特別保護的組件需要進行獨立設定,否則還是建議使用前一種Ceph-deploy的方式。
2-2-1. 安裝Ceph-Deploy和Ceph軟件本身
首先安裝ceph-deploy軟件本省。請注意這個軟件并不是ceph工作的一部分,它只一個增加簡便性的工具。
......
[......]$ yum -y install ceph-deploy
// NTP時鐘同步服務
[......]$ yum install -y ntp ntpdate ntp-doc
//使用一個亞洲公用時間同步節點進行時間同步
[......]$ ntpdate 0.asia.pool.ntp.org
......12345671234567
只需要在某個節點上安裝ceph-deploy就行,但是NTP服務是每一個節點都要安裝和進行同步,它主要是保證各節點的物理時鐘同步。接下來我們使用ceph-deploy工具在將要參與Ceph分布式文件系統的各個節點上,安裝Ceph軟件。注意,只是安裝軟件,并不是說完成后就可以讓這些節點承擔相應的工作職責了。以下命令只需要在安裝了ceph-deploy的節點上執行就行了,ceph-deploy會幫助技術人員在指定的各個節點上使用yum命令安裝ceph軟件。接著使用以下命令在以上各個節點上正式安裝Ceph軟件:
[ceph@vmnode1 ~]$ ceph-deploy install vmnode1 vmnode2 vmnode3
// 命令格式為:
ceph-deploy install {ceph-node}[{ceph-node} ...]123123
安裝Ceph軟件的過程中,有一定概率會出現各種警告信息。警告信息有的是可以忽略的,有的則是必須進行處理的。這些問題一般分為幾類:鏡像源和下載問題,依賴問題,權限問題。如何來處理這些問題,除了需要具備一定的玩轉Linux系統的經驗外,主要還是細心,切忌急躁。
2-2-2. 安裝Ceph Monitor
MON是Monitor的簡稱,字面意義為監控、監視。是的,它的作用是監控、管理和協調整個分布式系統環境中其它各個OSD/PG、Client、MDS角色的工作,保證整個分布環境中的數據一致性。注意,為了保證節點故障的情況下,整個Ceph分布式文件系統依然可以穩定工作,我們必須設置多個MON角色。例如在本示例中,就設置參與Ceph分布式系統的三個節點上,都安裝MON角色:
// 改名了意味新的MON節點
[ceph@vmnode1 ~]$ ceph-deploy new vmnode1 vmnode2 vmnode3
// 命令格式為:
ceph-deploy new {initial-monitor-node(s)}12341234
以上命令運行后,ceph-deploy工具會在本節點生成一些文件,包括:
ceph.conf
ceph.log
ceph.mon.keyring123123
最重要的文件當然就是ceph.conf文件了(實際上ceph.mon.keyring也很重要),觀察這個文件內容:
[ceph@vmnode1 ~]$ cat ./ceph.conf
[global]
fsid = 50c157eb-6d74-4d7d-b8e8-959a7b855b55
mon_initial_members = vmnode1, vmnode2, vmnode3
mon_host = 172.16.71.182,172.16.71.183,172.16.71.184
auth_cluster_required = cephx
auth_service_required = cephx
auth_client_required = cephx1234567812345678
可以看到ceph.conf文件中已經設置好了我們將要運行MON角色的三個節點信息。接下來我們還需要在ceph.conf文件中增加一些信息,如下(后文還會詳細講解ceph中的重要參數):
[ceph@vmnode1 ~]$ vim ./ceph.conf
......
# 后續的文章會詳細講解ceph中重要的配置項
osd pool default size = 2
osd pool default min size = 2
max open files = 655350
cephx cluster require signatures = false
cephx service require signatures = false
......123456789123456789
接著使用以下命令,就可以在conf文件中已配置的MON節點上啟動MON服務了(前提是,這些節點已經成功安裝了Ceph軟件):
# 開始初始化運行mon節點。
[ceph@vmnode1 ~]$ceph-deploy mon create-initial
# 如果需要指定一些自定義的配置參數,可以采用如下格式(命令有詳細的幫助信息)來啟動
[ceph@vmnode1 ~]$ceph-deploy --overwrite-conf --cluster ceph mon create-initial12341234
每一個Ceph分布式系統都會有一個名字,如果在創建MON時不給定這個名字就會默認為“ceph”。完成以上步驟后,ceph-deploy工具會在當前運行命令的目錄下生成幾個文件,這些文件都非常重要,請不要擅自改動。在隨后的安裝過程中ceph-deploy工具將按需將這些文件復制到對應角色的對應目錄中去。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/111879.html
摘要:層確保數據一致性和可靠性。元數據服務器,跟蹤文件層次結構并存儲只供使用的元數據。這些文件系統擴展屬性能夠為守護進程提供內部對象的狀態快照元數據和等信息這有助于數據管理。啟迪云-高級開發工程師 ?侯玉彬前言前文回顧:《開源社區的明星項目—Ceph談》上一次簡單的介紹Ceph的過去和未來的發展。這一節將詳細介紹Ceph的構件以及組件。Ceph存儲架構Ceph 存儲集群由幾個不同的daemon組成...
摘要:層確保數據一致性和可靠性。保證集群的相關組件在同一時刻能夠達成一致,相當于集群的領導層,負責收集更新和發布集群信息。元數據服務器,跟蹤文件層次結構并存儲只供使用的元數據。啟迪云-高級開發工程師 ?侯玉彬前言上一次簡單的介紹Ceph的過去和未來的發展。這一節將詳細介紹Ceph的構件以及組件。Ceph存儲架構Ceph 存儲集群由幾個不同的daemon組成,每個daemon負責Ceph 的一個獨特...
摘要:第一次接觸集群,感謝官方的指導文檔和許多網友提供的教程,糊糊涂涂算是把集群部署起來了。應該為每個運行的機器添加一個,否則集群處于狀態。至此的集群搭建算是完成了,下一步會進行塊設備的搭建。參考分布式存儲部署手冊如何在中安裝存儲集群部署版 第一次接觸ceph集群,感謝官方的指導文檔和許多網友提供的教程,糊糊涂涂算是把集群部署起來了。由于Luminous12.2剛發布不久,部署起來跟舊版本還...
摘要:充當在的業務流程層,將和流程部署為副本集。來自的文件將存儲軟件轉變為自我管理自我擴展和自我修復的存儲服務。由于請求使用文件系統格式化的卷,因此我需要在所有節點上安裝工具。如果沒有指定特定的存儲類,我安裝的任何應用程序都將使用進行數據存儲。 作者:Earl C. Ruby III showImg(https://segmentfault.com/img/bVbljHL?w=300&h=1...
閱讀 3074·2021-09-28 09:43
閱讀 906·2021-09-08 09:35
閱讀 1445·2019-08-30 15:56
閱讀 1189·2019-08-30 13:00
閱讀 2735·2019-08-29 18:35
閱讀 1834·2019-08-29 14:07
閱讀 3440·2019-08-29 13:13
閱讀 1336·2019-08-29 12:40