Ceph集羣配置系列《三》部署Ceph集羣

前期準備

部署的Ceph集羣是基於mimic版。要安裝Ceph和其它支持軟件,需要從Ceph倉庫中獲取軟件包。

在本系列中使用的Ceph倉庫是在第一篇文章中製作的遠程倉庫。

Note:以下操作需在全部的節點執行;

  1. 添加密鑰

    將密鑰添加至系統的可信密鑰列表中以避免出現安全警告。 對於主要版本(例如,hammer, jewel, luminous,mimic等),請使用release.asc密鑰。

    要安裝release.asc密鑰,請執行以下命令:

    [root@node1~]# sudo rpm --import 'http://11.11.11.10/ceph/keys/release.asc'
    
  2. 修改ceph.repo

    修改每個節點的ceph.repo文件。 在下面的示例中,需將{ceph-release}替換爲Ceph的主要發行版(例如,luminous,mimic等)和將{distro}替換爲相應的Linux發行版(例如,el7等)。 可以通過查看http://11.11.11.10/ceph/rpm-{ceph-release}/目錄以查看Ceph支持的發行版。 某些Ceph包(例如EPEL)必須優先於標準包,因此必須確保設置priority = 2。

    在此處{ceph-release}爲mimic,{distro}爲el7。

    [ceph]
    name=Ceph packages for $basearch
    baseurl=http://11.11.11.10/ceph/rpm-mimic/el7/$basearch
    enabled=1
    priority=2
    gpgcheck=0
    gpgkey=http://11.11.11.10/ceph//keys/release.asc
    
    [ceph-noarch]
    name=Ceph noarch packages
    baseurl=http://11.11.11.10/ceph/rpm-mimic/el7/noarch
    enabled=1
    priority=2
    gpgcheck=0
    type=rpm-md
    gpgkey=http://11.11.11.10/ceph/keys/release.asc
    
  3. 增加extras.repo

    在每個節點新建/etc/yum.repo.d/ceph.repo文件,並增加以下內容。

    [extras]
    name=Extra packages
    baseurl=http:/11.11.11.10/extras
    enabled=1
    priority=2
    gpgcheck=0
    

部署Ceph集羣

在管理節點上創建一個目錄,用於保存ceph-deploy爲集羣生成的配置文件和密鑰。

[root@node1~]# mkdir my-cluster && cd my-cluster
[root@node1 my-cluster]#

ceph-deploy會將文件輸出到當前目錄。 執行ceph-deploy時,請確保位於此目錄中。

創建集羣

如果遇到麻煩且想要重新開始,請執行以下操作以清除Ceph軟件包,並清除其所有數據和配置:

[root@node1 my-cluster]# ceph-deploy purge {ceph-node} [{ceph-node}] 
[root@node1 my-cluster]# ceph-deploy purgedata {ceph-node} [{ceph-node}] 
[root@node1 my-cluster]# ceph-deploy forgetkeys 
[root@node1 my-cluster]# rm ceph.* 

如果執行purge,則必須重新安裝Ceph。 最後一個rm命令刪除在安裝期間由本地ceph-deploy創建的所有文件。

在管理節點上,進入剛創建的放置配置文件的目錄,使用 ceph-deploy 執行以下命令。

①創建集羣。

[root@node1 my-cluster]# ceph-deploy new {initial-monitor-node(s)} 

將initial-monitor-node指定爲hostname。 例如:

[root@node1 my-cluster]# ceph-deploy new node1 

在當前目錄中使用ls和cat檢查ceph-deploy的輸出。 應該看到Ceph配置文件(ceph.conf),監視器密鑰環(ceph.mon.keyring)以及集羣的日誌文件。 有關其它詳細信息,請參閱ceph-deploy new -h。

若報錯:

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

解決辦法:

第1步:解決python 版本問題 。注意檢查操作系統的python版本,ceph-deploy通過執行python腳本來實現安裝,

更改/usr/bin/ceph-deploy文件中 更改python2.6的部分爲2.7(此處應當與系統python版本相同) 更改第一行文件爲#!/usr/bin/python2.7

第2步:安裝 python2-pip。yum -y install python2-pip

②如果有多個網口,需在Ceph配置文件的[global]部分下添加public network設置。

public network = {ip-address}/{bits} 

例如:

public network = 11.11.11.0/24 

以使用11.11.11.0/24(或11.11.11.0/255.255.255.0)網絡中的IP。

同時也可以在[global]部分指定cluster network設置。

cluster network = {ip-address}/{bits} 

例如:

cluster network = 11.11.12.0/24 

以使用11.11.12.0/24(或11.11.12.0/255.255.255.0)網絡中的IP。

③如果要在IPv6環境中部署,請將以下內容添加到本地目錄中的ceph.conf:

[root@node1 my-cluster]# echo ms bind ipv6 = true >> ceph.conf 

④安裝依賴包:

# yum install -y python-jinja2 python-werkzeug python-prettytable python-routes python-bcrypt python-cherrypy python-pecan
# yum install -y  selinux-policy-devel selinux-policy-doc selinux-policy-minimum  selinux-policy-mls selinux-policy-sandbox
# yum install -y lttng-modules-debuginfo lttng-tools lttng-tools-debuginfo lttng-tools-devel lttng-ust lttng-ust-debuginfo lttng-ust-devel lttng-ust-java lttng-ust-java-agent
# yum install -y leveldb libbabeltrace liboath

⑤安裝Ceph包:

[root@node1 my-cluster]# ceph-deploy install {ceph-node} [...]  --repo-url=http://11.11.11.10/ceph/rpm-mimic/el7/ --gpg-url=http://11.11.11.10/ceph/keys/release.asc

例如:

[root@node1 my-cluster]# ceph-deploy install node1 node2 node3 node4 --repo-url=http://11.11.11.10/ceph/rpm-mimic/el7/ --gpg-url=http://11.11.11.10/ceph/keys/release.asc

如果設置了環境變量,即可讓安裝過程與常規一樣,具體過程如下:

CentOS:

[root@node1 my-cluster]# export CEPH_DEPLOY_REPO_URL=http://11.11.11.10/ceph/rpm-nautilus/el7
[root@node1 my-cluster]# export CEPH_DEPLOY_GPG_URL=http://11.11.11.10/ceph/keys/release.asc

ceph-deploy將在每個節點上安裝Ceph。

⑥部署初始監視器並收集密鑰:

[root@node1 my-cluster]# ceph-deploy mon create-initial

完成此過程後,本地目錄應包括以下密鑰環:

  • 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

Note:如果此步失敗並輸出類似於如下信息 “Unable to find /etc/ceph/ceph.client.admin.keyring”,請確認 ceph.conf 中爲 monitor 指定的 IP 是 Public IP,而不是 Private IP。

⑦在管理節點使用ceph-deploy將配置文件和管理密鑰複製到個Ceph節點,這樣無需在每次執行命令時指定監視器地址和ceph.client.admin.keyring就可以使用ceph CLI。

[root@node1 my-cluster]# ceph-deploy admin {ceph-node(s)} 

例如:

[root@node1 my-cluster]#ceph-deploy admin node1 node2 node3

⑧部署MGR。 (僅適用於Luminous及更高版本):

[root@node1 my-cluster]# ceph-deploy mgr create node1  # Required only for luminous+ builds, i.e >= 12.x builds

⑨添加OSD。出於說明目的,假設每個節點中都有兩個個未使用的磁盤,名爲/dev/sdb和/dev/sdc。確保設備當前未在使用,且不包含任何重要數據。

[root@node1 my-cluster]# ceph-deploy osd create --data {device} {ceph-node} 

例如:

[root@node1 my-cluster]# ceph-deploy osd create --data /dev/sdb node1
[root@node1 my-cluster]# ceph-deploy osd create --data /dev/sdc node1
[root@node1 my-cluster]# ceph-deploy osd create --data /dev/sdb node2
[root@node1 my-cluster]# ceph-deploy osd create --data /dev/sdc node2
[root@node1 my-cluster]# ceph-deploy osd create --data /dev/sdb node3
[root@node1 my-cluster]# ceph-deploy osd create --data /dev/sdc node3
[root@node1 my-cluster]# ceph-deploy osd create --data /dev/sdb node4
[root@node1 my-cluster]# ceph-deploy osd create --data /dev/sdc node4

⑩檢查集羣的健康狀況。

# ssh node1 sudo ceph health 

集羣應報告HEALTH_OK。 可以使用以下命令查看更完整的集羣狀態:

# ssh node1 sudo ceph -s

擴展集羣

啓動並運行基本集羣后,下一步是擴展集羣。 首將Ceph mds添加到node1、node2和node3。 然後將Ceph mon和Ceph mgr添加到node2和node3,以提高可靠性和可用性。

添加MDS

要使用CephFS,至少需要一個元數據服務器。 執行以下操作以創建元數據服務器:

[root@node1 my-cluster]# ceph-deploy mds create {ceph-node} 

例如:

[root@node1 my-cluster]# ceph-deploy mds create node1 node2 node3

注意:只有在新建文件池和文件系統後,ceph -s纔會顯示mds信息

添加Monitor

Ceph存儲集羣需要至少運行一個Ceph Monitor和Ceph Manager。 爲了實現高可用性,Ceph存儲集羣通常運行多個Ceph mon,單個Ceph mon的故障不會導致Ceph存儲集羣崩潰。 Ceph使用Paxos算法,該算法需要大多數監視器(即大於N / 2,其中N是監視器的數量)才能形成法定人數。 雖然這不是必需的,但奇數個監視器往往更好。

添加兩個Ceph mon到集羣:

[root@node1 my-cluster]# ceph-deploy mon add {ceph-node} 

例如:

[root@node1 my-cluster]# ceph-deploy mon add node2  
[root@node1 my-cluster]# ceph-deploy mon add node3

一旦添加了新的Ceph Monitor,Ceph將開始同步Monitor並形成一個法定人數。 可以通過執行以下操作來檢查仲裁狀態:

#ceph quorum_status --format json-pretty 

Tip:當 Ceph 集羣運行多個Monitor時,各個Monitor主機都應該配置NTP,而且要確保這些 Monitor位於NTP服務的同一級。

添加Manager

Ceph Manager守護進程以active/standby模式運行。 部署額外的mgr守護進程可確保在一個守護進程或主機發生故障時,另一個守護進程或主機可以在不中斷服務的情況下接管。

要部署額外的mgr守護進程:

[root@node1 my-cluster]# ceph-deploy mgr create node2 node3 

應該在以下輸出中看到備用Manager:

#ssh node1 sudo ceph -s
cluster:
    id:   6ba14dc2-0261-4925-9a50-f90c94d544d2
    health: HEALTH_OK
 
  services:
    mon: 3 daemons, quorum node1,node2,node3
    mgr: node1(active), standbys: node2, node3
    osd: 8 osds: 8 up, 8 in
 
  data:
    pools:   0 pools, 0 pgs
    objects: 0  objects, 0 B
    usage:   8.0 GiB used, 15 TiB / 15 TiB avail
    pgs:     

添加RGW實例

要使用Ceph的[Ceph對象網關組件,必須部署RGW實例。 執行以下命令以創建RGW的新實例:

[root@node1 my-cluster]# ceph-deploy rgw create {gateway-node} 

例如:

[root@node1 my-cluster]# ceph-deploy rgw create node4

默認情況下,RGW實例將偵聽端口7480.可以通過在運行RGW的節點上編輯ceph.conf來更改此設置,如下所示:

[.rgw.client-node] 
rgw frontends = civetweb port=80

要使新端口設置生效,請重啓Ceph對象網關。 在CentOS7上,運行以下命令:

# sudo systemctl restart [email protected]

Tip:所有和ceph有關的服務,重啓的最小間隔爲30分鐘;如果兩次重啓同一服務的間隔小於30分鐘,則第二次重啓會失敗。

爲固定和優化某些配置,暫時將本地目錄的配置文件ceph.conf,修改爲:

[root@node1 my-cluster]# vim ceph.conf
[global]
fsid = 6ba14dc2-0261-4925-9a50-f90c94d544d2
mon_initial_members = node1
mon_host =  node1,node2,node3
mon_addr = 11.11.11.20,11.11.11.21,11.11.11.22
auth_cluster_required = cephx
auth_service_required = cephx
auth_client_required = cephx
public network = 11.11.11.0/24
cluster network = 11.11.12.0/24
osd crush update on start = false

[mon]
mon_allow_pool_delete = true

[mon.node1]
host = node1
mon_addr = 11.11.11.20
[mon.node2]
host = node2
mon_addr = 11.11.11.21
[mon.node3]
host = node3
mon_addr = 11.11.11.22

[osd]
osd heartbeat grace = 20
osd heartbeat interval = 5

[client.rgw.node4] 
rgw_frontends = "civetweb port=80"

然後使用ceph-deploy將配置文件複製到個Ceph節點。

[root@node1 my-cluster]# ceph-deploy --overwrite-conf admin node1 node2 node3

以後可以根據實際情況隨時優化配置文件。

下節將Ceph 塊設備(即RBD)的使用。

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