私有云数据层 ZData Ceph¶
在 私有云架构 规划中,只有3个虚拟机 z-b-data-X
承担了整个虚拟化集群的数据存储,构建分布式存储来存放集群的数据。其中, Ceph Atlas 是主要的虚拟机镜像存储服务。
备注
部署Ceph采用 手工部署Ceph ,本文汇总精要
虚拟机采用 私有云KVM环境 clone方法创建:
z-b-data-1 z-b-data-2 z-b-data-3
安装Ceph软件包(在每个节点上执行):
sudo apt update && sudo apt install ceph ceph-mds
z-b-data-1
部署Ceph集群初始化¶
备注
首先 安装 ceph-mon ,提供Ceph bootstrap
生成一个unique ID,用于fsid:
cat /proc/sys/kernel/random/uuid
按照生成的uuid,配置
/etc/ceph/ceph.conf
:
1[global]
2fsid = 0e6c8b6f-0d32-4cdb-a45d-85f8c7997c17
3mon initial members = z-b-data-1
4mon host = 192.168.6.204
5public network = 192.168.6.0/24
6auth cluster required = cephx
7auth service required = cephx
8auth client required = cephx
9osd journal size = 1024
10osd pool default size = 3
11osd pool default min size = 2
12osd pool default pg num = 128
13osd pool default pgp num = 128
14osd crush chooseleaf type = 1
15
16[mon.z-b-data-1]
17host = z-b-data-1
18mon addr = 192.168.6.204:6789
19
20[mon.z-b-data-2]
21host = z-b-data-2
22mon addr = 192.168.6.205:6789
23
24[mon.z-b-data-3]
25host = z-b-data-3
26mon addr = 192.168.6.206:6789
27
28[mds.z-b-data-1]
29host = 192.168.6.204
30
31[mds.z-b-data-2]
32host = 192.168.6.205
33
34[mds.z-b-data-3]
35host = 192.168.6.206
创建集群的keyring和monitor密钥:
sudo ceph-authtool --create-keyring /tmp/ceph.mon.keyring --gen-key -n mon. --cap mon 'allow *'
生成管理员keyring,生成
client.admin
用户并添加用户到keyring:sudo ceph-authtool --create-keyring /etc/ceph/ceph.client.admin.keyring --gen-key -n client.admin --cap mon 'allow *' --cap osd 'allow *' --cap mds 'allow *' --cap mgr 'allow *'
生成
bootstrap-osd
keyring,生成client.bootstrap-osd
用户并添加用户到keyring:sudo ceph-authtool --create-keyring /var/lib/ceph/bootstrap-osd/ceph.keyring --gen-key -n client.bootstrap-osd --cap mon 'profile bootstrap-osd' --cap mgr 'allow r'
将生成的key添加到
ceph.mon.keyring
sudo ceph-authtool /tmp/ceph.mon.keyring --import-keyring /etc/ceph/ceph.client.admin.keyring sudo ceph-authtool /tmp/ceph.mon.keyring --import-keyring /var/lib/ceph/bootstrap-osd/ceph.keyring
更改
ceph.mon.keyring
的owner:sudo chown ceph:ceph /tmp/ceph.mon.keyring
使用主机名、主机IP和FSID生成一个监控映射,保存为
/tmp/monmap
monmaptool --create --add z-b-data-1 192.168.6.204 --fsid 0e6c8b6f-0d32-4cdb-a45d-85f8c7997c17 /tmp/monmap
创建一个监控主机到默认数据目录:
sudo -u ceph mkdir /var/lib/ceph/mon/zdata-z-b-data-1
发布监控服务的monitor的map和keyring:
sudo -u ceph ceph-mon --cluster ceph --mkfs -i z-b-data-1 --monmap /tmp/monmap --keyring /tmp/ceph.mon.keyring
启动monitor(s):
sudo systemctl start ceph-mon@z-b-data-1
检查集群状态:
sudo ceph -s
处理WARN:
sudo ceph config set mon mon_warn_on_insecure_global_id_reclaim_allowed false sudo ceph mon enable-msgr2
z-b-data-1
部署mgr¶
创建服务的认证key:
sudo mkdir /var/lib/ceph/mgr/ceph-z-b-data-1 sudo ceph auth get-or-create mgr.z-b-data-1 mon 'allow profile mgr' osd 'allow *' mds 'allow *' | sudo tee /var/lib/ceph/mgr/ceph-z-b-data-1/keyring
修订文件属性:
sudo chown ceph:ceph /var/lib/ceph/mgr/ceph-z-b-data-1/keyring sudo chmod 600 /var/lib/ceph/mgr/ceph-z-b-data-1/keyring
启动:
sudo systemctl start ceph-mgr@z-b-data-1
安装dashboard插件:
sudo apt install ceph-mgr-dashboard
检查模块:
sudo ceph mgr module ls
激活模块:
sudo ceph mgr module enable dashboard
安装dashboard证书:
sudo ceph dashboard create-self-signed-cert
为了安全部署和移除警告,需要通过一个签名证书(certificate authority, CA)来实现:
openssl req -new -nodes -x509 \ -subj "/O=IT/CN=ceph-mgr-dashboard" -days 3650 \ -keyout dashboard.key -out dashboard.crt -extensions v3_ca
过这个CA来签名
dashboard.crt
sudo ceph dashboard set-ssl-certificate z-b-data-1 -i dashboard.crt sudo ceph dashboard set-ssl-certificate-key z-b-data-1 -i dashboard.key
配置完成后检查服务:
sudo ceph mgr services
输出类似:
{
"dashboard": "https://z-b-data-1:8443/"
}
使用浏览器访问 https://z-b-data-1:8443/ 就可以看到Ceph的管理界面
创建一个管理员角色(密码存放在一个文件
huatai
中):sudo ceph dashboard ac-user-create huatai -i huatai administrator
现在可以用创建的账号登陆Ceph管理平台了
添加第一个OSD¶
登陆
z-b-data-1
虚拟机,执行以下命令准备好磁盘分区 500Gsudo parted /dev/nvme0n1 mklabel gpt sudo parted -a optimal /dev/nvme0n1 mkpart primary 0% 500GB
登陆第一台服务器
z-b-data-1
创建第一个OSD:sudo ceph-volume lvm create --bluestore --data /dev/nvme0n1p1
备注
ceph-volume lvm create
会自动完成OSD磁盘初始化,OSD服务启动和systemd配置,所有操作都自动完成,非常简便,无需进一步设置。
完成后检查OSD:
sudo ceph-volume lvm list
检查集群状态:
sudo ceph -s
添加MON(配置3个)¶
为满足冗余,在 z-b-data-2
和 z-b-data-3
上也部署 ceph-mon
在主机
z-b-data-1
上执行以下命令获取monitor map:sudo ceph mon getmap -o /tmp/monmap
注意,此时从集群中获得的 monmap
只包含了第一台服务器 z-b-data-1
,我们还需要添加增加的 z-b-data-2
和 z-b-data-3
monmaptool --add z-b-data-2 192.168.6.205 --fsid 0e6c8b6f-0d32-4cdb-a45d-85f8c7997c17 /tmp/monmap
monmaptool --add z-b-data-3 192.168.6.206 --fsid 0e6c8b6f-0d32-4cdb-a45d-85f8c7997c17 /tmp/monmap
停止
z-b-data-1
上ceph-mon
并更新 monitor map:sudo systemctl stop ceph-mon@z-b-data-1 sudo ceph-mon -i z-b-data-1 --inject-monmap /tmp/monmap
登陆需要部署monitor的服务器,执行以下命令创建mon默认目录:
mon-id="z-b-data-2" sudo mkdir /var/lib/ceph/mon/ceph-${mon-id}
将 192.168.6.204 (
z-b-data-1
) 管理密钥复制到需要部署ceph-mon
的配置目录下:scp 192.168.6.204:/etc/ceph/ceph.client.admin.keyring /etc/ceph/ scp 192.168.6.204:/etc/ceph/ceph.conf /etc/ceph/
在主机
z-b-data-2
上执行以下命令获取monitors的keyring:sudo ceph auth get mon. -o /tmp/ceph.mon.keyring
在主机
z-b-data-2
上执行以下命令获取monitor map:sudo ceph mon getmap -o /tmp/monmap
在主机
z-b-data-2
准备monitor的数据目录,这里必须指定monitor map路径,这样才能够获取监控的quorum信息以及fsid
,而且还需要提供 monitor keyring的路径:sudo ceph-mon --mkfs -i z-b-data-2 --monmap /tmp/monmap --keyring /tmp/ceph.mon.keyring
启动服务:
sudo systemctl start ceph-mon@z-b-data-2 sudo systemctl enable ceph-mon@z-b-data-2
在
z-b-data-3
上完成和z-b-data-2
相同的操作完成ceph-mon
部署检查集群状态:
sudo ceph -s
增加OSD(每个节点一个,共3个)¶
现在Ceph集群只有 z-b-data-1
上有一个OSD运行,不能满足3副本稳定要求。所以,在 z-b-data-2
和 z-b-data-3
上各部署一个 OSD,实现3副本
在两台
z-b-data-2
和z-b-data-3
复制配置和keyring (前面扩容ceph-mon
已经做过):scp 192.168.6.204:/etc/ceph/ceph.client.admin.keyring /etc/ceph/ scp 192.168.6.204:/etc/ceph/ceph.conf /etc/ceph/
在
z-b-data-2
和z-b-data-3
准备磁盘:sudo parted /dev/nvme0n1 mklabel gpt sudo parted -a optimal /dev/nvme0n1 mkpart primary 0% 500GB
将
z-b-data-1
(192.68.6.204)/var/lib/ceph/bootstrap-osd/ceph.keyring
复制到部署OSD的服务器对应目录:scp 192.168.6.204:/var/lib/ceph/bootstrap-osd/ceph.keyring /var/lib/ceph/bootstrap-osd/
在
z-b-data-2
和z-b-data-3
上创建OSD磁盘卷:sudo ceph-volume lvm create --bluestore --data /dev/nvme0n1p1
此时检查ceph集群状态,可以看到由于满足了3副本要求,整个集群进入稳定健康状态:
sudo ceph -s
部署MDS(用于虚拟化RBD)¶
部署 ceph-mds
服务,对外提供POSIX兼容元数据
在
z-b-data-1
上执行:cluster=ceph id=z-b-data-1 sudo mkdir -p /var/lib/ceph/mds/${cluster}-${id}
创建keyring:
sudo ceph-authtool --create-keyring /var/lib/ceph/mds/${cluster}-${id}/keyring --gen-key -n mds.${id} sudo chown -R ceph:ceph /var/lib/ceph/mds/${cluster}-${id}
导入keyring和设置caps:
sudo ceph auth add mds.${id} osd "allow rwx" mds "allow *" mon "allow profile mds" -i /var/lib/ceph/mds/${cluster}-${id}/keyring
启动服务:
sudo systemctl start ceph-mds@${id} sudo systemctl enable ceph-mds@${id} sudo systemctl status ceph-mds@${id}
修改每个服务器上
/etc/ceph/ceph.conf
配置,添加:[mds.z-b-data-1] host = 192.168.6.204 [mds.z-b-data-2] host = 192.168.6.205 [mds.z-b-data-3] host = 192.168.6.206
然后重启每个服务器上 ceph-mon
sudo systemctl restart ceph-mon@`hostname`
在
z-b-data-2
和z-b-data-3
上执行以下命令将z-b-data-1
主机上 keyring 复制过来(这里举例是z-b-data-2
):cluster=ceph id=z-b-data-2 sudo mkdir /var/lib/ceph/mds/${cluster}-${id} sudo ceph-authtool --create-keyring /var/lib/ceph/mds/${cluster}-${id}/keyring --gen-key -n mds.${id} sudo chown -R ceph:ceph /var/lib/ceph/mds/${cluster}-${id}
导入keyring和设置caps:
sudo ceph auth add mds.${id} osd "allow rwx" mds "allow *" mon "allow profile mds" -i /var/lib/ceph/mds/${cluster}-${id}/keyring
启动服务器:
sudo systemctl start ceph-mds@${id} sudo systemctl enable ceph-mds@${id}
同样在 z-b-data-3
上完成上述操作
检查状态:
sudo ceph -s sudo ceph fs dump