久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

Ceph如何實現集群搭建

204次閱讀
沒有評論

共計 6233 個字符,預計需要花費 16 分鐘才能閱讀完成。

丸趣 TV 小編給大家分享一下 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 如何實現集群搭建”有了一定的了解,如果想了解更多相關知識,歡迎關注丸趣 TV 行業資訊頻道,感謝各位的閱讀!

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-08-25發表,共計6233字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 昆明市| 镇雄县| 兴化市| 闸北区| 曲松县| 精河县| 望谟县| 武穴市| 虹口区| 秦安县| 丰城市| 库尔勒市| 溧阳市| 万全县| 仁寿县| 杭锦后旗| 左贡县| 灵丘县| 阳西县| 鄯善县| 嘉善县| 荣成市| 浪卡子县| 吉林省| 红原县| 恭城| 罗定市| 湛江市| 重庆市| 东海县| 深圳市| 江北区| 孝昌县| 开原市| 邳州市| 阳原县| 桃江县| 宣城市| 固安县| 榕江县| 南汇区|