一步一步安裝配置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設置時間服務器,並啟動服務進行時間同步。全球可用的授時服務器列表。

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.cn/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM