1. 程式人生 > >一步一步安裝配置Ceph分散式儲存叢集

一步一步安裝配置Ceph分散式儲存叢集

Ceph可以說是當今最流行的分散式儲存系統了,本文記錄一下安裝和配置Ceph的詳細步驟。

提前配置工作

從第一個叢集節點開始的,然後逐漸加入其它的節點。對於Ceph,我們加入的第一個節點應該是Monitor,我們設定為Monitor1。

我使用的作業系統是Ubuntu Server 19.10,目前沒有對應的包地址,於是就是用了bionic,應該是18.04的。還有地址也換成了中科大的映象http://mirrors.ustc.edu.cn/ceph/,而不是預設的https://download.ceph.com。

echo deb http://mirrors.ustc.edu.cn/ceph/debian-nautilus/ bionic main | sudo tee /etc/apt/sources.list.d/ceph.list

安裝python和parted

由於使用的Ubuntu版本比較新的原因,可能額Ceph的資源包並沒有包括在預設的resource庫裡,需要用Python來build叢集。安裝Python和Pip的命令如下:

sudo apt-get install -y python python-pip parted
sudo apt-get install -y python3 python-pip3

安裝和配置NTP

安裝NTP用來同步標準時間,執行ntpdate設定時間伺服器,並啟動服務進行時間同步。全球可用的授時伺服器列表。

  • http://www.ntp.org.cn/pool.php

  • https://www.ntppool.org/zone

sudo apt-get install -y ntp ntpdate ntp-doc
ntpdate 0.cn.ntp.org.cn
hwclock --systohc
systemctl enable ntp
systemctl start ntp

給每個節點設定固定IP

Ubuntu 18.04以上的系統採用netplan作為網路配置管理,不需要重啟系統。

sudo   vi /etc/netplan/50-cloud-init.yaml

network:
    ethernets:
        eth0:
            addresses: [192.168.137.200/24]
            gateway4: 192.168.137.1
            dhcp4: false
            optional: true
    version: 2             

sudo  netplan apply 
sudo hostnamectl set-hostname <newhostname>

設定localhost檔案

192.168.137.200 cephadmin
192.168.137.201 monitor2
192.168.137.202 monitor3
192.168.137.203 OSD1
192.168.137.204 OSD2
192.168.137.205 OSD3

配置Hosts檔案

vim /etc/hosts

配置各個節點的IP地址和機器名

192.168.137.200 cephadmin
192.168.137.201 monitor2
192.168.137.202 monitor3
192.168.137.203 OSD1
192.168.137.204 OSD2
192.168.137.205 OSD3

配置好了以後可以確保節點間可以通過機器名訪問。

配置SSH無密碼登入

在每個節點都建立一個叫cephuser的使用者

useradd -m -s /bin/bash cephuser
passwd cephuser

授予cephuser使用者無密碼使用sudo的許可權。

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

登入admin節點,用cephuser使用者登入:

su cephuser

執行祕鑰生成工具

ssh-keygen

然後檢視下資料夾

$ ls /home/ceph-admin/.ssh/
config  id_rsa  id_rsa.pub  known_hosts

建立和修改config檔案

$ cat /home/ceph-admin/.ssh/config 
Host OSD1
  Hostname OSD1
  User cephuser
Host OSD2
  Hostname OSD2
  User cephuser
Host OSD3
  Hostname OSD3
  User cephuser
Host monitor2
  Hostname monitor2
  User cephuser
Host monitor3
  Hostname monitor3
  User cephuser
Host cephadmin
  Hostname cephadmin
  User cephuser
ssh-keyscan OSD1 OSD2 OSD3 monitor2 monitor3 cephadmin >> ~/.ssh/known_hosts
ssh-copy-id OSD1
ssh-copy-id OSD2
ssh-copy-id OSD3
ssh-copy-id monitor2
ssh-copy-id monitor3

中間可能會要求輸入cephuser的密碼。然後我們建立了通過admin節點無密碼ssh登入所有其他的節點。為後面安裝作準備。可以先試一下

ssh monitor2

配置防火牆程式

如果要用在生產環境,為了安全著想我們一開始就應該配置防火牆,只開通伺服器上需要訪問的埠。

給Ceph的OSD節點掛載硬碟

在這次的實驗中,配置了三個OSD儲存節點。每個節點掛載一個20GB的硬碟分割槽作為ceph的儲存區域。

  1. /dev/sda 作為系統盤
  2. /dev/sdb 作為新掛載的20GB硬碟

檢查硬碟的分割槽情況

sudo fdisk -l

用parted命令給 /dev/sdb用XFS檔案系統分割槽,並建立硬碟分割槽表。

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

用mkfs格式化硬碟

sudo mkfs.xfs -f /dev/sdb

再檢查一下

sudo fdisk -s /dev/sdb
sudo blkid -o value -s TYPE /dev/sdb

正式建立Ceph的Admin節點, 並安裝Ceph到叢集

在admin節點上安裝Ceph的部署工具包

  • 用pip命令安裝
sudo pip install ceph-deploy
  • 用安裝源安裝
echo deb https://download.ceph.com/debian-nautilus/ $(lsb_release -sc) main | sudo tee /etc/apt/sources.list.d/ceph.list

國內還是用中科大的映象比較好,原始的地址不穩定

echo deb http://cernet.mirrors.ustc.edu.cn/ceph/debian-nautilus/ $(lsb_release -sc) main | sudo tee /etc/apt/sources.list.d/ceph.list

然後執行命令

sudo apt update
sudo apt -y install ceph-deploy

初始化叢集配置

  1. 首先新建一個資料夾用來放Ceph叢集的配置檔案,

    mkdir cluster
    cd cluster/
  2. 用 ceph-deploy 工具建立叢集並把monitor2作為第一個monitor節點。

    ceph-deploy new monitor2

    我們可以看到在cluster資料夾中生成了配置檔案Ceph.config。

  3. 安裝Ceph到所有節點, 注意一定要加--no-adjust-repos和--stable,不然安裝不成功。

    ceph-deploy install --no-adjust-repos --stable cephadmin OSD1 OSD2 OSD3 monitor2 monitor3

建立Monitor和Manager節點

初始化Monitor節點

ceph-deploy --overwrite-conf monitor2 create-initial

上面的語句會自動建立monitor key,下面的命令檢查是否Key已經生成

ceph-deploy gatherkeys monitor2

建立Manager節點

ceph-deploy mgr create monitor3

新增OSD儲存節點

現在我們已經運行了一個Monitor節點了,開始加入儲存節點OSD吧,這次我配置了3臺虛擬機器作為OSD叢集節點。下面的命令可以看是否硬碟 /dev/sdb的狀態都是可用的,檔案格式是否OK

ceph-deploy disk list OSD1 OSD2 OSD3

刪除資料和硬碟分割槽表:

ceph-deploy disk zap OSD1 /dev/sdb
ceph-deploy disk zap OSD2 /dev/sdb
ceph-deploy disk zap OSD3 /dev/sdb

好了,下一步就是正式載入OSD節點了,這些是Ceph真正的儲存節點了:

ceph-deploy osd create --data /dev/sdb OSD1
ceph-deploy osd create --data /dev/sdb OSD2
ceph-deploy osd create --data /dev/sdb OSD3

完成後用list命令檢視, 搞定,block裝置掛載完畢,當然每個節點上可以掛載上多個裝置。

ceph-deploy osd list OSD1 OSD2 OSD3

部署叢集管理KeyRing

接下來把叢集管理的key部署到所有的節點上:

ceph-deploy admin cephadmin OSD1 OSD2 OSD3 monitor2 monitor3

每一個節點的key資料夾許可權更改。

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

測試Ceph叢集的部署情況

登入monitor2

ssh mon1

然後檢視叢集狀況

sudo ceph health
sudo ceph -s

從上面的資訊可以看到,Ceph啟動了兩個monitor節點,一個manager節點,註冊了三個OSD節點,執行中有2個OSD節點。總共有38G儲存。


到此為止,一個實驗叢集就配置完畢了,後面開始在這個叢集上開發功能。使用其物件儲存的能力,最重要的要建一個異構的儲存叢集。如果文章格式不滿意,可以到以下地址檢視:
文章連線

參考文章

https://www.howtoforge.com/tutorial/how-to-install-a-ceph-cluster-on-ubuntu-16-04/

https://computingforgeeks.com/how-to-deploy-ceph-storage-cluster-on-ubuntu-18-04-lts/

https://www.server-world.info/en/note?os=Ubuntu_18.04&p=ceph&f=1

https://ceph.io/install/

中科大開源映象源列表

http://cernet.mirrors.ustc.edu.