前期準備
1, 安裝ceph-deploy
sudo apt install ceph-deploy
2, 安裝ntp來同步節點的時間
#所有節點上
sudo apt-get install -y ntp ntpdate ntp-doc
ntpdate 0.us.pool.ntp.org
hwclock --systohc
systemctl enable ntp
systemctl start ntp
3, 獲取集群節點的sudo權限
在集群各節點上創建
sudo useradd -d /home/{username} -m {username}
sudo passwd {username} #設置密碼
#例如,創建cephuser用戶
sudo useradd -d /home/cephuser -m cephuser
sudo passwd cephuser
#從 [Infernalis 版](http://docs.ceph.org.cn/release-notes/#v9-1-0-infernalis-release-candidate)起,用戶名 “ceph” 保留給了 Ceph 守護進程。如果 Ceph 節點上已經有了 “ceph” 用戶,升級前必須先刪掉這個用戶,所以盡量不要直接使用ceph當節點名稱。
對新建的用戶配置sudo權限
echo "{username} ALL = (root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/{username}
sudo chmod 0440 /etc/sudoers.d/{username}
4, 配置集群主機免密登錄
vim /etc/hosts
#輸入以下內容
192.168.0.193 ceph-admin
192.168.4.4 mon1
192.168.4.1 ceph-osd1
192.168.4.2 ceph-osd2
實例中包含5個主機:192.168.0.193為管理節點,負責部署安裝ceph到各個存儲節點和監控節點。192.168.4.4為監控節點,負責同步存儲節點的數據。192.168.4.1,192.168.4.2為osd存儲節點,負責實際數據的存儲。
在管理節點上新建一個名為cephuser的用戶,配置ssh登錄密鑰
#在管理節點上
#切換用戶cephuser
su - cephuser
#生成ssh登錄密鑰
ssh-keygen
#配置主機(節點)列表
vim ~/.ssh/config
#主機列表內容如下
Host ceph-admin
Hostname ceph-admin
User cephuser
Host mon1
Hostname mon1
User cephuser
Host ceph-osd1
Hostname ceph-osd1
User cephuser
Host ceph-osd2
Hostname ceph-osd2
User cephuser
設置權限
chmod 644 ~/.ssh/config
發放密鑰到各節點
ssh-keyscan ceph-osd1 ceph-osd2 mon1 >> ~/.ssh/known_hosts
ssh-copy-id ceph-osd1
ssh-copy-id ceph-osd2
ssh-copy-id mon1
測試
#在管理節點上
ssh mon1
#試著從管理節點上ssh到mon1節點,若無需密碼即可登錄,則ok
5, 打開節點通信端口
sudo firewall-cmd --zone=public --add-port=6789-6800/tcp --permanent
sudo firewall-cmd reload
創建集群
1, 創建ceph-deploy工作文件夾
sudo mkdir my-cluster
cd my-cluster
往后的ceph-deploy操作都要在該文件夾中進行
2, 創建監控節點
ceph-deploy new mon1
3, 設置ceph副本數量
sudo vim ceph.conf
osd pool default size = 0 #添加此段內容,設置副本數量為0
4, 從管理節點安裝ceph到各節點
ceph-deploy install ceph-admin mon1 ceph-osd1 ceph-osd2
5, 初始化監控節點
ceph-deploy mon create-initial
6, osd節點磁盤劃分
- ceph-osd1節點
dd if=/dev/zero of=ceph-volumes.img bs=1M count=4200 oflag=direct
sgdisk -g --clear ceph-volumes.img
sudo vgcreate ceph-volumes $(sudo losetup --show -f ceph-volumes.img)
sudo lvcreate -L2G -nceph1 ceph-volumes
sudo mkfs.xfs -f /dev/ceph-volumes/ceph1
mkdir -p /srv/ceph/osd1
sudo mount /dev/ceph-volumes/ceph1 /srv/ceph/osd1
- ceph-osd2節點
dd if=/dev/zero of=ceph-volumes.img bs=1M count=4200 oflag=direct
sgdisk -g --clear ceph-volumes.img
sudo vgcreate ceph-volumes $(sudo losetup --show -f ceph-volumes.img)
sudo lvcreate -L2G -nceph2 ceph-volumes
sudo mkfs.xfs -f /dev/ceph-volumes/ceph2
mkdir -p /srv/ceph/osd2
sudo mount /dev/ceph-volumes/ceph2 /srv/ceph/osd2
7, 激活集群
ceph-deploy osd prepare ceph-osd1:/srv/ceph/osd1
ceph-deploy osd activate ceph-osd1:/srv/ceph/osd1
ceph-deploy osd prepare ceph-osd2:/srv/ceph/osd2
ceph-deploy osd activate ceph-osd2:/srv/ceph/osd2
如果出現如下報錯
[ceph_deploy][ERROR ] RuntimeError: Failed to execute command: ceph-disk -v activate --mark-init upstart --mount /srv/ceph/osd1
使用以下命令解決
#切換到ceph-osd1
sudo chown ceph:ceph /srv/ceph/osd1
#切換到ceph-osd2
sudo chown ceph:ceph /srv/ceph/osd2
8, 檢測ceph集群狀態
- 從客戶端發送配置文件和密鑰到各個節點
ceph-deploy admin ceph-admin mon1 ceph-osd1 ceph-osd2
- 設置密鑰權限
sudo chmod +r /etc/ceph/ceph.client.admin.keyring
- 檢測ceph集群狀態
ceph health #如果為ok則部署成功
ceph -s #使用該命令可以看到集群的更多狀態信息
9, 添加新的monitor
ceph-deploy mon add ceph-osd1 ceph-osd2
10, 安裝元數據mds
ceph-deploy mds create mon1
掛載客戶端空間文件系統
1, 安裝ceph客戶端
準備節點密鑰文件,將管理節點的my-cluster文件夾復制到客戶端節點。
進入my-cluster文件夾,在客戶端節點上安裝ceph-deploy和ceph
apt-get install ceph-deploy
ceph-deploy install localhost #localhost換成局域網ip也行
- 設置客戶端節點權限
echo "{hostname} ALL = (root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/{hostname}
sudo chmod 0440 /etc/sudoers.d/{hostname}
ssh-keygen
ssh-copy-id localhost
- 分發密鑰和設置權限
ceph-deploy admin localhost #將密鑰發送到/etc/ceph
sudo chmod +r /etc/ceph/ceph.client.admin.keyring #設置權限
2, 掛載文件系統
sudo mkdir /cpehfs
sudo mount -t ceph 192.168.4.4:6789:/ /mycephfs/ -o name=admin,secret=AQAwcGpcMxkrOxAA3EcRJkmSMXB9nsDXplxhnQ== #AQAwcGpcMxkrOxAA3EcRJkmSMXB9nsDXplxhnQ==為ceph.client.admin.keyring的密鑰內容
3, 檢測文件系統掛載情況
df -h