集群组件
Ceph集群包括Ceph OSD,Ceph Monitor两种守护进程。
Ceph OSD(Object Storage Device): 功能是存储数据,处理数据的复制、恢复、回填、再均衡,并通过检查其他OSD守护进程的心跳来向Ceph Monitors提供一些监控信息。
Ceph Monitor: 是一个监视器,监视Ceph集群状态和维护集群中的各种关系。
Ceph存储集群至少需要一个Ceph Monitor和两个 OSD 守护进程。
集群图
准备工作
准备四台服务器,需要可以上外网,其中三台作为ceph集群 一台作为cehp客户端,除了client外每台加一个磁盘(/dev/sdb),无需分区
环境查看
配置主机名及hosts(四台主机主机名不一样hosts一样)
# cat /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 192.168.1.101 node1 192.168.1.102 node2 192.168.1.103 node3 192.168.1.104 client
关闭防火墙及selinux
设置ntpdate时间同步并设置在crontab内
ntpdate time1.aliyun.com
配置ceph的yum源
yum install epel-release -y
四台主机均设置,如果需要设置其他颁布的yum源可以打开页面选择
http://mirrors.aliyun.com/ceph
# cat /etc/yum.repos.d/ceph.repo [ceph] name=ceph baseurl=http://mirrors.aliyun.com/ceph/rpm-mimic/el7/x86_64/ enabled=1 gpgcheck=0 priority=1 [ceph-noarch] name=cephnoarch baseurl=http://mirrors.aliyun.com/ceph/rpm-mimic/el7/noarch/ enabled=1 gpgcheck=0 priority=1 [ceph-source] name=Ceph source packages baseurl=http://mirrors.aliyun.com/ceph/rpm-mimic/el7/SRPMS enabled=1 gpgcheck=0 priority=1
配置ssh免密登录
以node1位部署节点在node1配置使node1可以免密登录四台主机
ssh-keygen -t rsa ssh-copy-id node1 ssh-copy-id node2 ssh-copy-id node3 ssh-copy-id client
在node1上ssh其他主机无需输入密码代表配置ssh成功
在node1上安装部署工具(其他节点不用安装)
yum install ceph-deploy -y
建立一个集群配置目录
注意:后面大部分操作在此目录进行
mkdir /etc/ceph cd /etc/ceph
创建集群
[root@node1 ~]# ceph-deploy new node1
会在当前配置文件目录生成以下配置文件
#ls ceph.conf ceph-deploy-ceph.log ceph.mon.keyring
说明
说明: ceph.conf 集群配置文件 ceph-deploy-ceph.log 使用ceph-deploy部署的日志记录 ceph.mon.keyring mon的验证key文件 监控需要的令牌
集群节点安装ceph
node1 node2 node3 client都需要安装
yum install ceph ceph-radosgw -y
查看版本
# ceph -v ceph version 13.2.10 (564bdc4ae87418a232fc901524470e1a0f76d641) mimic (stable)
注意: 如果公网OK,并且网速好的话,可以用`ceph-deploy install node1 node2 node3`命令来安装,但网速不好的话会比较坑
所以这里我们选择直接用准备好的本地ceph源,然后`yum install ceph ceph-radosgw -y`安装即可。
客户端安装ceph-common
[root@client ~]# yum install ceph-common -y
创建mon监控
解决public网络用于监控
修改配置文件在[global]配置端添加下面一句
public network = 192.168.1.0/24
监控节点初始化,并同步配置到所有节点(node1,node2,node3,不包括client)
ceph-deploy mon create-initial
查看监控状态
[root@node1 ceph]# ceph health HEALTH_OK
将配置信息同步到所有节点
ceph-deploy admin node1 node2 node3
在node2 node3多了几个配置文件
[root@node2 ceph]# ll 总用量 12 -rw------- 1 root root 151 8月 3 14:46 ceph.client.admin.keyring -rw-r--r-- 1 root root 322 8月 3 14:46 ceph.conf -rw-r--r-- 1 root root 92 4月 24 01:07 rbdmap -rw------- 1 root root 0 8月 1 16:46 tmpDX_w1Z
查看状态
# ceph health HEALTH_OK [root@node1 ceph]# ceph -s cluster: id: 134c6247-2fd4-4669-8c19-d0c9200d90c8 health: HEALTH_OK #健康状态为OK services: mon: 1 daemons, quorum node1 mgr: node1(active osd: 1 osds: 1 up, 1 in rgw: 1 daemon active data: pools: 4 pools, 32 pgs objects: 189 objects, 1.5 KiB usage: 3.0 GiB used, 45 GiB / 48 GiB avail pgs: 32 active+clean
为了防止mon单点故障,你可以加多个mon节点(建议奇数个,因为有quorum仲裁投票)
ceph-deploy mon add node2 ceph-deploy mon add node3
再次查看
# ceph -s cluster: id: 134c6247-2fd4-4669-8c19-d0c9200d90c8 health: HEALTH_OK services: mon: 3 daemons, quorum node1,node2,node3 mgr: node1(active), standbys: node2, node3 osd: 3 osds: 3 up, 3 in rgw: 1 daemon active data: pools: 4 pools, 32 pgs objects: 189 objects, 1.5 KiB usage: 3.0 GiB used, 45 GiB / 48 GiB avail pgs: 32 active+clean
#### 监控到时间不同步的解决方法
**ceph集群对时间同步要求非常高, 即使你已经将ntpd服务开启,但仍然可能有`clock skew deteted`相关警告**

请做如下尝试:
1, 在ceph集群所有节点上(`node1`,`node2`,`node3`)不使用ntpd服务,直接使用crontab同步
~~~powershell
# systemctl stop ntpd
# systemctl disable ntpd
# crontab -e
*/10 * * * * ntpdate ntp1.aliyun.com 每5或10分钟同步1次公网的任意时间服务器
~~~
2, 调大时间警告的阈值
~~~powershell
[root@node1 ceph]# vim ceph.conf
[global] 在global参数组里添加以下两行
......
mon clock drift allowed = 2 # monitor间的时钟滴答数(默认0.5秒)
mon clock drift warn backoff = 30 # 调大时钟允许的偏移量(默认为5)
修改了ceph.conf配置需要同步到所有节点
ceph-deploy --overwrite-conf admin node1 node2 node3
前面第1次同步不需要加--overwrite-conf参数
这次修改ceph.conf再同步就需要加--overwrite-conf参数覆盖
所有ceph集群节点上重启ceph-mon.target服务
systemctl restart ceph-mon.target
创建mgr(管理)
eph luminous版本中新增加了一个组件:Ceph Manager Daemon,简称ceph-mgr。
该组件的主要作用是分担和扩展monitor的部分功能,减轻monitor的负担,让更好地管理ceph存储系统。
ceph-deploy mgr create node1
查看
# ceph -s cluster: id: 134c6247-2fd4-4669-8c19-d0c9200d90c8 health: HEALTH_OK services: mon: 3 daemons, quorum node1,node2,node3 mgr: node1(active), standbys: node2, node3 osd: 3 osds: 3 up, 3 in rgw: 1 daemon active data: pools: 4 pools, 32 pgs objects: 189 objects, 1.5 KiB usage: 3.0 GiB used, 45 GiB / 48 GiB avail pgs: 32 active+clean
添加多个mgr可以实现HA
ceph-deploy mgr create node2 ceph-deploy mgr create node3
查看
[root@node1 ceph]# ceph -s cluster: id: 134c6247-2fd4-4669-8c19-d0c9200d90c8 health: HEALTH_OK services: mon: 3 daemons, quorum node1,node2,node3 mgr: node1(active), standbys: node2, node3 osd: 3 osds: 3 up, 3 in rgw: 1 daemon active data: pools: 4 pools, 32 pgs objects: 189 objects, 1.5 KiB usage: 3.0 GiB used, 45 GiB / 48 GiB avail pgs: 32 active+clean
创建OSD(存储盘)
查看帮助
[root@node1 ceph]# ceph-deploy disk --help [root@node1 ceph]# ceph-deploy osd --help
zap表示干掉磁盘上的数据,相当于格式化
[root@node1 ceph]# ceph-deploy disk zap node1 /dev/sdb [root@node1 ceph]# ceph-deploy disk zap node2 /dev/sdb [root@node1 ceph]# ceph-deploy disk zap node3 /dev/sdb
将磁盘创建为osd
[root@node1 ceph]# ceph-deploy osd create --data /dev/sdb node1 [root@node1 ceph]# ceph-deploy osd create --data /dev/sdb node2 [root@node1 ceph]# ceph-deploy osd create --data /dev/sdb node3
查看
# ceph -s cluster: id: 134c6247-2fd4-4669-8c19-d0c9200d90c8 health: HEALTH_OK services: mon: 3 daemons, quorum node1,node2,node3 mgr: node1(active), standbys: node2, node3 osd: 3 osds: 3 up, 3 in #生成3个OSD rgw: 1 daemon active data: pools: 4 pools, 32 pgs objects: 189 objects, 1.5 KiB usage: 3.0 GiB used, 45 GiB / 48 GiB avail #大小为3个磁盘大小总和 pgs: 32 active+clean
集群节点的扩容方法
假设再加一个新的集群节点node4
1, 主机名配置和绑定
2, 在node4上`yum install ceph ceph-radosgw -y`安装软件
3, 在部署节点node1上同步配置文件给node4. `ceph-deploy admin node4`
4, 按需求选择在node4上添加mon或mgr或osd等
查看集群状态确认mgr的active节点
[root@node1 ceph]# ceph -s cluster: id: 134c6247-2fd4-4669-8c19-d0c9200d90c8 health: HEALTH_OK services: mon: 3 daemons, quorum node1,node2,node3 mgr: node1(active), standbys: node2, node3 #确认mgr active节点为node1 osd: 3 osds: 3 up, 3 in rgw: 1 daemon active data: pools: 4 pools, 32 pgs objects: 189 objects, 1.5 KiB usage: 3.0 GiB used, 45 GiB / 48 GiB avail pgs: 32 active+clean
查看开启及关闭的模块
[root@node1 mgr-dashboard]# ceph mgr module ls { "enabled_modules": [ "balancer", "crash", "dashboard", "iostat", "restful", "status" ], "disabled_modules": [ { "name": "hello", "can_run": true, "error_string": "" }, { "name": "influx", "can_run": false, "error_string": "influxdb python module not found" }, { "name": "localpool", "can_run": true, "error_string": "" }, { "name": "prometheus", "can_run": true, "error_string": "" }, { "name": "selftest", "can_run": true, "error_string": "" }, { "name": "smart", "can_run": true, "error_string": "" }, { "name": "telegraf", "can_run": true, "error_string": "" }, { "name": "telemetry", "can_run": true, "error_string": "" }, { "name": "zabbix", "can_run": true, "error_string": "" } ] }
开启dashboard模块
ceph mgr module enable dashboard
创建自签名证书
[root@node1 ceph]# ceph dashboard create-self-signed-cert Self-signed certificate created
生成密钥对,并配置给ceph mgr
[root@node1 ceph]# mkdir /etc/mgr-dashboard [root@node1 ceph]# cd /etc/mgr-dashboard/
openssl req -new -nodes -x509 -subj "/O=IT-ceph/CN=cn" -days 3650 -keyout dashboard.key -out dashboard.crt -extensions v3_ca
[root@node1 mgr-dashboard]# ls dashboard.crt dashboard.key
在ceph集群的active mgr节点上(我这里为node1)配置mgr services
[root@node1 mgr-dashboard]# ceph config set mgr mgr/dashboard/server_addr 192.168.1.101 [root@node1 mgr-dashboard]# ceph config set mgr mgr/dashboard/server_port 8080
重启dashboard模块,并查看访问地址
注意:需要重启不重启查看的端口是默认的8443端口无法访问
重启就是先关disable再开启enable
[root@node1 mgr-dashboard]# ceph mgr module disable dashboard [root@node1 mgr-dashboard]# ceph mgr module enable dashboard
查看mgr service
# ceph mgr services { "dashboard": "https://192.168.1.101:8080/" }
设置访问web页面用户名和密码
ceph dashboard set-login-credentials admin admin
通过本机或其它主机访问 https://ip:8080
要运行Ceph文件系统,你必须先装只是带一个mds的Ceph存储集群
Ceph.MDS:为Ceph文件存储类型存放元数据metadata(也就是说Ceph块存储和Ceph对象存储不使用MDS)
创建文件存储并使用
第1步 在node1部署节点上修改配置/etc/ceph/ceph.conf 增加配置
mon_allow_pool_delete = true
同步配置文件
注意:修改了配置文件才需要同步,没有修改不需要同步配置文件
ceph-deploy --overwrite-conf admin node1 node2 node3
创建3个mds
[root@node1 ceph]# ceph-deploy mds create node1 node2 node3
第2步: 一个Ceph文件系统需要至少两个RADOS存储池,一个用于数据,一个用于元数据。所以我们创建它们
[root@node1 ceph]# ceph osd pool create cephfs_pool 128 pool ‘cephfs_pool‘ created [root@node1 ceph]# ceph osd pool create cephfs_metadata 64 pool ‘cephfs_metadata‘ created
查看
[root@node1 ceph]# ceph osd pool ls |grep cephfs cephfs_pool cephfs_metadata
第3步: 创建Ceph文件系统,并确认客户端访问的节点
[root@node1 ceph]# ceph fs new cephfs cephfs_metadata cephfs_pool new fs with metadata pool 10 and data pool 9
查看
[root@node1 ceph]# ceph osd pool ls .rgw.root default.rgw.control default.rgw.meta default.rgw.log cephfs_pool cephfs_metadata
[root@node1 ceph]# ceph fs ls name: cephfs, metadata pool: cephfs_metadata, data pools: [cephfs_pool ]
[root@node1 ceph]# ceph mds stat cephfs-1/1/1 up {0=node3=up:active}, 2 up:standby #这里看到node3为up状态
metadata保存在node3上
客户端准备验证key文件
说明: ceph默认启用了cephx认证, 所以客户端的挂载必须要验证(ceph.conf默认配置文件开启)
在集群节点(node1,node2,node3)上任意一台查看密钥字符串
cat /etc/ceph/ceph.client.admin.keyring
输出
ceph-authtool -p /etc/ceph/ceph.client.admin.keyring >admin.key
把这个文件放在客户端client /root/admin.key
注意:直接把key复制编辑admin.key文档可能会在挂载时报错
客户端client安装
yum -y install ceph-fuse
客户端挂载
可以使用其他node主机名进行挂载,例如node3
mount -t ceph node1:6789:/ /mnt -o name=admin,secretfile=/root/admin.key
查看
注意:如果使用文件挂载报错可以使用参数secret=秘钥进行挂载
可以使用两个客户端, 同时挂载此文件存储,可实现同读同写
往挂载的硬盘写数据可以在dashboard查看读写监控状态
dd if=/dev/zero of=/mnt/file1 bs=10M count=1000
原文:https://www.cnblogs.com/minseo/p/13427715.html