分佈式文件系統Ceph

  1. 概述node

  從本篇文章開始介紹一款如今很是火的分佈式文件系統Ceph,包括這款文件系統的安裝、基本使用場景、經常使用管理命令和重要工做原理。特別是討論了PaxOS算法的基本理後,就更容易理解Ceph分佈式文件系統中各類角色的工做原理。算法

  2. Ceph的安裝部署vim

  本文將介紹Ceph分佈式文件系統如何在CentOS 7.X版本上一步一步完成安裝,使讀者在閱讀過程當中瞭解Ceph有哪些重要的子系統/工做模塊,以及它們是如何關聯工做的。請注意Ceph在Ubuntu等Linux操做系統上的安裝過程和注意點大體相同,但若是讀者和筆者一樣選擇在CentOS上安裝Ceph,那麼就請使用CentOS 7.X的版本,由於這個版本是Ceph官方介紹中推薦的,更重要的是CentOS 6.X已經不受支持了。緩存

  2-1. 準備工做網絡

  本文的演示中咱們將按照如下表格安裝一個三節點的Ceph分佈式文件系統,並綁定一個文件系統的客戶端進行文件讀寫操做。ssh

節點 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各個模塊的用戶,用戶名也叫作cephui

  [......]# 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工具將按需將這些文件複製到對應角色的對應目錄中去。

相關文章
相關標籤/搜索