Ceph CentOS7 部署

系统版本
[root@landerp2uatapp04 gjoy]# cat /etc/centos-release
CentOS Linux release 7.3.1611 (Core)
拓扑架构
主机名节点IP安装组件
yfm13192.168.199.113ceph-mon,ceph-mgr,ceph-mds
yfm14192.168.199.114ceph-osd
yfm15192.168.199.115ceph-osd
配置Hosts

vim /etc/hosts

192.168.199.113	yfm13
192.168.199.114	yfm14
192.168.199.115	yfm15
时间同步
参考之前的文章
安装依赖
# 安装yum-plugin-priorities依赖
yum install -y yum-plugin-priorities

# 确认里面的enabled为1,表示启用plugin
cat /etc/yum/pluginconf.d/priorities.conf

# 安装ceph的密钥
rpm --import 'https://download.ceph.com/keys/release.asc'

# 安装elep-release仓库并安装一些必须的包
yum install -y epel-release
yum install -y snappy leveldb gdisk gperftools-libs
配置ceph的镜像源

vim /etc/yum.repos.d/ceph.repo

Ceph版本下载地址:https://download.ceph.com,我这里使用15.2.9

[ceph]
name=Ceph packages for $basearch
baseurl=https://mirrors.ustc.edu.cn/ceph/rpm-15.2.9/el7/$basearch
enabled=1
priority=2
gpgcheck=1
gpgkey=https://mirrors.ustc.edu.cn/ceph/keys/release.asc

[ceph-noarch]
name=Ceph noarch packages
baseurl=https://mirrors.ustc.edu.cn/ceph/rpm-15.2.9/el7/noarch
enabled=1
priority=2
gpgcheck=1
gpgkey=https://mirrors.ustc.edu.cn/ceph/keys/release.asc

[ceph-source]
name=Ceph source packages
baseurl=https://mirrors.ustc.edu.cn/ceph/rpm-15.2.9/el7/SRPMS
enabled=0
priority=2
gpgcheck=1
gpgkey=https://mirrors.ustc.edu.cn/ceph/keys/release.asc
安装Ceph
yum install -y ceph
ceph-mon服务部署(yfm13)
创建配置文件

vim /etc/ceph/ceph.conf

[global]
    fsid = bdd23a75-12fc-4f25-abf5-7a739fa4e2d1
    mon initial members = yfm13
    mon host = 192.168.199.113:6789
    public network = 192.168.199.0/24
    auth cluster required = cephx
    auth service required = cephx
    auth client required = cephx
    osd journal size = 1024
    osd pool default size = 2
    osd pool default min size = 1
    osd pool default pg num = 333
    osd pool default pgp num = 333
    osd crush chooseleaf type = 1
    mon_allow_pool_delete = true
  • fsid:这个就是刚才生成的集群唯一uuid,使用uuidgen命令生成
  • mon initial members:这个配置监视器的主机名列表,多个用逗号分隔
  • mon host:这个配置监视器节点的ip:port列表,默认ceph-mon服务的端口号是6789,默认不修改可以不写,多个用逗号分隔
  • public network: 表示开放客户端访问的网络段,根据实际的情况配置
  • 然后后面3项均表示启动认证,方式就是cephx
  • 然后重点看:osd pool default size和osd pool default min size,第一个是osd的数据会复制多少份,osd节点或服务的个数至少要>=复制份数,正常生产环境副本至少要设置3个,保证数据安全,我们这里就两个osd,因此最多设置2;然后后面的配置是允许降级状态下写入几个副本,通常建议至少配置2,我们这里只有两个osd,因此配置了1
  • 然后是osd pool default pg num和osd pool default pgp num是配置单个pool默认的pg数量和pgp数量,pg全称是Placement Group,叫放置组,也就数据存储分组的单元,可以类比为hdfs的块类似的概念,pgp num要和pg num一致即可
  • osd crush chooseleaf type这个参数要注意,这个默认是1表示不允许把数据的不同副本放到1个节点上,这样是为了保证数据安全,集群肯定要配置成1,如果是单机环境搭多个osd做伪分布式测试,那么副本肯定是都在本机的,这个参数务必要改成0,否则最后pgs一直达不到active+clean的状态,就算1个机器上osd数量足够状态仍然为100% pgs not active以及undersized+peered的状态,所以一定要注意这个参数
  • mon_allow_pool_delete 这个参数表示是否允许删除pool,就是存储池,默认是不允许的,改成这个则允许删除,生产环境建议关闭

然后需要把这个配置文件同步到所有的节点,注意之后ceph.conf只要有任何修改,都要同步到集群全部节点,不管是否用到这些配置项,目的是为了保证集群的配置统一,避免出现特殊的问题

配置
# 为集群创建1个密钥环,作为监视器密钥 注意其中的点.不要丢
ceph-authtool --create-keyring /tmp/ceph.mon.keyring --gen-key -n mon. --cap mon 'allow *'
# 生成管理员密钥环 创建admin用户 也是第一个客户端用户
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密钥环和用户
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'
# 然后将刚才生成的密钥追加到ceph.mon.keyring
ceph-authtool /tmp/ceph.mon.keyring --import-keyring /etc/ceph/ceph.client.admin.keyring
ceph-authtool /tmp/ceph.mon.keyring --import-keyring /var/lib/ceph/bootstrap-osd/ceph.keyring
# 修改ceph.mon.keyring的权限为ceph ceph用户安装时已经自动创建
chown ceph:ceph /tmp/ceph.mon.keyring

# 生成ceph-mon 映射,存储到/tmp/monmap
monmaptool --create --add yfm13 192.168.199.113 --fsid bdd23a75-12fc-4f25-abf5-7a739fa4e2d1 /tmp/monmap

# 创建ceph-mon数据目录,目录名为: 集群名-主机名  这里是: ceph-yfm13
mkdir /var/lib/ceph/mon/ceph-yfm13

# 使用刚才生成的密钥环和映射初始化数据目录
ceph-mon --mkfs -i yfm13 --monmap /tmp/monmap --keyring /tmp/ceph.mon.keyring

#  调整数据目录权限为ceph
chown -R ceph:ceph /var/lib/ceph/mon/ceph-yfm13/
启动ceph-mon服务
# 服务名为:ceph-mon@主机名
systemctl start ceph-mon@yfm13
# 查看服务状态
systemctl status ceph-mon@yfm13


如果正常启动的话,这时候6789端口应该被监听了,这样ceph-mon服务就配置好了,如果配置多个节点的话,要将刚才的ceph.mon.keyring和monmap复制到其他的节点,然后初始化数据目录启动服务即可,密钥环不要多次生成,然后admin用户和bootstrap-osd用户的密钥环同时都要同步到其他的节点,配置好通过下面命令查看ceph状态

ceph -s

正常显示HEALTH_OK即可,然后如果有WARN提示没有启用msgr2,需要通过下面的命令启用一下,然后稍等再次观察即可正常

ceph mon enable-msgr2

如果想在其他osd节点也执行ceph -s查看状态的话,则需要同步/etc/ceph/ceph.client.admin.keyring文件到其他节点即可执行ceph状态相关的命令
遇到的问题
start request repeated too quickly for ceph-mon@yfm13.service

systemctl daemon-reload
systemctl restart ceph-mon@yfm13

IO error: /var/lib/ceph/mon/ceph-yfm13/store.db/LOCK: Permission denied

chown -R ceph:ceph /var/lib/ceph/mon/ceph-yfm13/

image

ceph-mgr服务部署(yfm13)

ceph-mgr和ceph-mon是成对出现的,在每个ceph-mon的节点上都应该有ceph-mgr进程,然后就是配置并启动ceph-mgr守护进程

生成mgr身份验证密钥
# 创建mgr密钥目录, 命名为: 集群名-主机名
mkdir /var/lib/ceph/mgr/ceph-yfm13
# 创建mgr身份验证密钥 注意里面的mgr.yfm13,yfm13为主机名
ceph auth get-or-create mgr.yfm13 mon 'allow profile mgr' osd 'allow *' mds 'allow *' > /var/lib/ceph/mgr/ceph-yfm13/keyring
# 修改权限
chown -R ceph:ceph /var/lib/ceph/mgr/ceph-yfm13/
启动ceph-mgr守护进程
systemctl start ceph-mgr@yfm13
# 查看服务状态
systemctl status ceph-mgr@yfm13
遇到的问题
ceph -s

HEALTH_WARN
Module 'restful' has failed dependency: No module named 'pecan'

pip3 install pecan werkzeug
ceph-mds部署(yfm13)
创建mds数据目录
# 目录名同样是: 集群名-主机名
mkdir /var/lib/ceph/mds/ceph-yfm13
# 然后创建mds 密钥环到刚建的目录中, 注意mds.yfm13同样写主机名
ceph-authtool --create-keyring /var/lib/ceph/mds/ceph-yfm13/keyring --gen-key -n mds.yfm13
# 最后导入密钥环  设置访问权限 同样注意主机名
ceph auth add mds.yfm13 osd "allow rwx" mds "allow" mon "allow profile mds" -i /var/lib/ceph/mds/ceph-yfm13/keyring
编辑配置文件:/etc/ceph/ceph.conf
# 添加如下的配置块
[mds.yfm13]
    host = yfm13

# 将配置文件同步到集群所有节点
scp /etc/ceph/ceph.conf yfm14:/etc/ceph/ceph.conf
scp /etc/ceph/ceph.conf yfm15:/etc/ceph/ceph.conf
启动ceph-mds守护进程
# -i指定mds节点主机名, -m指定ceph-mon的主机名:端口
ceph-mds --cluster ceph -i yfm13 -m yfm13:6789
ceph-OSD节点部署(yfm14,yfm15)
# 将yfm13上面的osd密钥发送到osd节点
scp /var/lib/ceph/bootstrap-osd/ceph.keyring yfm14:/var/lib/ceph/bootstrap-osd/
scp /var/lib/ceph/bootstrap-osd/ceph.keyring yfm15:/var/lib/ceph/bootstrap-osd/
vmware添加新的磁盘
# 使主机识别新增的硬盘
echo "- - -" >  /sys/class/scsi_host/host0/scan
echo "- - -" >  /sys/class/scsi_host/host1/scan
echo "- - -" >  /sys/class/scsi_host/host2/scan

fdisk -l
Disk /dev/sda: 21.5 GB, 21474836480 bytes, 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x000a633c

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     2099199     1048576   83  Linux
/dev/sda2         2099200    41943039    19921920   8e  Linux LVM

Disk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

创建osd存储(lvm方式)
ceph-volume lvm create --data /dev/sdb

创建的存储类型分为两种,分别是:BULE STORE和FILE STORE,即分别是默认的存储以及文件存储,这俩的区别是文件存储是每次写入都需要先写journal会产生写放大,最初是针对SATA这类机械盘设计的,没有对SSD做优化,而Bule store比较新一些主要对Flash介质做了优化所以在SSD上性能更好,通常默认采用bule store,对固态盘更友好,对于机械盘可以采用File store,但是每个File store的osd至少需要两块设备,因为每个文件存储都必须要指定配套的日志存储设备,我们这里创建的类型为bule store

–data指定块设备,我们这为/dev/sdb

# 查看osd服务是否正常
systemctl status ceph-osd@0
创建存储池以及ceph文件系统

ceph所有的存储都是基于存储池才能分配,因此要先创建存储池,初始情况至少创建两个存储池(RADOS):1个用于存储数据,1个用于存储元数据信息

创建存储池
# 创建名字为cephfs_data的数据池 pg大小为128
ceph osd pool create cephfs_data 128
# 创建名字为cephfs_metadata的存储池 pg大小为64
ceph osd pool create cephfs_metadata 64

存储池可以创建多个,并且所有的存储池共享底层的存储空间,比如A存储池占用了一部分,那个B存储池就只能用剩下的部分了,而且之后挂载后剩余大小的显示也会变小,这个后面可以验证

另外就是注意这里pg大小正常指定128或64就够了,正常默认1个pool最多支持250个pg,可以通过参数调整限制大小,这里两个池都是一样的数据池,后续创建文件系统会指定哪个用于数据,哪个用于元数据存储,这里名字只是个代号

基于存储池创建文件系统
# ceph fs new <fs名称> <元数据池> <数据池>
ceph fs new cephfs cephfs_metadata cephfs_data
检查
# 查看存在的文件系统
ceph fs ls
# 查看mds当前的活动状态
ceph mds stat
挂载文件系统

挂载文件系统有两种方式,一种是基于操作系统内核直接挂载,另一种是使用ceph fuse挂载,通常推荐第一种方式挂载,这样性能和效率都是最高的,如果第一种方式挂载不成功的话,可以尝试使用fuse方式挂载,下面我们直接使用内核方式挂载

# 确认内核mount是否支持ceph
stat /sbin/mount.ceph

# 创建挂载点使用admin用户挂载
mkdir /mnt/mycephfs
mount -t ceph :/ /mnt/mycephfs/ -o name=admin

# 查看挂载的情况以及容量
df -h

image

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

四美

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值