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的存儲區域。
- /dev/sda 作為系統盤
- /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
初始化集群配置
-
首先新建一個文件夾用來放Ceph集群的配置文件,
mkdir cluster cd cluster/
-
用 ceph-deploy 工具創建集群並把monitor2作為第一個monitor節點。
ceph-deploy new monitor2
我們可以看到在cluster文件夾中生成了配置文件Ceph.config。
-
安裝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
中科大開源鏡像源列表