1. 程式人生 > >初試 Centos7 上 Ceph 儲存叢集搭建

初試 Centos7 上 Ceph 儲存叢集搭建

目錄

  • Ceph 介紹
  • 環境、軟體準備
  • Ceph 預檢
  • Ceph 儲存叢集搭建

1、Ceph 介紹

Ceph 是一個開源的分散式儲存系統,包括物件儲存、塊裝置、檔案系統。它具有高可靠性、安裝方便、管理簡便、能夠輕鬆管理海量資料。Ceph 儲存叢集具備了企業級儲存的能力,它通過組織大量節點,節點之間靠相互通訊來複制資料、並動態地重分佈資料,從而達到高可用分散式儲存功能。Ceph 經過七年的發展,現在越來越完善,吸引了更多的參與者,相信以後會更加流行。

2、環境、軟體準備

本次演示環境,我是在虛擬機器 Linux Centos7 上操作,通過虛擬機器完成儲存叢集搭建,以下是安裝的軟體及版本:

  1. Centos:release 7.4.1708 (Core)
  2. Ceph:jewel-10.2.10
  3. Openssh-server:version 7.4
  4. NTP

注意: 這篇文章只涉及 Ceph 儲存叢集搭建過程,不在詳細闡述 Ceph 的體系架構,以及各個元件的詳細情況,具體可參考 官方系統結構 中有詳細描述文件。Ceph 官方文件 中建議安裝一個 ceph-deploy 管理節點和一個三節點的 Ceph 儲存叢集來研究 Ceph 的基本特性,結構圖如下:

這裡寫圖片描述

不過,這裡受限於本機記憶體限制,虛擬機器不能開的太多,所以這裡我少一個 mon.node1 節點,將該節點 Monitor 功能遷移到 admin-node 節點上,所以叢集結構圖變成如下:

這裡寫圖片描述

Ceph 分散式儲存叢集有三大元件組成,分為:Ceph Monitor、Ceph OSD、Ceph MDS,後邊使用物件儲存和塊儲存時,MDS 非必須安裝,只有當使用 Cephfs 檔案儲存時,才需要安裝。這裡我們暫時不安裝 MDS。

3、Ceph 預檢

3.1 配置節點Host

為了方便後邊安裝,以及 ssh 方式連線各個節點,我們先修改一下各個節點的 Hostname 以及配置 Hosts 如下:

admin-node (10.222.77.213)

$ cat /etc/hostname 
admin

$ cat /etc/hosts
127.0.0.1   localhost localhost.localdomain
localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 10.222.77.213 admin 10.222.77.242 node0 10.222.77.253 node1 ----------------------------- node0(10.222.77.242) $ cat /etc/hostname node0 $ cat /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 10.222.77.242 node0 10.222.77.213 admin 10.222.77.253 node1 ----------------------------- node1(10.222.77.253) $ cat /etc/hostname node1 $ cat /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 10.222.77.253 node1 10.222.77.213 admin 10.222.77.242 node0

3.2 安裝部署工具 ceph-deploy

Ceph 提供了部署工具 ceph-deploy 來方便安裝 Ceph 叢集,我們只需要在 ceph-deploy 節點上安裝即可,這裡對應的就是 admin-node 節點。把 Ceph 倉庫新增到 ceph-deploy 管理節點,然後安裝 ceph-deploy。因為系統是 Centos7 版本,所以配置如下:

# ceph-deploy (admin-node) 上執行

# yum 配置其他依賴包
$ sudo yum install -y yum-utils && sudo yum-config-manager --add-repo https://dl.fedoraproject.org/pub/epel/7/x86_64/ && sudo yum install --nogpgcheck -y epel-release && sudo rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7 && sudo rm /etc/yum.repos.d/dl.fedoraproject.org*

# 新增 Ceph 源
$ sudo vim /etc/yum.repos.d/ceph.repo
[Ceph-noarch]
name=Ceph noarch packages
baseurl=http://download.ceph.com/rpm-jewel/el7/noarch
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://download.ceph.com/keys/release.asc
priority=1

# 安裝 ceph-deploy
$ sudo yum update && sudo yum install ceph-deploy

3.3 安裝 NTP 和 Openssh

官方建議在所有 Ceph 節點上安裝 NTP 服務(特別是 Ceph Monitor 節點),以免因時鐘漂移導致故障。

# yum 安裝 ntp
sudo yum install ntp ntpdate ntp-doc

# 校對系統時鐘
ntpdate 0.cn.pool.ntp.org

後續操作,ceph-deploy 節點需要使用 ssh 方式登入各個節點完成 ceph 安裝配置工作,所以要確保各個節點上有可用 SSH 服務。

# yum 安裝 openssh
$ sudo yum install openssh-server

# 檢視 ssh 版本
$ ssh -V
OpenSSH_7.4p1, OpenSSL 1.0.2k-fips  26 Jan 2017

3.4 建立 Ceph 部署使用者

ceph-deploy 工具必須以普通使用者登入 Ceph 節點,且此使用者擁有無密碼使用 sudo 的許可權,因為它需要在安裝軟體及配置檔案的過程中,不必輸入密碼。官方建議所有 Ceph 節點上給 ceph-deploy 建立一個特定的使用者,而且不要使用 ceph 這個名字。這裡為了方便,我們使用 cephd 這個賬戶作為特定的使用者,而且每個節點上(admin-node、node0、node1)上都需要建立該賬戶,並且擁有 sudo 許可權。

# 在 Ceph 叢集各節點進行如下操作

# 建立 ceph 特定使用者
$ sudo useradd -d /home/cephd -m cephd
$ sudo passwd cephd

# 新增 sudo 許可權
$ echo "cephd ALL = (root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/cephd
$ sudo chmod 0440 /etc/sudoers.d/cephd

接下來在 ceph-deploy 節點(admin-node)上,切換到 cephd 使用者,生成 SSH 金鑰並把其公鑰分發到各 Ceph 節點上,注意使用 cephd 賬戶生成,且提示輸入密碼時,直接回車,因為它需要免密碼登入到各個節點。

# ceph-deploy (admin-node) 上執行

# 生成 ssh 金鑰
$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/cephd/.ssh/id_rsa): 
Created directory '/home/cephd/.ssh'.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/cephd/.ssh/id_rsa.
Your public key has been saved in /home/cephd/.ssh/id_rsa.pub.
The key fingerprint is:
...

# 將公鑰複製到 node0 節點
$ ssh-copy-id [email protected]
/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/cephd/.ssh/id_rsa.pub"
The authenticity of host 'node0 (10.222.77.242)' can't be established.
ECDSA key fingerprint is MD5:3c:e0:a7:a0:e6:3c:dc:c0:df:28:dc:87:16:2d:0f:c6.
Are you sure you want to continue connecting (yes/no)? yes
/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
[email protected]'s password: 

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh '[email protected]'"
and check to make sure that only the key(s) you wanted were added.

# 將公鑰複製到 node1 節點
$ ssh-copy-id [email protected]
/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/cephd/.ssh/id_rsa.pub"
The authenticity of host 'node1 (10.222.77.253)' can't be established.
ECDSA key fingerprint is MD5:3c:e0:a7:a0:e6:3c:dc:c0:df:28:dc:87:16:2d:0f:c6.
Are you sure you want to continue connecting (yes/no)? yes
/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
[email protected]'s password: 

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh '[email protected]'"
and check to make sure that only the key(s) you wanted were added.

複製完畢,測試一下在 ceph-deploy 管理節點免密碼登入各個節點。

$ ssh node0
Last login: Fri Dec  8 15:50:08 2017 from admin

$ ssh node1
Last login: Fri Dec  8 15:49:27 2017 from admin

測試沒有問題,接下來,修改 ceph-deploy 管理節點上的 ~/.ssh/config 檔案,這樣無需每次執行 ceph-deploy 都要指定 –username cephd 。這樣做同時也簡化了 ssh 和 scp 的用法。

$ cat ~/.ssh/config
Host node0
   Hostname node0
   User cephd
Host node1
   Hostname node1
   User cephd

注意,此時再執行 ssh node0 會提示報錯 Bad owner or permissions on /home/cephd/.ssh/config。原因是 config 檔案許可權問題,修改許可權 sudo chmod 600 config 即可解決。

3.5 其他網路配置

官網文件中指定 Ceph 的各 OSD 程序通過網路互聯並向 Monitors 上報自己的狀態,所以要保證網路為開啟狀態,不過某些發行版(如 CentOS )預設關閉網路介面。所以我們需要保證叢集各個節點系統網路介面是開啟的。

# 在 Ceph 叢集各節點進行如下操作

$ sudo cat /etc/sysconfig/network-scripts/ifcfg-enp0s3 
TYPE="Ethernet"
BOOTPROTO="dhcp"
DEFROUTE="yes"
PEERDNS="yes"
PEERROUTES="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_PEERDNS="yes"
IPV6_PEERROUTES="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="enp0s3"
UUID="3e68d5a3-f9a6-4c83-9969-706f7e3b0bc2"
DEVICE="enp0s3"
ONBOOT="yes"  # 這裡要設定為 yes

注意:這裡因為在我安裝的虛擬機器叢集中網絡卡為 enp0s3,所以需要修改 /etc/sysconfig/network-scripts/ifcfg-enp0s3 檔案,請根據自己系統網絡卡名去修改對應配置檔案。

SELINUX 設定,在 CentOS 系統上, SELinux 預設為 Enforcing 開啟狀態,為了方便安裝,建議把 SELinux 設定為 Permissive 或者 disabled。

# 在 Ceph 叢集各節點進行如下操作

# 臨時生效設定
$ sudo setenforce 0

# 永久生效設定
$ sudo cat /etc/selinux/config
SELINUX=disabled  # 這裡設定為 Permissive | disabled
SELINUXTYPE=targeted 

開放所需埠設定,Ceph Monitors 之間預設使用 6789 埠通訊, OSD 之間預設用 6800:7300 這個範圍內的埠通訊,所以我們需要調整防火牆設定,開放所需埠,允許相應的入站請求。

# 防火牆設定
$ sudo firewall-cmd --zone=public --add-port=6789/tcp --permanent

# 當然我們也可以關閉防火牆
$ sudo systemctl stop firewalld.service  #停止 firewall
$ sudo systemctl disable firewalld.service  #禁止 firewall 開機啟動

4、Ceph 儲存叢集搭建

好了,經過上邊一系列的預檢設定後,我們就可以開始 Ceph 儲存叢集搭建了,叢集結構為 admin-node (ceph-deploy、Monitor)、node0(osd.0)、node1(osd.1)。首先要提一下的是,如果我們在安裝過程中出現了問題,需要重新操作的時候,例如想清理我搭建的這個叢集的話,可以使用以下命令。

# ceph-deploy (admin-node) 上執行

# 清理配置
ceph-deploy purgedata admin node0 node1
ceph-deploy forgetkeys

# 清理 Ceph 安裝包
ceph-deploy purge admin node0 node1

好了,現在開始搭建。首先 Cephd 使用者建立一個目錄 ceph-cluster 並進入到該目錄執行一系列操作。因為我們設計的 monitor 節點在 admin-node 節點上,所以,執行如下命令。

# 建立執行目錄
$ mkdir ~/ceph-cluster && cd ~/ceph-cluster

# 建立叢集
$ ceph-deploy new admin
[ceph_deploy.conf][DEBUG ] found configuration file at: /home/cephd/.cephdeploy.conf
[ceph_deploy.cli][INFO  ] Invoked (1.5.39): /bin/ceph-deploy new admin
[ceph_deploy.cli][INFO  ] ceph-deploy options:
[ceph_deploy.cli][INFO  ]  username                      : None
[ceph_deploy.cli][INFO  ]  func                          : <function new at 0xf24938>
[ceph_deploy.cli][INFO  ]  verbose                       : False
[ceph_deploy.cli][INFO  ]  overwrite_conf                : False
[ceph_deploy.cli][INFO  ]  quiet                         : False
[ceph_deploy.cli][INFO  ]  cd_conf                       : <ceph_deploy.conf.cephdeploy.Conf instance at 0xf1f6c8>
[ceph_deploy.cli][INFO  ]  cluster                       : ceph
[ceph_deploy.cli][INFO  ]  ssh_copykey                   : True
[ceph_deploy.cli][INFO  ]  mon                           : ['admin']
[ceph_deploy.cli][INFO  ]  public_network                : None
[ceph_deploy.cli][INFO  ]  ceph_conf                     : None
[ceph_deploy.cli][INFO  ]  cluster_network               : None
[ceph_deploy.cli][INFO  ]  default_release               : False
[ceph_deploy.cli][INFO  ]  fsid                          : None
[ceph_deploy.new][DEBUG ] Creating new cluster named ceph
[ceph_deploy.new][INFO  ] making sure passwordless SSH succeeds
...
[ceph_deploy.new][DEBUG ] Resolving host admin
[ceph_deploy.new][DEBUG ] Monitor admin at 10.222.77.213
[ceph_deploy.new][DEBUG ] Monitor initial members are ['admin']
[ceph_deploy.new][DEBUG ] Monitor addrs are ['10.222.77.213']
[ceph_deploy.new][DEBUG ] Creating a random mon key...
[ceph_deploy.new][DEBUG ] Writing monitor keyring to ceph.mon.keyring...
[ceph_deploy.new][DEBUG ] Writing initial config to ceph.conf...

此時,我們會發現 ceph-deploy 會在 ceph-cluster 目錄下生成幾個檔案,ceph.conf 為 ceph 配置檔案,ceph-deploy-ceph.log 為 ceph-deploy 日誌檔案,ceph.mon.keyring 為 ceph monitor 的金鑰環。

$ ll ceph-cluster
-rw-rw-r--. 1 cephd cephd  196 127 14:46 ceph.conf
-rw-rw-r--. 1 cephd cephd 3694 127 14:46 ceph-deploy-ceph.log
-rw-------. 1 cephd cephd   73 127 14:46 ceph.mon.keyring

$ cat ceph.conf 
[global]
fsid = 363c3cf4-dba4-4f13-8ec5-ed93416f4e26
mon_initial_members = admin
mon_host = 10.222.77.213
auth_cluster_required = cephx
auth_service_required = cephx
auth_client_required = cephx

接下來,我們需要修改下 ceph.conf 配置檔案,增加副本數為 2,因為我們有兩個 osd 節點。

$ cat ceph.conf 
[global]
fsid = 363c3cf4-dba4-4f13-8ec5-ed93416f4e26
mon_initial_members = admin
mon_host = 10.222.77.213
auth_cluster_required = cephx
auth_service_required = cephx
auth_client_required = cephx
osd pool default size = 2  #增加預設副本數為 2

然後,我們需要通過 ceph-deploy 在各個節點安裝 ceph。

$ ceph-deploy install admin node0 node1
[ceph_deploy.conf][DEBUG ] found configuration file at: /home/cephd/.cephdeploy.conf
[ceph_deploy.cli][INFO  ] Invoked (1.5.39): /bin/ceph-deploy install admin node0 node1
[ceph_deploy.cli][INFO  ] ceph-deploy options:
[ceph_deploy.cli][INFO  ]  verbose                       : False
[ceph_deploy.cli][INFO  ]  testing                       : None
[ceph_deploy.cli][INFO  ]  cd_conf                       : <ceph_deploy.conf.cephdeploy.Conf instance at 0xde1c68>
[ceph_deploy.cli][INFO  ]  cluster                       : ceph
[ceph_deploy.cli][INFO  ]  dev_commit                    : None
[ceph_deploy.cli][INFO  ]  install_mds                   : False
[ceph_deploy.cli][INFO  ]  stable                        : None
[ceph_deploy.cli][INFO  ]  default_release               : False
[ceph_deploy.cli][INFO  ]  username                      : None
[ceph_deploy.cli][INFO  ]  adjust_repos                  : True
[ceph_deploy.cli][INFO  ]  func                          : <function install at 0xd5b140>
[ceph_deploy.cli][INFO  ]  install_mgr                   : False
[ceph_deploy.cli][INFO  ]  install_all                   : False
[ceph_deploy.cli][INFO  ]  repo                          : False
[ceph_deploy.cli][INFO  ]  host                          : ['admin', 'node0', 'node1']
[ceph_deploy.cli][INFO  ]  install_rgw                   : False
[ceph_deploy.cli][INFO  ]  install_tests                 : False
[ceph_deploy.cli][INFO  ]  repo_url                      : None
[ceph_deploy.cli][INFO  ]  ceph_conf                     : None
[ceph_deploy.cli][INFO  ]  install_osd                   : False
[ceph_deploy.cli][INFO  ]  version_kind                  : stable
[ceph_deploy.cli][INFO  ]  install_common                : False
[ceph_deploy.cli][INFO  ]  overwrite_conf                : False
[ceph_deploy.cli][INFO  ]  quiet                         : False
[ceph_deploy.cli][INFO  ]  dev                           : master
[ceph_deploy.cli][INFO  ]  nogpgcheck                    : False
[ceph_deploy.cli][INFO  ]  local_mirror                  : None
[ceph_deploy.cli][INFO  ]  release                       : None
[ceph_deploy.cli][INFO  ]  install_mon                   : False
[ceph_deploy.cli][INFO  ]  gpg_url                       : None
[ceph_deploy.install][DEBUG ] Installing stable version jewel on cluster ceph hosts admin node0 node1
[ceph_deploy.install][DEBUG ] Detecting platform for host admin ...
...

此過程需要等待一段時間,因為 ceph-deploy 會 SSH 登入到各 node 上去,依次執行安裝 ceph 依賴的元件包。

漫長的等待安裝完畢之後,接下來需要初始化 monitor 節點並收集所有金鑰。

$ ceph-deploy mon create-initial
...
ceph_deploy.mon][ERROR ] RuntimeError: config file /etc/ceph/ceph.conf exists with different content; use --overwrite-conf to overwrite
[ceph_deploy][ERROR ] GenericError: Failed to create 1 monitors
...

不過很遺憾,執行過程中報錯了。檢視原因應該是已經存在了 /etc/ceph/ceph.conf 配置檔案了,解決方案就是加上 --overwrite-conf 引數,覆蓋已存在的配置。

$ ceph-deploy --overwrite-conf mon create-initial
[ceph_deploy.conf][DEBUG ] found configuration file at: /home/cephd/.cephdeploy.conf
[ceph_deploy.cli][INFO  ] Invoked (1.5.39): /bin/ceph-deploy --overwrite-conf mon create-initial
[ceph_deploy.cli][INFO  ] ceph-deploy options:
[ceph_deploy.cli][INFO  ]  username                      : None
[ceph_deploy.cli][INFO  ]  verbose                       : False
[ceph_deploy.cli][INFO  ]  overwrite_conf                : True
[ceph_deploy.cli][INFO  ]  subcommand                    : create-initial
[ceph_deploy.cli][INFO  ]  quiet                         : False
[ceph_deploy.cli][INFO  ]  cd_conf                       : <ceph_deploy.conf.cephdeploy.Conf instance at 0x1d9e758>
[ceph_deploy.cli][INFO  ]  cluster                       : ceph
[ceph_deploy.cli][INFO  ]  func                          : <function mon at 0x1d8ea28>
[ceph_deploy.cli][INFO  ]  ceph_conf                     : None
[ceph_deploy.cli][INFO  ]  default_release               : False
[ceph_deploy.cli][INFO  ]  keyrings                      : None
[ceph_deploy.mon][DEBUG ] Deploying mon, cluster ceph hosts admin
[ceph_deploy.mon][DEBUG ] detecting platform for host admin ...
...
[admin][INFO  ] Running command: sudo /usr/bin/ceph --connect-timeout=25 --cluster=ceph --admin-daemon=/var/run/ceph/ceph-mon.admin.asok mon_status
[admin][INFO  ] Running command: sudo /usr/bin/ceph --connect-timeout=25 --cluster=ceph --name mon. --keyring=/var/lib/ceph/mon/ceph-admin/keyring auth get client.admin
[admin][INFO  ] Running command: sudo /usr/bin/ceph --connect-timeout=25 --cluster=ceph --name mon. --keyring=/var/lib/ceph/mon/ceph-admin/keyring auth get client.bootstrap-mds
[admin][INFO  ] Running command: sudo /usr/bin/ceph --connect-timeout=25 --cluster=ceph --name mon. --keyring=/var/lib/ceph/mon/ceph-admin/keyring auth get client.bootstrap-mgr
[admin][INFO  ] Running command: sudo /usr/bin/ceph --connect-timeout=25 --cluster=ceph --name mon. --keyring=/var/lib/ceph/mon/ceph-admin/keyring auth get-or-create client.bootstrap-mgr mon allow profile bootstrap-mgr
[admin][INFO  ] Running command: sudo /usr/bin/ceph --connect-timeout=25 --cluster=ceph --name mon. --keyring=/var/lib/ceph/mon/ceph-admin/keyring auth get client.bootstrap-osd
[admin][INFO  ] Running command: sudo /usr/bin/ceph --connect-timeout=25 --cluster=ceph --name mon. --keyring=/var/lib/ceph/mon/ceph-admin/keyring auth get client.bootstrap-rgw
[ceph_deploy.gatherkeys][INFO  ] Storing ceph.client.admin.keyring
[ceph_deploy.gatherkeys][INFO  ] Storing ceph.bootstrap-mds.keyring
[ceph_deploy.gatherkeys][INFO  ] Storing ceph.bootstrap-mgr.keyring
[ceph_deploy.gatherkeys][INFO  ] keyring 'ceph.mon.keyring' already exists
[ceph_deploy.gatherkeys][INFO  ] Storing ceph.bootstrap-osd.keyring
[ceph_deploy.gatherkeys][INFO  ] Storing ceph.bootstrap-rgw.keyring
[ceph_deploy.gatherkeys][INFO  ] Destroy temp directory /tmp/tmpLv4mug

執行完畢後,會在當前目錄下生成一系列的金鑰環,應該是各元件之間訪問所需要的認證資訊吧。

$ ll ~/ceph-cluster
-rw-------. 1 cephd cephd    113 127 15:13 ceph.bootstrap-mds.keyring
-rw-------. 1 cephd cephd     71 127 15:13 ceph.bootstrap-mgr.keyring
-rw-------. 1 cephd cephd    113 127 15:13 ceph.bootstrap-osd.keyring
-rw-------. 1 cephd cephd    113 127 15:13 ceph.bootstrap-rgw.keyring
-rw-------. 1 cephd cephd    129 127 15:13 ceph.client.admin.keyring
-rw-rw-r--. 1 cephd cephd    222 127 14:47 ceph.conf
-rw-rw-r--. 1 cephd cephd 120207 127 15:13 ceph-deploy-ceph.log
-rw-------. 1 cephd cephd     73 127 14:46 ceph.mon.keyring

到此,ceph monitor 已經成功啟動了。接下來需要建立 OSD 了,OSD 是最終資料儲存的地方,這裡我們準備了兩個 OSD 節點,分別為 osd.0 和 osd.1。官方建議為 OSD 及其日誌使用獨立硬碟或分割槽作為儲存空間,不過本機虛擬機器上不具備條件,但是我們可以在虛擬機器本地磁碟上建立目錄,來作為 OSD 的儲存空間。

# ceph-deploy (admin-node) 上執行

$ ssh node0
$ sudo mkdir /var/local/osd0
$ sudo chown -R ceph:ceph /var/local/osd0
$ exit

$ ssh node1
$ sudo mkdir /var/local/osd1
$ sudo chown -R ceph:ceph /var/local/osd1
$ exit

注意:這裡執行了 chown -R ceph:ceph 操作,將 osd0 和 osd1 目錄的許可權賦予 ceph:ceph,否則,接下來執行 ceph-deploy osd activate ... 時會報許可權錯誤。

接下來,我們需要 ceph-deploy 節點執行 prepare OSD 操作,目的是分別在各個 OSD 節點上建立一些後邊啟用 OSD 需要的資訊。

$ ceph-deploy --overwrite-conf osd prepare node0:/var/local/osd0 node1:/var/local/osd1
[ceph_deploy.conf][DEBUG ] found configuration file at: /home/cephd/.cephdeploy.conf
[ceph_deploy.cli][INFO  ] Invoked (1.5.39): /bin/ceph-deploy --overwrite-conf osd prepare node0:/var/local/osd0 node1:/var/local/osd1
[ceph_deploy.cli][INFO  ] ceph-deploy options:
[ceph_deploy.cli][INFO  ]  username                      : None
[ceph_deploy.cli][INFO  ]  block_db                      : None
[ceph_deploy.cli][INFO  ]  disk                          : [('node0', '/var/local/osd0', None), ('node1', '/var/local/osd1', None)]
[ceph_deploy.cli][INFO  ]  dmcrypt                       : False
[ceph_deploy.cli][INFO  ]  verbose                       : False
[ceph_deploy.cli][INFO  ]  bluestore                     : None
[ceph_deploy.cli][INFO  ]  block_wal                     : None
[ceph_deploy.cli][INFO  ]  overwrite_conf                : True
[ceph_deploy.cli][INFO  ]  subcommand                    : prepare
[ceph_deploy.cli][INFO  ]  dmcrypt_key_dir               : /etc/ceph/dmcrypt-keys
[ceph_deploy.cli][INFO  ]  quiet                         : False
[ceph_deploy.cli][INFO  ]  cd_conf                       : <ceph_deploy.conf.cephdeploy.Conf instance at 0x117d950>
[ceph_deploy.cli][INFO  ]  cluster                       : ceph
[ceph_deploy.cli][INFO  ]  fs_type                       : xfs
[ceph_deploy.cli][INFO  ]  filestore                     : None
[ceph_deploy.cli][INFO  ]  func                          : <function osd at 0x116a320>
[ceph_deploy.cli][INFO  ]  ceph_conf                     : None
[ceph_deploy.cli][INFO  ]  default_release               : False
[ceph_deploy.cli][INFO  ]  zap_disk                      : False
[ceph_deploy.osd][DEBUG ] Preparing cluster ceph disks node0:/var/local/osd0: node1:/var/local/osd1:
[node0][DEBUG ] connection detected need for sudo
[node0][DEBUG ] connected to host: node0 
[node0][DEBUG ] detect platform information from remote host
[node0][DEBUG ] detect machine type
[node0][DEBUG ] find the location of an executable
[ceph_deploy.osd][INFO  ] Distro info: CentOS Linux 7.3.1611 Core
[ceph_deploy.osd][DEBUG ] Deploying osd to node0
...
[node0][INFO  ] checking OSD status...
[node0][DEBUG ] find the location of an executable
[node0][INFO  ] Running command: sudo /bin/ceph --cluster=ceph osd stat --format=json
[ceph_deploy.osd][DEBUG ] Host node0 is now ready for osd use.
[node1][DEBUG ] connection detected need for sudo
[node1][DEBUG ] connected to host: node1 
[node1][DEBUG ] detect platform information from remote host
[node1][DEBUG ] detect machine type
[node1][DEBUG ] find the location of an executable
[ceph_deploy.osd][INFO  ] Distro info: CentOS Linux 7.3.1611 Core
[ceph_deploy.osd][DEBUG ] Deploying osd to node1
...
[node1][INFO  ] checking OSD status...
[node1][DEBUG ] find the location of an executable
[node1][INFO  ] Running command: sudo /bin/ceph --cluster=ceph osd stat --format=json
[ceph_deploy.osd][DEBUG ] Host node1 is now ready for osd use.

OK 接下來,我們需要啟用 activate OSD。

$ ceph-deploy osd activate node0:/var/local/osd0 node1:/var/local/osd1
[ceph_deploy.conf][DEBUG ] found configuration file at: /home/cephd/.cephdeploy.conf
[ceph_deploy.cli][INFO  ] Invoked (1.5.39): /bin/ceph-deploy osd activate node0:/var/local/osd0 node1:/var/local/osd1
[ceph_deploy.cli][INFO  ] ceph-deploy options:
[ceph_deploy.cli][INFO  ]  username                      : None
[ceph_deploy.cli][INFO  ]  verbose                       : False
[ceph_deploy.cli][INFO  ]  overwrite_conf                : False
[ceph_deploy.cli][INFO  ]  subcommand                    : activate
[ceph_deploy.cli][INFO  ]  quiet                         : False
[ceph_deploy.cli][INFO  ]  cd_conf                       : <ceph_deploy.conf.cephdeploy.Conf instance at 0x2045950>
[ceph_deploy.cli][INFO  ]  cluster                       : ceph
[ceph_deploy.cli][INFO  ]  func                          : <function osd at 0x2032320>
[ceph_deploy.cli][INFO  ]  ceph_conf                     : None
[ceph_deploy.cli][INFO  ]  default_release               : False
[ceph_deploy.cli][INFO  ]  disk                          : [('node0', '/var/local/osd0', None), ('node1', '/var/local/osd1', None)]
[ceph_deploy.osd][DEBUG ] Activating cluster ceph disks node0:/var/local/osd0: node1:/var/local/osd1:
[node0][DEBUG ] connection detected need for sudo
[node0][DEBUG ] connected to host: node0 
[node0][DEBUG ] detect platform information from remote host
[node0][DEBUG ] detect machine type
[node0][DEBUG ] find the location of an executable
[ceph_deploy.osd][INFO  ] Distro info: CentOS Linux 7.3.1611 Core
[ceph_deploy.osd][DEBUG ] activating host node0 disk /var/local/osd0
[ceph_deploy.osd][DEBUG ] will use init type: systemd
...
[node0][INFO  ] checking OSD status...
[node0][DEBUG ] find the location of an executable
[node0][INFO  ] Running command: sudo /bin/ceph --cluster=ceph osd stat --format=json
[node0][INFO  ] Running command: sudo systemctl enable ceph.target
[node1][DEBUG ] connection detected need for sudo
[node1][DEBUG ] connected to host: node1 
[node1][DEBUG ] detect platform information from remote host
[node1][DEBUG ] detect machine type
[node1][DEBUG ] find the location of an executable
[ceph_deploy.osd][INFO  ] Distro info: CentOS Linux 7.3.1611 Core
[ceph_deploy.osd][DEBUG ] activating host node1 disk /var/local/osd1
[ceph_deploy.osd][DEBUG ] will use init type: systemd
...
[node1][INFO  ] checking OSD status...
[node1][DEBUG ] find the location of an executable
[node1][INFO  ] Running command: sudo /bin/ceph --cluster=ceph osd stat --format=json
[node1][INFO  ] Running command: sudo systemctl enable ceph.target

看日誌,啟用也沒有問題,最後一步,通過 ceph-deploy admin 將配置檔案和 admin 金鑰同步到各個節點,以便在各個 Node 上使用 ceph 命令時,無需指定 monitor 地址和 ceph.client.admin.keyring 金鑰。

$ ceph-deploy admin admin node0 node1
[ceph_deploy.conf][DEBUG ] found configuration file at: /home/cephd/.cephdeploy.conf
[ceph_deploy.cli][INFO  ] Invoked (1.5.39): /bin/ceph-deploy admin admin node0 node1
[ceph_deploy.cli][INFO  ] ceph-deploy options:
[ceph_deploy.cli][INFO  ]  username                      : None
[ceph_deploy.cli][INFO  ]  verbose                       : False
[ceph_deploy.cli][INFO  ]  overwrite_conf                : False
[ceph_deploy.cli][INFO  ]  quiet                         : False
[ceph_deploy.cli][INFO  ]  cd_conf                       : <ceph_deploy.conf.cephdeploy.Conf instance at 0x15a93b0>
[ceph_deploy.cli][INFO  ]  cluster                       : ceph
[ceph_deploy.cli][INFO  ]  client                        : ['admin', 'node0', 'node1']
[ceph_deploy.cli][INFO  ]  func                          : <function admin at 0x1500cf8>
[ceph_deploy.cli][INFO  ]  ceph_conf                     : None
[ceph_deploy.cli][INFO  ]  default_release               : False
[ceph_deploy.admin][DEBUG ] Pushing admin keys and conf to admin
[admin][DEBUG ] connection detected need for sudo
[admin][DEBUG ] connected to host: admin 
[admin][DEBUG ] detect platform information from remote host
[admin][DEBUG ] detect machine type
[admin][DEBUG ] write cluster configuration to /etc/ceph/{cluster}.conf
[ceph_deploy.admin][DEBUG ] Pushing admin keys and conf to node0
[node0][DEBUG ] connection detected need for sudo
[node0][DEBUG ] connected to host: node0 
[node0][DEBUG ] detect platform information from remote host
[node0][DEBUG ] detect machine type
[node0][DEBUG ] write cluster configuration to /etc/ceph/{cluster}.conf
[
            
           

相關推薦

初試 Centos7 Ceph 儲存叢集搭建

目錄 Ceph 介紹 環境、軟體準備 Ceph 預檢 Ceph 儲存叢集搭建 1、Ceph 介紹 Ceph 是一個開源的分散式儲存系統,包括物件儲存、塊裝置、檔案系統。它具有高可靠性、安裝方便、管理簡便、能夠輕鬆管理海量資料。Ceph 儲存叢

Ceph mimic 版本- 儲存叢集搭建Centos7

一、設定Linux主機基本配置: #為每臺主機配置主機名稱 hostnamectl set-hostname "主機名" [root@node0 ~]#cat << EOF >> /etc/hosts 192.168.10.14 ceph-deploy 19

Ceph學習之一】Centos7部署Ceph儲存叢集以及CephFS的安裝

             Ceph已然成為開源社群極為火爆的分散式儲存開源方案,最近需要調研Openstack與Ceph的融合方案,因此開始瞭解Ceph,當然從搭建Ceph叢集開始。         我搭建機器使用了6臺虛擬機器,包括一個admin節點,一個monitor節

Centos7部署Ceph儲存叢集以及CephFS的安裝

Ceph已然成為開源社群極為火爆的分散式儲存開源方案,最近需要調研Openstack與Ceph的融合方案,因此開始瞭解Ceph,當然從搭建Ceph叢集開始。        我搭建機器使用了6臺虛擬機器,包括一個admin節點,一個monitor節點,一個mds節點,兩個osd

CODIS3 x叢集儲存叢集搭建全過程

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

hbase 在三臺centos7的分散式叢集的配置部署

linux映象是centos7  Hadoop版本2.8.0  zookeeper版本3.5.1  hbase版本1.3.1  jdk 1.8 hadoop 部署 zookeeper的部署 hbase的部署  注意點一:在叢集各個節點

.net core i K8S(一)叢集搭建

1.前言   以前搭建叢集都是使用nginx反向代理,但現在我們有了更好的選擇——K8S。我不打算一上來就講K8S的知識點,因為知識點還是比較多,我打算先從搭建K8S叢集講起,我也是在搭建叢集的過程中熟悉了K8S的一些概念,希望對大家有所幫助。K8S叢集的搭建難度適中,網上有很多搭建k8s的教程,我搭建的過

Linux centos7gitlab伺服器的搭建,本地配置和使用

1 gitlab的搭建 1. 安裝一堆包,和 啟動相關服務 yum install -y curl policycoreutils-python yum install -y openssh-se

centos7.2 基於zookeeper叢集搭建activeMQ的叢集

activemq作為訊息佇列中介軟體,在分散式系統中扮演中系統之間通訊兵的角色,非常重要,使用也非常廣泛,而在分散式系統中,為了消除單點故障,activemq也必將是要做叢集,做主備的切換的,在網上activemq的叢集方案也是很多,其本身也是有主備解決方案的。目前市面上,使

CODIS3.x叢集儲存叢集搭建全過程

作者:鄒祁峰 郵箱:[email protected] 部落格:http://blog.csdn.net/qifengzou 日期:2017.06.07 轉載請註明來自”祁峰”的CSDN部落格 Codis3.x有如下特點: 1.最新

sheepdog+zookeeper儲存叢集搭建:4個節點安裝sheepdog(其中有3個為zookeeper節點)

1、首先在4個儲存節點中的3個節點上安裝3節點zookeeper,詳見 http://blog.csdn.net/u010855924/article/details/52847308 2、第四個儲存節點僅僅需要rpm -ivh zookeeper-3.4.6-redhat

citusdata探索–(1)–在CentOS7安裝單機叢集docker版本

Citus是Postgres的擴充套件,可以智慧地在多個節點上分發您的資料庫和查詢。 Citus智慧地跨節點分發您的資料和查詢,因此您的資料庫可以擴充套件,查詢速度很快。可用作資料庫即服務,企業軟體和開源。在Citus,我們簡化了PostgreSQL資料庫的分片。所以你可以專注於你的

Centos7.5下HDP叢集搭建(一)

硬體環境:6臺伺服器,IP為172.16.172.17/18/19/20/21/22 軟體環境:作業系統為Centos7.5                  Ambari版本為2.5.0.3                  HDP版本為2.6.0.3 一、安裝前準

ceph儲存 叢集恢復流程詳解

1. 基本概念 基於版本10.2.1 pg狀態機轉換:   1.1 epoch     epoch是一個單調遞增序列,其序列由monitor負責維護,當叢集中的配置及osd狀態發生變更時,其數值向上加一。這一機制等同於時間軸,每次序列變化是時間軸上的點。 1.2 intervals     由

客戶端通過Rados模組控制ceph儲存叢集

環境: 客戶端:Ubuntu12.04 叢集:Ubuntu14.04 ceph : 0.94.2 (5fb85614ca8f354284c713a2f9c610860720bbf3) 客戶端安裝python-ceph 1、在客戶端執行 sudo a

ubuntu14.04 ceph分散式叢集搭建(二)

1.在ceph-admin機器上,執行 mkdir my-cluster cd my-cluster 建議:ceph-deploy 工具將輸出到當前目錄下的檔案。當執行ceph-deploy時,確保你在此目錄中。 重要:如果你是用不同的使用者登入的

CentOS7 搭建多節點 Elasticsearch叢集

本文內容腦圖如下: 文章共 747字,閱讀大約需要 2分鐘 ! 概 述 最近學 Elasticsearch,既然學之,怎麼能沒有實際的叢集來把玩呢,因此自己必須動手搭一個! 注: 本文首發於 My Personal Blog:CodeSheep·程式羊,歡迎光臨 小站

大資料之(1)Centos7搭建全分散式Hadoop叢集

本文介紹搭建一個Namenode兩個DataNode的Hadoop全分散式叢集的全部步驟及方法。具體環境如下: 一、環境準備 3個Centos7虛擬機器或者3個在一個區域網內的實際Centos7機器,機器上已安裝JDK1.8,至於不會安裝Centos7或者JDK1.8的同

hadoop2.7.1在vmware3臺centos7虛擬機器的完全分散式叢集搭建

叢集架構 centos7的安裝 安裝java hadoop全分佈 ssh無密碼登入 hadoop叢集正常啟動測試 以下內容均屬個人理解,如有偏差,望大家諒解。 叢集架構 3臺虛擬機器都在同一個區域網中,網段是192.168.10.0,子網掩碼是

centos7搭建hadoop叢集

準備工作 主機名稱 系統環境 ip地址 hadoop-master centos7 192.168.150.181 hadoop-slave1 centos7 192.168.150.182 hado