1. 程式人生 > 實用技巧 >Ceph 叢集快速安裝

Ceph 叢集快速安裝

系統基礎環境設定

安裝要求

四臺 CentOS7 系統,應用配置: 2C4G, 另外ceph-node0X 機器最少掛載 3 塊硬碟 ,其中 ceph-admin 為管理節點

192.168.124.160 ceph-admin
192.168.124.161 ceph-node01
192.168.124.162 ceph-node02
192.168.124.163 ceph-node03

各主機需要預設的系統環境

  • 關閉防火牆:for i in stop disable;do systemctl $i firewalld; done
  • 關閉selinux:sed -i 's/enforcing/disabled/' /etc/selinux/config && setenforce 0
  • 關閉NetworkManager:systemctl disable NetworkManager && systemctl stop NetworkManager
  • 新增主機名與IP對應關係:vim /etc/hosts
192.168.124.160 ceph-admin
192.168.124.161 ceph-node01
192.168.124.162 ceph-node02
192.168.124.163 ceph-node03
  • 同步網路時間和修改時區:systemctl restart chronyd.service && systemctl enable chronyd.service
  • 設定檔案描述符
echo "ulimit -SHn 102400" >> /etc/rc.local
cat >> /etc/security/limits.conf << EOF
* soft nofile 65535
* hard nofile 65535
EOF
  • 核心引數優化
cat >> /etc/sysctl.conf << EOF
kernel.pid_max = 4194303
EOF
echo "vm.swappiness = 0" >> /etc/sysctl.conf
sysctl -p

準備部署 Ceph 叢集

Ceph官方的倉庫路徑為http://download.ceph.com/,目前主流版本相關的程式包都在提供,包括kraken、luminous和mimic等,它們分別位於rpm-mimic等一類的目錄中。直接安裝程式包即可生成相關的yum倉庫相關的配置檔案,程式包位於相關版本的noarch目錄下,例如rpm-mimic/el7/noarch/ceph-release-1-1.el7.noarch.rpm 是為負責生成適用於部署mimic版本Ceph的yum倉庫配置檔案,因此直接線上安裝此程式包,也能直接生成yum倉庫的相關配置

1. 準備yum倉庫配置檔案

在ceph-admin節點上,使用如下命令即可安裝生成mimic版本相關的yum倉庫配置

~]# rpm -ivh https://mirrors.aliyun.com/ceph/rpm-mimic/el7/noarch/ceph-release-1-1.el7.noarch.rpm

2. 建立部署Ceph的特定使用者賬號

部署工具ceph-deploy 必須以普通使用者登入到Ceph叢集的各目標節點,且此使用者需要擁有無密碼使用sudo命令的許可權,以便在安裝軟體及生成配置檔案的過程中無需中斷配置過程。不過,較新版的ceph-deploy也支援用 ”--username“ 選項提供可無密碼使用sudo命令的使用者名稱(包括 root ,但不建議這樣做)。另外,使用”ceph-deploy --username {username} “命令時,指定的使用者需要能夠通過SSH協議自動認證並連線到各Ceph節點,以免ceph-deploy命令在配置中途需要使用者輸入密碼。

  • 在ceph各節點建立新使用者-cephadm
~]# useradd cephadm 
~]# echo "cephadm" | passwd --stdin cephadm
  • 確保這些節點上新建立的使用者cephadm都有無密碼執行sudo命令的許可權
~]# echo "cephadm ALL = (root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/cephadm 
~]# chmod 0440 /etc/sudoers.d/cephadm
  • 配置主機互信

ceph-deploy命令不支援執行中途的密碼輸入,因此,必須在管理節點(ceph-admin)上生成SSH金鑰並將其公鑰分發至Ceph叢集的各節點上。下面直接以cephadm使用者的身份生成SSH金鑰對:

~]# su - cephadm
~]$ ssh-keygen  -t rsa
~]$ ssh-copy-id ceph-node01
~]$ ssh-copy-id ceph-node02
~]$ ssh-copy-id ceph-node03
  • 在管理節點安裝ceph-deploy

Ceph儲存叢集的部署的過程可通過管理節點使用ceph-deploy全程進行,這裡首先在管理節點安裝ceph-deploy及其依賴到的程式包:

~]$ sudo yum update
~]$ sudo yum install ceph-deploy python-setuptools python2-subprocess32
~]$ ceph-deploy --version
2.0.1

部署 Ceph 儲存叢集

1. 首先在管理節點上以cephadm使用者建立叢集相關的配置檔案目錄

~]$ mkdir ceph-cluster
ceph-admin ~]$ cd ceph-cluster

2. 初始化 Monitor 節點,準備建立叢集

Ceph儲存叢集需要至少執行一個Ceph Monitor和一個Ceph Manager,生產環境中,為了實現高可用性,Ceph儲存叢集通常執行多個監視器,以免單監視器整個儲存叢集崩潰。Ceph使用Paxos演算法,該演算法需要半數以上的監視器(大於n/2,其中n為總監視器數量)才能形成法定人數。儘管此非必需,但奇數個監視器往往更好。使用下面的命令,可以將 ceph-node01、ceph-node02、 ceph-node03執行為 Monitor 節點。

~]$ ceph-deploy new ceph-node01 ceph-node02 ceph-node03
ceph-cluster]$ ll 
-rw-rw-r-- 1 cephadm cephadm  262 7月  21 14:46 ceph.conf
-rw-rw-r-- 1 cephadm cephadm 5615 7月  21 14:46 ceph-deploy-ceph.log
-rw------- 1 cephadm cephadm   73 7月  21 14:46 ceph.mon.keyring

3. 在每個節點安裝 Ceph 軟體

ceph-deploy命令能夠以遠端的方式連入Ceph叢集各節點完成程式包安裝等操作,命令格式如下:ceph-deploy install {ceph-node} [{ceph-node} ...]因此,若要將ceph-node01、ceph-node02和ceph-node03配置為Ceph叢集節點,則執行如下命令即可:

ceph-cluster]$ ceph-deploy install ceph-node01 ceph-node02 ceph-node03

此處為了加速我們在叢集各節點手動安裝ceph程式包

~]# rpm -ivh https://mirrors.aliyun.com/ceph/rpm-mimic/el7/noarch/ceph-release-1-1.el7.noarch.rpm
~]# yum install -y ceph ceph-radosgw 

等待各個叢集節點程式包安裝完成後,配置 ceph-node01, ceph-node02, ceph-node03 為 ceph 叢集節點,此處為了不讓 ceph-deploy 節點 再次重新安裝 ceph 程式,我們需要新增引數 --no-adjust-repos

ceph-cluster]$ ceph-deploy install --no-adjust-repos ceph-node01 ceph-node02 ceph-node03 

4. 生成 Monitor 檢測叢集所使用的的祕鑰

在節點上會啟動一個 ceph-mon 程序,並且以 ceph 使用者執行。在 /etc/ceph 目錄會生成一些對應的配置檔案,其中 ceph.conf 檔案就是從前面 ceph-cluater 檔案直接copy過去的,此檔案也可以直接進行修改

ceph-cluster]$ ceph-deploy mon create-initial

5. 分發配置檔案到叢集個節點

為免得每次執行”ceph“命令列時不得不明確指定MON節點地址和ceph.client.admin.keyring, 我們把配置檔案和admin金鑰拷貝Ceph叢集各節點

ceph-cluster]$ ceph-deploy admin ceph-node01 ceph-node02 ceph-node03

6. 配置mgr,用於管理叢集

對於Luminious+版本 或以後的版本,必須配置Manager節點,啟動ceph-mgr程序,否則ceph是不健康的不完整的。Ceph Manager守護程序以“Active/Standby”模式執行,部署其它ceph-mgr守護程式可確保在Active節點或其上的 ceph-mgr守護程序故障時,其中的一個Standby例項可以在不中斷服務的情況下接管其任務。 Mgr 是一個無狀態的服務,所以我們可以隨意新增其個數,通常而言,使用 2 個節點即可。

ceph-cluster]$ ceph-deploy  mgr create ceph-node01 ceph-node02

我們可以通過 ceph -s 命令驗證, 如果沒有 ceph 命令則需要安裝 ceph-common ,為了能讓 ceph-admin 也能執行ceph -s命令,我們需要安裝 ceph-common 命令,並且通過 ceph-deploy admin推送配置檔案給 ceph-admin,並設定cephadm 對 配置檔案有可讀許可權

ceph-cluster]$ sudo yum install -y ceph-common
ceph-cluster]$ ceph-deploy admin ceph-admin
ceph-cluster]$ sudo setfacl -m u:cephadm:r /etc/ceph/ceph.client.admin.keyring

此命令執行完成以後,整個Ceph叢集基本框架已經搭建完成了。我們叢集是一個擁有三個 Mon 節點,2 個 Mgr 節點的高可用ceph叢集。

7. 部署 Rgw 用來提供物件儲存

ceph-cluster]$ ceph-deploy rgw create ceph-node02 ceph-node02

8. 部署 MDS 用來提供 CephFS

ceph-cluster]$ ceph-deploy mds create ceph-node01 ceph-node02

向 Ceph 叢集新增OSD

在此 ceph 叢集中,我們每臺機器使用了三塊硬碟 ,/dev/sda、/dev/sdb、/dev/sdc, 其中/dev/sda是系統盤,/dev/sdb、/dev/sdc,是我們接下要新增為 OSD 的磁碟

~]# lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0  100G  0 disk 
├─sda1   8:1    0   98G  0 part /
└─sda2   8:2    0    2G  0 part [SWAP]
sdb      8:16   0   50G  0 disk 
sdc      8:32   0   20G  0 disk 

早期版本的ceph-deploy命令支援在將新增OSD的過程分為兩個步驟:準備OSD和啟用OSD,但新版本中,此種操作方式已經被廢除。新增OSD的步驟只能由命令”ceph-deploy osd create {node} --data {data-disk}“一次完成,預設使用的儲存引擎為bluestore

ceph-cluster]$ ceph-deploy osd create ceph-node01 --data /dev/sdb
ceph-cluster]$ ceph-deploy osd create ceph-node01 --data /dev/sdc
ceph-cluster]$ ceph-deploy osd create ceph-node02 --data /dev/sdb
ceph-cluster]$ ceph-deploy osd create ceph-node02 --data /dev/sdc
ceph-cluster]$ ceph-deploy osd create ceph-node03 --data /dev/sdb
ceph-cluster]$ ceph-deploy osd create ceph-node03 --data /dev/sdc