Ceph手动搭建ceph集群
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Ceph手动搭建ceph集群相关的知识,希望对你有一定的参考价值。
手动部署Ceph集群
- 3台ceph机器
hostname | IP | mon_id | 磁盘快 | journal |
---|---|---|---|---|
Ceph1 | 192.168.1.1 | 0 | /dev/sdb2 | /dev/sdb1 |
Ceph2 | 192.168.1.2 | 1 | /dev/sdb2 | /dev/sdb1 |
Ceph3 | 192.168.1.3 | 2 | /dev/sdb2 | /dev/sdb1 |
- 下载部署所需要的ceph集群的rpm包
ceph-mon ceph-common fcgi ceph-base ceph-selinux ceph-mgr ceph-dash ceph-radosgw ceph-osd
根据系统内核版本号下载对应的enhanceio包 - 使用yum来安装这些包
-
初始化moniter
- 根据uuidgen获取uuid:
ceph_uuid=$(uuidgen) -
使用monmaptool创建一个空的ceph文件系统
monmaptool --create -add mon_id1 IP1 --add mon_id2 IP2 ... --fsdi $ceph_uuid --clobber /tmp/montap 其中: --clobber表示允许 monmaptool 覆盖 mapfilename IP1:表示第一台moniter的IP IP2:表示第二台moniter的IP mon_id1:表示第一台ceph的moniter的ID,随意字符
-
更改ceph的配置文件
改为:/etc/ceph/ceph.conf fsid=$ceph_uuid mon_host= IP1,IP2.... public_addr= IP1
-
创建ceph的mon目录
mkdir /var/lib/ceph/mon
- 创建
ceph-mon -i mon_id --mkfs --monmap /tmp/montap
注:每台moniter对应的mon_id不同
在Ceph1上执行:
ceph-mon -i 0 --mkfs --monmap /tmp/montap
在Ceph2上执行:
ceph-mon -i 1 --mkfs --monmap /tmp/montap -
改变/var/log/ceph和/var/lib/ceph的用户组和用户
chow -R ceph.ceph /var/lib/ceph /var/log/ceph
-
开启moniter
systemctl reset-failed [email protected]_id systemctl start [email protected]_id
- 开启dash并加入自启动
/etc/init/ceph-dash start
echo ‘/etc/init.d/ceph-dash start & ‘ > /etc/rc.d/rc.local
- 根据uuidgen获取uuid:
- 初始化mgr
systemctl start [email protected]_id -
初始化s3 :$name=任意值 在其中一台mon上执行
- 新建keyring
ceph-authtool -C /etc/ceph/ceph.client.radosgw.keyring
chmod +r /etc/ceph/ceph.client.radosgw.keyring - 生成radosgw服务对应的用户和key,其中name为radows网关的实例名称,常为gateway
ceph-authtool /etc/ceph/ceph.client.radosgw.keyring -n client.radosgw.$name -g - 添加用户访问权限
ceph-authtool /etc/ceph/ceph.client.radosgw.keyring -n client.radosgw.$name --cap osd ‘allow rwx‘ --cap mon ‘allow rwx‘ -
将秘钥添加到Ceph集群中
ceph -k /etc/ceph/ceph.client.radosgw.keyring auth add client.radosgw.$name -i /etc/ceph/ceph.client.radosgw.keyring
-
配置ceph配置文件
[client.radosgw.lirui]
debug_rgw =100
rgw_data=/var/lib/ceph/radosgw/radosgw-$name
rgw_socket_path=/var/run/ceph/ceph.radosgw.$name
admin_socket=/var/run/ceph/ceph.radosgw.$name
rgw_enable_usage_log = true
rgw_frontends = civetweb port=12345注:这里采用S3的civetweb的前端方式,除此之外还有Apache和nginx
-
创建S3用户
radosgw-admin user create --uid=‘uid‘ --display-name=‘name‘ [email protected]
-
启动radosgw
radosgw -c /etc/ceph/ceph.conf -n client.radosgw.$name
- 新建keyring
-
初始化osd 每块盘都得执行一下命令
- 创建OSD
osd_id=$(ceph osd create) -
创建OSD目录
mkdir /var/lib/ceph/osd/$osd_id
-
获取UUID并写入fsid文件中
osd_uuid=$(uuidgen) echo ‘$osd_uuid‘ > /var/lib/ceph/osd/$osd_id/fsid
-
格式化数据盘
ceph-mkfs -i $osd_id /dev/sdb2 如果出现格式化失败使用一下命令: mkfs.xfs /dev/sdb2 xfs_admin -U $osd_uuid /dev/sdb2
- 创建mkfs_done文件
touch /var/lib/ceph/$osd_id/mkfs_done -
将数据盘挂在到/var/lib/ceph/osd/$osd_id目录下
mount -o noatime UUID=$osd_uuid /var/lib/ceph/osd/$osd_id
-
讲osd_uuid写进fsid文件,将字符串filestore写进type文件中
echo $osd_id > /var/lib/ceph/osd/$osd_id/fsid echo "filestore" > /var/lib/ceph/osd/$osd_id/type
-
创建journal链接
ln -sf /dev/sdb1 /var/lib/ceph/osd/$osd_id/journal
-
初始化数据目录
ceph-osd -i $osd_id --mkfs
-
改变权限
chown -HR ceph:ceph /var/lib/ceph/osd chown -R ceph:ceph /var/log/ceph
-
创建链接
ln -sf /dev/disk/ceph/by-uuid/$osd_uuid /var/lib/ceph/osd/$osd_id/journal
-
取消挂载
umount /var/lib/ceph/osd/$osd_id
-
删除/usr/lib/systemd/system/[email protected]文件中ProtectHome,ProtectSystem,PrivateTmp行
- 开启OSD
systemctl reset-failed [email protected]$osd_id
systemctl start [email protected]$osd_id
systemctl enable [email protected]$osd_id
- 创建OSD
以上是关于Ceph手动搭建ceph集群的主要内容,如果未能解决你的问题,请参考以下文章