中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Ceph如何實現集群搭建

發布時間:2021-11-18 17:09:36 來源:億速云 閱讀:191 作者:小新 欄目:云計算

小編給大家分享一下Ceph如何實現集群搭建,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!

背景

Ceph簡介

Ceph是一個分布式存儲,可以提供對象存儲、塊存儲和文件存儲,其中對象存儲和塊存儲可以很好地和各大云平臺集成。一個Ceph集群中有Monitor節點、MDS節點(可選,用于文件存儲)、至少兩個OSD守護進程。
Ceph OSD:OSD守護進程,用于存儲數據、處理數據拷貝、恢復、回滾、均衡,并通過心跳程序向Monitor提供部分監控信息。一個Ceph集群中至少需要兩個OSD守護進程。
Monitor:維護集群的狀態映射信息,包括monitor、OSD、Placement Group(PG)。還維護了Monitor、OSD和PG的狀態改變歷史信息。
MDS:存儲Ceph文件系統的元數據。

環境規劃

4臺服務器:1臺作為Monitor,1臺作為OSD RGW,還有兩臺作為OSD。ps:我們不搭建CephFS。
所有服務器都安裝Ubuntu 16.04。

環境準備:

編輯hosts文件及hostname

分別將Monitor節點定義為node1,兩臺OSD節點定義為node2、node3,RGW節點定義為node4。
打開Monitor節點的/etc/hostname文件,內容修改為node1,保存退出。但該文件需OS重啟后才能生效,因此需再手動執行命令讓其立刻生效,命令為:

# hostname node1

再分別打開各節點的/etc/hosts文件,加入這四個節點ip與名稱的對應關系,類似如下:

127.0.0.1   localhost
127.0.1.1   node1
192.168.1.100   node1
192.168.1.101   node2
192.168.1.102   node3
192.168.1.103   node4

# The following lines are desirable for IPv6 capable hosts
::1     localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

搭建NTP環境

使用Monitor服務器作為NTP server,另外3臺作為NTP client。

NTP server

需安裝NTP服務,執行命令:apt-get install ntp。 完成后,修改配置文件/etc/ntp.conf。因為環境不通外網,無法訪問Ubuntu時間源。并且,這個環境也沒有其他的NTP時間源,因此,在這里,我們使用Monitor服務器作為NTP server的本地時間源。在文件末尾添加如下內容:

server  127.127.1.0		# 如果有其他的NTP源,可以更換這里的ip地址。  
fudge   127.127.1.0 stratum 10
并注銷掉以Ubuntu時間源的部分。
#pool 0.ubuntu.pool.ntp.org iburst
#pool 1.ubuntu.pool.ntp.org iburst
#pool 2.ubuntu.pool.ntp.org iburst
#pool 3.ubuntu.pool.ntp.org iburst
#pool ntp.ubuntu.com

修改完成后,保存退出。并重啟ntp服務,執行命令:service ntp restart。
注意:NTP服務剛重啟時,需要一定的時間來同步時間源,不能立刻提供服務,需一定時間后才能正常工作(一般5分鐘左右)。可在NTP server端執行明令ntpq -p來查看服務狀態。

NTP client

需安裝ntpdate,執行命令:apt install ntpdate。
安裝后,執行命令ntpdate [-d] {serverIp}來同步時間。-d表示打開調試信息,可不打開。例如:

# ntpdate 109.105.115.67

成功時會出現類似提示:ntpdate[39600]: step time server 109.105.115.67 offset -46797.696033 sec。如果出現:ntpdate[28489]: no server suitable for synchronization found。可能是因為server還未能正常提供服務,等待一段時間后再次嘗試。
同步成功后,還需要將時間寫入硬件時鐘,防止OS重啟后時間恢復至原樣。執行命令hwclock –w。

安裝SSH SERVER

在所有的節點上都安裝SSH server服務。

# apt-get install openssh-server

因為我們搭建的Ceph直接使用root用戶,所以需要修改ssh配置文件/etc/ssh/sshd_config,搜索PermitRootLogin選項,將其參數改為yes。保存退出文件,并重啟SSH服務,執行命令:service ssh restart。

使用SSH免密碼登錄

生成SSH keys,不要設置passphrase,所有的輸入選項都直接回車。

# ssh-keygen 

Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.

拷貝這個key到所有的節點。

# ssh-copy-id node1
# ssh-copy-id node2
# ssh-copy-id node3
# ssh-copy-id node4

設置網絡代理(可選)

如果整個內網環境需要設置網絡代理才能使用apt-get安裝程序,那么需要在配置文件/etc/environment中添加,如:

http_proxy="http://[proxy-ip]:[proxy-port]"
https_proxy=https://[proxy-ip]:[proxy-port]

設置完成后,執行命令:export http_proxy="http://[proxy-ip]:[proxy-port]"; export https_proxy=https://[proxy-ip]:[proxy-port],使得配置立即生效。
注意:一定要在/etc/environment中配置,而不能在諸如/etc/profile、~/.profile等類似文件配置。因為,安裝ceph時,會使用ssh來連接遠程節點并apt-get安裝程序,但ssh只能識別/etc/environment中的環境變量,設置在其他文件中會導致網絡訪問失敗。
注意二:所有節點都需要設置。

部署Ceph存儲

這里,我們直接在Monitor節點node1上安裝ceph-deploy,然后通過ceph-deploy在node1上部署Monitor,在node2和node3節點上部署OSD,最后,在node4上部署Ceph網關rgw。
在node1上創建一個目錄,用來維護ceph-deploy生成的配置信息。ceph-deploy命令會在當前目錄生成輸出文件,確保執行該命令時位于對應的目錄。

mkdir my-cluster
cd my-cluster

安裝ceph-deploy

更新鏡像倉庫,并安裝ceph-deploy。

apt-get update && sudo apt-get install ceph-deploy

重新開始部署Ceph

在安裝過程中如果遇到了問題,想重新開始安裝,執行以下命令來清空配置。

ceph-deploy purgedata {ceph-node} [{ceph-node}]
ceph-deploy forgetkeys

如果還想清空Ceph包,需執行:

ceph-deploy purge {ceph-node} [{ceph-node}]

注意:在實際的操作中,如果直接執行ceph-deploy purgedata,總是會報錯,提示Ceph還安裝在該節點上,拒絕執行清空操作。因此我都是先執行ceph-deploy purge,再執行ceph-deploy purgedata和ceph-deploy forgetkeys。

部署Ceph

創建集群

ceph-deploy new {initial-monitor-node(s)}

如:

ceph-deploy new node1

在當前目錄下使用ls和cat命令檢查ceph-deploy輸出結果,可以看到一個ceph配置文件,一個密鑰環以及為新集群創建的日志文件。

修改osd參數

因為我們環境中只有兩個OSD,而Ceph模式的副本個數為3,因此我們需要修改配置文件Ceph.conf,在[global]部分增加如下配置:

osd pool default size = 2

如果OSD存儲數據分區的文件系統類型不是xfs,則需要設置一些osd變量,否則OSD不能正常啟動,報錯為“ERROR: osd init failed: (36) File name too long”。同樣,在Ceph.conf文件,[global]部分增加如下配置:

osd max object name len = 256
osd max object namespace len = 64

配置Ceph網絡參數

如果環境中有多種網絡,那么需要在Ceph.conf的[global]部分下增加如下配置。

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

如果環境中只有一種網絡,則不需要此配置。關于網絡配置更多信息,可參考:http://docs.ceph.com/docs/master/rados/configuration/network-config-ref/

安裝Ceph

ceph-deploy install {ceph-node}[{ceph-node} ...]

例如:

ceph-deploy install node1 node2 node3 node4

執行命令后,會在每個節點上都安裝Ceph。注意:如果執行過ceph-deploy purge命令,則需要重新安裝Ceph。

安裝Monitor

安裝并初始化Monitor,收集keys:

# ceph-deploy mon create-initial

執行完命令后,當前目錄會生成如下keyring:
? {cluster-name}.client.admin.keyring ? {cluster-name}.bootstrap-osd.keyring ? {cluster-name}.bootstrap-mds.keyring ? {cluster-name}.bootstrap-rgw.keyring

創建OSD數據目錄

OSD的數據目錄可以使用單獨的分區,也可以只使用已有分區的目錄。這里我們是直接使用目錄的方式。如果需要使用單獨數據分區和日志分區,可參考: http://docs.ceph.com/docs/master/rados/deployment/ceph-deploy-osd/。
添加兩個OSD。

# ssh node2
# sudo mkdir /var/local/osd0
# chown ceph:ceph /var/local/osd0
# exit

# ssh node3
# sudo mkdir /var/local/osd1
# chown ceph:ceph /var/local/osd1
# exit

準備OSD

ceph-deploy osd prepare {ceph-node}:/path/to/directory

如:

# ceph-deploy osd prepare node2:/var/local/osd0 node3:/var/local/osd1

激活OSD

ceph-deploy osd prepare {ceph-node}:/path/to/directory

如:

# ceph-deploy osd prepare node2:/var/local/osd0 node3:/var/local/osd1

拷貝配置文件和管理key

ceph-deploy admin {admin-node} {ceph-node}

如:

# ceph-deploy admin node1 node2 node3

確保ceph.client.admin.keyring的權限正確,在每個節點上執行:

chmod +r /etc/ceph/ceph.client.admin.keyring

檢查集群狀態

# ceph –s

集群應該返回health HEALTH_OK,并且所有pg都是active+clean的狀態,這樣部署就完全沒問題了。

部署rgw網關

如果要使用Ceph的對象存儲,就需要部署rgw網關。執行以下步驟創建一個新的rgw實例:

ceph-deploy rgw create {gateway-node}

如:

# ceph-deploy rgw create node4

驗證Ceph

當顯示狀態健康時,可寫入數據并查看數據。
創建一個普通文本文件testfile.txt,并向其寫入數據。
創建一個pool。格式為:rados mkpool {pool-name},執行:

# rados mkpool data

將文件寫入pool。格式為:rados put {object-name} {file-path} --pool={pool-name},執行:

# rados put test-object-1 testfile.txt --pool=data

如果文件不大,應該很快就寫完并成功了。如果卡主較長時間,則可能是出錯了,需要排查問題。
查看文件是否存在于pool中,格式為:rados -p {pool-name} ls,執行:

# rados -p data ls

確定文件的位置。格式為:ceph osd map {pool-name} {object-name},執行:

# ceph osd map data test-object-1

從pool中讀取文件。格式為:rados get {object-name} --pool={pool-name} {file-path} ,執行:

# rados get test-object-1 --pool=data myfile

可比對讀出的文件myfile和原文件testfile.txt是否相同,執行命令:diff myfile testfile.txt。
從pool中刪除文件。格式為:rados rm {object-name} --pool={pool-name},執行:

# rados rm test-object-1 --pool=data

看完了這篇文章,相信你對“Ceph如何實現集群搭建”有了一定的了解,如果想了解更多相關知識,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

湟中县| 绥滨县| 长沙县| 克山县| 全南县| 邯郸县| 雷山县| 大田县| 阿拉善盟| 德令哈市| 弋阳县| 东光县| 宜城市| 科尔| 章丘市| 泾阳县| 射阳县| 泸州市| 枣强县| 金坛市| 增城市| 甘泉县| 阿克苏市| 永康市| 保定市| 垣曲县| 旌德县| 扬中市| 宁武县| 五峰| 得荣县| 昭平县| 上犹县| 大化| 湖北省| 偏关县| 德江县| 乌兰浩特市| 马关县| 泊头市| 长泰县|