閱讀371 返回首頁    go 阿裏雲 go 技術社區[雲棲]


如何在 Ubuntu 16.04 中安裝 Ceph 存儲集群

Ceph 是一個高性能、可靠、可擴展的開源存儲平台。它是一個自由的分布式存儲係統,提供了對象、塊和文件級存儲的接口,並可以不受單點故障的影響而運行。

在這個教程中,我將指導你在 Ubuntu 16.04 服務器上安裝建立一個 Ceph 集群。Ceph 集群包括這些組件:

  • Ceph OSD (ceph-osd) - 控製數據存儲,數據複製和恢複。Ceph 集群需要至少兩個 Ceph OSD 服務器。這次安裝中我們將使用三個 Ubuntu 16.04 服務器。
  • Ceph Monitor (ceph-mon) - 監控集群狀態並運行 OSD 映射 和 CRUSH 映射。這裏我們使用一個服務器。
  • Ceph Meta Data Server (ceph-mds) - 如果你想把 Ceph 作為文件係統使用,就需要這個。

前提條件

  • 6 個安裝了 Ubuntu 16.04 的服務器節點
  • 所有節點上的 root 權限

我將使用下麵這些 hostname /IP 安裝:


  1. 主機名 IP 地址
  2. ceph-admin 10.0.15.10
  3. mon1 10.0.15.11
  4. osd1 10.0.15.21
  5. osd2 10.0.15.22
  6. osd3 10.0.15.23
  7. client 10.0.15.15

第 1 步 - 配置所有節點

這次安裝,我將配置所有的 6 個節點來準備安裝 Ceph 集群軟件。所以你必須在所有節點運行下麵的命令。然後確保所有節點都安裝了 ssh-server。

創建 Ceph 用戶

在所有節點創建一個名為 cephuser 的新用戶


  1. useradd -m -s /bin/bash cephuser
  2. passwd cephuser

創建完新用戶後,我們需要給 cephuser 配置無密碼的 sudo 權限。這意味著 cephuser 可以不先輸入密碼而獲取到 sudo 權限運行。

運行下麵的命令來完成配置。


  1. echo "cephuser ALL = (root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/cephuser
  2. chmod 0440 /etc/sudoers.d/cephuser
  3. sed -i s'/Defaults requiretty/#Defaults requiretty'/g /etc/sudoers

安裝和配置 NTP

安裝 NTP 來同步所有節點的日期和時間。先運行 ntpdate 命令通過 NTP 設置日期。我們將使用 US 池的 NTP 服務器。然後開啟並使 NTP 服務在開機時啟動。


  1. sudo apt-get install -y ntp ntpdate ntp-doc
  2. ntpdate 0.us.pool.ntp.org
  3. hwclock --systohc
  4. systemctl enable ntp
  5. systemctl start ntp

安裝 Open-vm-tools

如果你正在 VMware 裏運行所有節點,你需要安裝這個虛擬化工具。


  1. sudo apt-get install -y open-vm-tools

安裝 Python 和 parted

在這個教程,我們需要 python 包來建立 ceph 集群。安裝 python 和 python-pip。


  1. sudo apt-get install -y python python-pip parted

配置 Hosts 文件

用 vim 編輯器編輯所有節點的 hosts 文件。


  1. vim /etc/hosts

粘帖如下配置:


  1. 10.0.15.10 ceph-admin
  2. 10.0.15.11 mon1
  3. 10.0.15.21 ceph-osd1
  4. 10.0.15.22 ceph-osd2
  5. 10.0.15.23 ceph-osd3
  6. 10.0.15.15 ceph-client

保存 hosts 文件,然後退出 vim 編輯器。

現在你可以試著在兩個服務器間 ping 主機名來測試網絡連通性。


  1. ping -c 5 mon1

Ceph cluster Installation on Ubuntu 16.04

Ceph cluster Installation on Ubuntu 16.04

第 2 步 - 配置 SSH 服務器

這一步,我們將配置 ceph-admin 節點。管理節點是用來配置監控節點和 osd 節點的。登錄到 ceph-admin 節點然後使用 cephuser 用戶。


  1. ssh root@ceph-admin
  2. su - cephuser

管理節點用來安裝配置所有集群節點,所以 ceph-admin 上的用戶必須有不使用密碼連接到所有節點的權限。我們需要為 'ceph-admin' 節點的 cephuser 用戶配置無密碼 SSH 登錄權限。

生成 cephuser 的 ssh 密鑰。


  1. ssh-keygen

讓密碼為空。

下麵,為 ssh 創建一個配置文件


  1. vim ~/.ssh/config

粘帖如下配置:


  1. Host ceph-admin
  2. Hostname ceph-admin
  3. User cephuser
  4. Host mon1
  5. Hostname mon1
  6. User cephuser
  7. Host ceph-osd1
  8. Hostname ceph-osd1
  9. User cephuser
  10. Host ceph-osd2
  11. Hostname ceph-osd2
  12. User cephuser
  13. Host ceph-osd3
  14. Hostname ceph-osd3
  15. User cephuser
  16. Host ceph-client
  17. Hostname ceph-client
  18. User cephuser

保存文件並退出 vim。

Ceph-admin configuration

Ceph-admin configuration

改變配置文件權限為 644。


  1. chmod 644 ~/.ssh/config

現在使用 ssh-copy-id 命令增加密鑰到所有節點。


  1. ssh-keyscan ceph-osd1 ceph-osd2 ceph-osd3 ceph-client mon1 >> ~/.ssh/known_hosts
  2. ssh-copy-id ceph-osd1
  3. ssh-copy-id ceph-osd2
  4. ssh-copy-id ceph-osd3
  5. ssh-copy-id mon1

當請求輸入密碼時輸入你的 cephuser 密碼。

Ceph-admin deploy ssh key to all cluster nodes

Ceph-admin deploy ssh key to all cluster nodes

現在嚐試從 ceph-admin 節點登錄 osd1 服務器,測試無密登錄是否正常。


  1. ssh ceph-osd1

SSH Less password from ceph-admin to all nodes cluster

SSH Less password from ceph-admin to all nodes cluster

第 3 步 - 配置 Ubuntu 防火牆

出於安全原因,我們需要在服務器打開防火牆。我們更願使用 Ufw(不複雜防火牆)來保護係統,這是 Ubuntu 默認的防火牆。在這一步,我們在所有節點開啟 ufw,然後打開 ceph-admin、ceph-mon 和 ceph-osd 需要使用的端口。

登錄到 ceph-admin 節點,然後安裝 ufw 包。


  1. ssh root@ceph-admin
  2. sudo apt-get install -y ufw

打開 80,2003 和 4505-4506 端口,然後重啟防火牆。


  1. sudo ufw allow 22/tcp
  2. sudo ufw allow 80/tcp
  3. sudo ufw allow 2003/tcp
  4. sudo ufw allow 4505:4506/tcp

開啟 ufw 並設置開機啟動。


  1. sudo ufw enable

UFW Firewall with Ceph service

UFW Firewall with Ceph service

從 ceph-admin 節點,登錄到監控節點 mon1 然後安裝 ufw。


  1. ssh mon1
  2. sudo apt-get install -y ufw

打開 ceph 監控節點的端口然後開啟 ufw。


  1. sudo ufw allow 22/tcp
  2. sudo ufw allow 6789/tcp
  3. sudo ufw enable

最後,在每個 osd 節點 ceph-osd1、ceph-osd2 和 ceph-osd3 上打開這些端口 6800-7300。

從 ceph-admin 登錄到每個 ceph-osd 節點安裝 ufw。


  1. ssh ceph-osd1
  2. sudo apt-get install -y ufw

在 osd 節點打開端口並重啟防火牆。


  1. sudo ufw allow 22/tcp
  2. sudo ufw allow 6800:7300/tcp
  3. sudo ufw enable

ufw 防火牆配置完成。

第 4 步 - 配置 Ceph OSD 節點

這個教程裏,我們有 3 個 OSD 節點,每個節點有兩塊硬盤分區。

  1. /dev/sda 用於根分區
  2. /dev/sdb 空閑分區 - 20GB

我們要使用 /dev/sdb 作為 ceph 磁盤。從 ceph-admin 節點,登錄到所有 OSD 節點,然後格式化 /dev/sdb 分區為 XFS 文件係統。


  1. ssh ceph-osd1
  2. ssh ceph-osd2
  3. ssh ceph-osd3

使用 fdisk 命令檢查分區表。


  1. sudo fdisk -l /dev/sdb

格式化 /dev/sdb 分區為 XFS 文件係統,使用 parted 命令創建一個 GPT 分區表。


  1. sudo parted -s /dev/sdb mklabel gpt mkpart primary xfs 0% 100%

下麵,使用 mkfs 命令格式化分區為 XFS 格式。


  1. sudo mkfs.xfs -f /dev/sdb

現在檢查分區,然後你會看見一個 XFS 文件係統的 /dev/sdb 分區。


  1. sudo fdisk -s /dev/sdb
  2. sudo blkid -o value -s TYPE /dev/sdb

Format partition ceph OSD nodes

Format partition ceph OSD nodes

第 5 步 - 創建 Ceph 集群

在這步,我們將從 ceph-admin 安裝 Ceph 到所有節點。馬上開始,先登錄到 ceph-admin 節點。


  1. ssh root@ceph-admin
  2. su - cephuser

在 ceph-admin 節點上安裝 ceph-deploy

首先我們已經在係統上安裝了 python 和 python-pip。現在我們需要從 pypi python 倉庫安裝 Ceph 部署工具 'ceph-deploy'。

用 pip 命令在 ceph-admin 節點安裝 ceph-deploy 。


  1. sudo pip install ceph-deploy

注意: 確保所有節點都已經更新。

ceph-deploy 工具已經安裝完畢後,為 Ceph 集群配置創建一個新目錄。

創建一個新集群

創建一個新集群目錄。


  1. mkdir cluster
  2. cd cluster/

下一步,用 ceph-deploy 命令通過定義監控節點 mon1 創建一個新集群。


  1. ceph-deploy new mon1

命令將在集群目錄生成 Ceph 集群配置文件 ceph.conf

Generate new ceph cluster configuration

Generate new ceph cluster configuration

用 vim 編輯 ceph.conf


  1. vim ceph.conf

在 [global] 塊下,粘貼下麵的配置。


  1. # Your network address
  2. public network = 10.0.15.0/24
  3. osd pool default size = 2

保存文件並退出編輯器。

安裝 Ceph 到所有節點

現在用一個命令從 ceph-admin 節點安裝 Ceph 到所有節點。


  1. ceph-deploy install ceph-admin ceph-osd1 ceph-osd2 ceph-osd3 mon1

命令將自動安裝 Ceph 到所有節點:mon1、osd1-3 和 ceph-admin - 安裝將花一些時間。

現在到 mon1 節點部署監控節點。


  1. ceph-deploy mon create-initial

命令將創建一個監控密鑰,用 ceph 命令檢查密鑰。


  1. ceph-deploy gatherkeys mon1

Deploy key ceph

Deploy key ceph

增加 OSD 到集群

在所有節點上安裝了 Ceph 之後,現在我們可以增加 OSD 守護進程到該集群。OSD 守護進程將在磁盤 /dev/sdb 分區上創建數據和日誌 。

檢查所有 osd 節點的 /dev/sdb 磁盤可用性。


  1. ceph-deploy disk list ceph-osd1 ceph-osd2 ceph-osd3

disk list of osd nodes

disk list of osd nodes

你將看見我們之前創建 XFS 格式的 /dev/sdb。

下麵,在所有 OSD 節點上用 zap 選項刪除該分區表。


  1. ceph-deploy disk zap ceph-osd1:/dev/sdb ceph-osd2:/dev/sdb ceph-osd3:/dev/sdb

這個命令將刪除所有 Ceph OSD 節點的 /dev/sdb 上的數據。

現在準備所有 OSD 節點,請確保結果沒有報錯。


  1. ceph-deploy osd prepare ceph-osd1:/dev/sdb ceph-osd2:/dev/sdb ceph-osd3:/dev/sdb

當你看到 ceph-osd1-3 結果已經準備好供 OSD 使用,就表明命令已經成功。

Prepare the ceph-osd nodes

Prepare the ceph-osd nodes

用下麵的命令激活 OSD:


  1. ceph-deploy osd activate ceph-osd1:/dev/sdb ceph-osd2:/dev/sdb ceph-osd3:/dev/sdb

現在你可以再一次檢查 OSDS 節點的 sdb 磁盤。


  1. ceph-deploy disk list ceph-osd1 ceph-osd2 ceph-osd3

Ceph osds activated

Ceph osds activated

結果是 /dev/sdb 現在已經分為兩個區:

  1. /dev/sdb1 - Ceph Data
  2. /dev/sdb2 - Ceph Journal

或者你直接在 OSD 節點山檢查。


  1. ssh ceph-osd1
  2. sudo fdisk -l /dev/sdb

Ceph OSD nodes were created

Ceph OSD nodes were created

接下來,部署管理密鑰到所有關聯節點。


  1. ceph-deploy admin ceph-admin mon1 ceph-osd1 ceph-osd2 ceph-osd3

在所有節點運行下麵的命令,改變密鑰文件權限。


  1. sudo chmod 644 /etc/ceph/ceph.client.admin.keyring

Ceph 集群在 Ubuntu 16.04 已經創建完成。

第 6 步 - 測試 Ceph

在第 4 步,我們已經安裝並創建了一個新 Ceph 集群,然後添加了 OSD 節點到集群。現在我們應該測試集群確保它如期工作。

從 ceph-admin 節點,登錄到 Ceph 監控服務器 mon1。


  1. ssh mon1

運行下麵命令來檢查集群是否健康。


  1. sudo ceph health

現在檢查集群狀態。


  1. sudo ceph -s

你可以看到下麵返回結果:

Ceph Cluster Status

Ceph Cluster Status

確保 Ceph 健康狀態是 OK 的,有一個監控節點 mon1 IP 地址為 '10.0.15.11'。有 3 個 OSD 服務器都是 up 狀態並且正在運行,可用磁盤空間為 45GB - 3x15GB 的 Ceph 數據 OSD 分區。

我們在 Ubuntu 16.04 建立一個新 Ceph 集群成功。

原文發布時間為:2017-02-07

本文來自雲棲社區合作夥伴“Linux中國”

最後更新:2017-05-26 09:32:45

  上一篇:go  如何更改 Linux I/O 調度器來調整性能
  下一篇:go  我們需要什麼樣的智能助理?