ceph 清理和手动部署N版

2021-10-22 10:44:30 浏览数 (1)

卸载osd

df | grep ceph | awk '{print $NF}' | xargs -n1 umount

删除ceph

rm -rf /var/lib/ceph

rm -rf /var/log/ceph

rm -rf /etc/ceph/*

systemctl stop ceph-radosgw.target

systemctl stop ceph-crash.service

systemctl status ceph-crash.service

rm -rf /var/log/radosgw

卸载ceph rpm包

rpm -qa | grep ceph | xargs -n1 yum -y remove

rm /etc/yum.repos.d/ceph*.repo -f

rpm -qa | grep rados | xargs -n1 yum remove -y

yum remove -y python-rados

5.1 单台 Ceph 节点宕机处理步骤

登陆 ceph monitor 节点,查询 ceph 状态:

ceph health detail

将故障节点上的所有 osd 设置成 out,该步骤会触发数据 recovery, 需要等待数据迁移完成, 同时观察虚拟机是否正常:

ceph osd out osd_id

从 crushmap 将 osd 移除,该步骤会触发数据 reblance,等待数据迁移完成,同时观察虚拟机是否正常:

ceph osd crush remove osd_name

删除 osd 的认证: ceph auth del osd_name

删除 osd :ceph osd rm osd_id

清理lvm残留, 卸载osd重新启用盘时使用。

lvdisplay | grep "LV Path" | awk '{print $NF}' | xargs -i lvremove -f {}

vgdisplay | grep "VG Name" | awk '{print $NF}' | xargs -i vgremove {}

pvremove /dev/sd[b-j]

ceph-volume lvm list

ls /dev/mapper/

systemctl stop ceph-osd@8.service

umount -l

umount -l /var/lib/ceph/osd/ceph-8

ceph yum源

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

[ceph]

name=ceph

baseurl=http://mirrors.aliyun.com/ceph/rpm-nautilus/el7/x86_64/

gpgcheck=0

[ceph-noarch]

name=cephnoarch

baseurl=http://mirrors.aliyun.com/ceph/rpm-nautilus/el7/noarch/

gpgcheck=0

scp /etc/yum.repos.d/ceph.repo node2:/etc/yum.repos.d/

scp /etc/yum.repos.d/ceph.repo node3:/etc/yum.repos.d/

scp /etc/yum.repos.d/ceph.repo node4:/etc/yum.repos.d/

scp /etc/yum.repos.d/ceph.repo node5:/etc/yum.repos.d/

scp /etc/yum.repos.d/ceph.repo node6:/etc/yum.repos.d/

yum clean all

yum makecache

1. 安装

生成fsid

uuidgen

生成秘钥环

ceph-authtool --create-keyring /tmp/ceph.mon.keyring --gen-key -n mon. --cap mon 'allow *'

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 *'

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-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

chown ceph:ceph /tmp/ceph.mon.keyring

monmaptool --create --add node1 10.33.132.50 --add node3 10.33.132.52 --add node4 10.33.132.53 --fsid a5303bea-c6ba-4690-9fb2-49ed046be391 /tmp/monmap

monmaptool --print /tmp/monmap

创建默认数据目录

mkdir /var/lib/ceph/mon/ceph-node1

chmod 777 -R /var/lib/ceph/mon/ceph-node1

分发配置文件, 启动mon节点

scp /etc/ceph/ceph.conf node2:/etc/ceph/ceph.conf

scp /etc/ceph/ceph.conf node3:/etc/ceph/ceph.conf

scp /etc/ceph/ceph.conf node4:/etc/ceph/ceph.conf

scp /etc/ceph/ceph.conf node5:/etc/ceph/ceph.conf

scp /etc/ceph/ceph.conf node6:/etc/ceph/ceph.conf

scp /tmp/ceph.mon.keyring node3:/tmp/ceph.mon.keyring

scp /etc/ceph/ceph.client.admin.keyring node3:/etc/ceph/ceph.client.admin.keyring

scp /tmp/monmap node3:/tmp/monmap

scp /tmp/ceph.mon.keyring node4:/tmp/ceph.mon.keyring

scp /etc/ceph/ceph.client.admin.keyring node4:/etc/ceph/ceph.client.admin.keyring

scp /tmp/monmap node4:/tmp/monmap

mkdir /var/lib/ceph/mon/ceph-node3

chmod 777 -R /var/lib/ceph/mon/ceph-node3

mkdir /var/lib/ceph/mon/ceph-node4

chmod 777 -R /var/lib/ceph/mon/ceph-node4

ceph-mon --mkfs -i node3 --monmap /tmp/monmap --keyring /tmp/ceph.mon.keyring

ceph-mon --mkfs -i node4 --monmap /tmp/monmap --keyring /tmp/ceph.mon.keyring

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

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

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

systemctl start ceph-mon@node1 && systemctl enable ceph-mon@node1

systemctl status ceph-mon@node1

systemctl start ceph-mon@node3 && systemctl enable ceph-mon@node3

systemctl status ceph-mon@node1

systemctl start ceph-mon@node4 && systemctl enable ceph-mon@node4

systemctl status ceph-mon@node1

ceph -s 查看状态

mon is allowing insecure global_id reclaim

ceph config set mon auth_allow_insecure_global_id_reclaim false

关闭不安全的回收模式

3 monitors have not enabled msgr2

ceph mon enable-msgr2

创建MGR

在运行ceph-mon守护程序的每个节点上,还应该设置一个ceph-mgr守护程序。

创建密钥目录

所有mgr节点都要执行

sudo -u ceph mkdir /var/lib/ceph/mgr/ceph-`hostname -s`

cd /var/lib/ceph/mgr/ceph-`hostname -s`

ceph auth get-or-create mgr.`hostname -s` mon 'allow profile mgr' osd 'allow *' mds 'allow *' > keyring

systemctl enable ceph-mgr@`hostname -s` && systemctl start ceph-mgr@`hostname -s`

查看osd fsid,看下是否已经存在

ceph-volume lvm list

# 准备osd

ceph-volume lvm prepare --data /dev/sdb

ceph-volume lvm prepare --data /dev/sdc

ceph-volume lvm prepare --data /dev/sdd

ceph-volume lvm prepare --data /dev/sde

ceph-volume lvm prepare --data /dev/sdf

ceph-volume lvm prepare --data /dev/sdg

ceph-volume lvm prepare --data /dev/sdh

ceph-volume lvm prepare --data /dev/sdi

ceph-volume lvm prepare --data /dev/sdj

osd fsid 0d839504-effc-4dcd-9afc-28f4f4d31764

osd id 0

devices /dev/sdb

osd fsid 4b57cd50-5566-449d-bdb8-a7de11034fea

osd id 1

devices /dev/sdc

osd fsid 2f3722fe-eee8-4ad5-a3e8-48b6f5f344e8

osd id 2

devices /dev/sdd

osd fsid 1ff13481-4c5e-43f2-9d0a-50f7d5a78bb9

osd id 3

devices /dev/sde

osd fsid d38af12c-4e0f-4810-a658-e4c062b25908

osd id 4

devices /dev/sdf

osd fsid 24d8938c-10a3-4ed6-9d70-366c55ae6152

osd id 5

devices /dev/sdg

osd fsid 02726643-954c-4744-ad7b-bdac475c0e9d

osd id 6

devices /dev/sdh

osd fsid 5ab11637-fd8b-4e99-b7e0-27288f74574f

osd id 7

devices /dev/sdi

osd fsid 2c57b012-24b9-485a-89fe-5b3418051349

osd id 8

devices /dev/sdj

拷贝秘钥文件到其他主机

scp /var/lib/ceph/bootstrap-osd/ceph.keyring node2:/var/lib/ceph/bootstrap-osd/ceph.keyring

scp /var/lib/ceph/bootstrap-osd/ceph.keyring node3:/var/lib/ceph/bootstrap-osd/ceph.keyring

scp /var/lib/ceph/bootstrap-osd/ceph.keyring node4:/var/lib/ceph/bootstrap-osd/ceph.keyring

scp /var/lib/ceph/bootstrap-osd/ceph.keyring node5:/var/lib/ceph/bootstrap-osd/ceph.keyring

scp /var/lib/ceph/bootstrap-osd/ceph.keyring node6:/var/lib/ceph/bootstrap-osd/ceph.keyring

# 激活osd, 查看没问题复制命令执行

ceph-volume lvm list | egrep "osd id|osd fsid" | sed '$!N;s/n/t/' | awk '{print $NF," ",$3}' | xargs -i echo ceph-volume lvm activate {}

pool 3 '.rgw.root' replicated size 3 min_size 2 crush_rule 0 object_hash rjenkins pg_num 64 pgp_num 64 autoscale_mode on last_change 155 flags hashpspool,creating stripe_width 0

pool 1 '.rgw.root' replicated size 3 min_size 2 crush_rule 1 object_hash rjenkins pg_num 64 pgp_num 64 last_change 28780 flags hashpspool stripe_width 0 expected_num_objects 1 application rgw

pool 120 '.rgw.root' replicated size 3 min_size 2 crush_rule 1 object_hash rjenkins pg_num 64 pgp_num 64 last_change 28780 flags hashpspool stripe_width 0 expected_num_objects 1 application rgw

pool 121 'default.rgw.control' replicated size 3 min_size 2 crush_rule 1 object_hash rjenkins pg_num 64 pgp_num 64 last_change 28780 flags hashpspool stripe_width 0 expected_num_objects 1 application rgw

pool 122 'default.rgw.meta' replicated size 3 min_size 2 crush_rule 1 object_hash rjenkins pg_num 256 pgp_num 256 last_change 28780 flags hashpspool stripe_width 0 expected_num_objects 1 application rgw

pool 123 'default.rgw.log' replicated size 3 min_size 2 crush_rule 1 object_hash rjenkins pg_num 64 pgp_num 64 last_change 28780 flags hashpspool stripe_width 0 expected_num_objects 1 application rgw

pool 124 'default.rgw.buckets.index' replicated size 3 min_size 1 crush_rule 1 object_hash rjenkins pg_num 512 pgp_num 512 last_change 30441 flags hashpspool stripe_width 0 expected_num_objects 1 application rgw

pool 125 'default.rgw.buckets.data' replicated size 3 min_size 2 crush_rule 0 object_hash rjenkins pg_num 10240 pgp_num 10240 last_change 9116 flags hashpspool stripe_width 0 application rgw

pool 126 'default.rgw.buckets.non-ec' replicated size 3 min_size 2 crush_rule 1 object_hash rjenkins pg_num 64 pgp_num 64 last_change 28780 flags hashpspool stripe_width 0 expected_num_objects 1 application rgw

pool 1 '.rgw.root' replicated size 3 min_size 2 crush_rule 1 object_hash rjenkins pg_num 64 pgp_num 64 autoscale_mode warn last_change 233 flags hashpspool stripe_width 0 application rgw

pool 2 'default.rgw.control' replicated size 3 min_size 2 crush_rule 1 object_hash rjenkins pg_num 64 pgp_num 64 autoscale_mode warn last_change 234 flags hashpspool stripe_width 0 application rgw

pool 3 'default.rgw.meta' replicated size 3 min_size 2 crush_rule 1 object_hash rjenkins pg_num 256 pgp_num 256 autoscale_mode warn last_change 235 flags hashpspool stripe_width 0 application rgw

pool 4 'default.rgw.log' replicated size 3 min_size 2 crush_rule 1 object_hash rjenkins pg_num 64 pgp_num 64 autoscale_mode warn last_change 236 flags hashpspool stripe_width 0 application rgw

pool 5 'default.rgw.buckets.index' replicated size 3 min_size 2 crush_rule 1 object_hash rjenkins pg_num 512 pgp_num 512 autoscale_mode warn last_change 237 flags hashpspool stripe_width 0 application rgw

pool 6 'default.rgw.buckets.data' replicated size 3 min_size 2 crush_rule 0 object_hash rjenkins pg_num 8192 pgp_num 8192 autoscale_mode warn last_change 238 lfor 0/0/222 flags hashpspool stripe_width 0 application rgw

pool 7 'default.rgw.buckets.non-ec' replicated size 3 min_size 2 crush_rule 1 object_hash rjenkins pg_num 64 pgp_num 64 autoscale_mode warn last_change 239 flags hashpspool stripe_width 0 application rgw

# 参考

https://blog.51cto.com/yuweibing/2139084

创建host桶

for i in {1..6};do ceph osd crush add-bucket ssd-node$i host;done

for i in {1..6};do ceph osd crush add-bucket hdd-node$i host;done

创建ssd 根桶

ceph osd crush add-bucket ssd root

移动host桶 到根桶

for i in {1..6};do ceph osd crush move hdd-node$i root=default;done

for i in {1..6};do ceph osd crush move ssd-node$i root=ssd;done

移动主机到指定的桶中

osd 中的ssd盘

ceph-volume lvm list | egrep "sdb|==="

ssd osd.0 osd.9 osd.18 osd.27 osd.36 osd.45

ceph osd crush set osd.0 0.894 host=ssd-node1

ceph osd crush set osd.9 0.894 host=ssd-node2

ceph osd crush set osd.18 0.894 host=ssd-node3

ceph osd crush set osd.27 0.894 host=ssd-node4

ceph osd crush set osd.36 0.894 host=ssd-node5

ceph osd crush set osd.45 0.894 host=ssd-node6

# 修改磁盘类型为ssd

ceph osd crush rm-device-class 0

ceph osd crush set-device-class ssd 0 9 18 27 36 45

for((i=1;i<=8;i ));do ceph osd crush set osd."$i" 7.3 host=hdd-node1; done

for((i=10;i<=17;i ));do ceph osd crush set osd."$i" 7.3 host=hdd-node2; done

for((i=19;i<=26;i ));do ceph osd crush set osd."$i" 7.3 host=hdd-node3; done

for((i=28;i<=35;i ));do ceph osd crush set osd."$i" 7.3 host=hdd-node4; done

for((i=37;i<=44;i ));do ceph osd crush set osd."$i" 7.3 host=hdd-node5; done

for((i=46;i<=53;i ));do ceph osd crush set osd."$i" 7.3 host=hdd-node6; done

安装 radosrgw

yum install ceph-radosgw -y

# 创建pool

ceph osd pool create .rgw.root 64 64

ceph osd pool create default.rgw.control 64 64

ceph osd pool create default.rgw.meta 256 256

ceph osd pool create default.rgw.log 64 64

ceph osd pool create default.rgw.buckets.index 512 512

ceph osd pool create default.rgw.buckets.data 8192 8192

ceph osd pool create default.rgw.buckets.non-ec 64 64

创建crush

ceph osd crush rule create-replicated root-ssd ssd host

指定pool crush, 除了data都指向ssd

ceph osd pool ls | grep -v data | xargs -i ceph osd pool set {} crush_rule root-ssd

# 制定application 为rgw

ceph osd pool ls | xargs -i ceph osd pool application enable {} rgw

查看crush 有哪些变化

ceph osd getcrushmap -o crushmap

crushtool -d crushmap -o crushmap

cat crushmap

# 新建RADOSGW用户和keyring

ceph-authtool --create-keyring /etc/ceph/ceph.client.radosgw.keyring

chown ceph:ceph /etc/ceph/ceph.client.radosgw.keyring

生成ceph-radosgw服务对应的用户和key

ceph-authtool /etc/ceph/ceph.client.radosgw.keyring -n client.rgw.node1 --gen-key

ceph-authtool /etc/ceph/ceph.client.radosgw.keyring -n client.rgw.node2 --gen-key

ceph-authtool /etc/ceph/ceph.client.radosgw.keyring -n client.rgw.node3 --gen-key

ceph-authtool /etc/ceph/ceph.client.radosgw.keyring -n client.rgw.node4 --gen-key

ceph-authtool /etc/ceph/ceph.client.radosgw.keyring -n client.rgw.node5 --gen-key

ceph-authtool /etc/ceph/ceph.client.radosgw.keyring -n client.rgw.node6 --gen-key

添加用户访问权限

ceph-authtool -n client.rgw.node1 --cap osd 'allow rwx' --cap mon 'allow rwx' /etc/ceph/ceph.client.radosgw.keyring

ceph-authtool -n client.rgw.node2 --cap osd 'allow rwx' --cap mon 'allow rwx' /etc/ceph/ceph.client.radosgw.keyring

ceph-authtool -n client.rgw.node3 --cap osd 'allow rwx' --cap mon 'allow rwx' /etc/ceph/ceph.client.radosgw.keyring

ceph-authtool -n client.rgw.node4 --cap osd 'allow rwx' --cap mon 'allow rwx' /etc/ceph/ceph.client.radosgw.keyring

ceph-authtool -n client.rgw.node5 --cap osd 'allow rwx' --cap mon 'allow rwx' /etc/ceph/ceph.client.radosgw.keyring

ceph-authtool -n client.rgw.node6 --cap osd 'allow rwx' --cap mon 'allow rwx' /etc/ceph/ceph.client.radosgw.keyring

将keyring导入集群中

ceph -k /etc/ceph/ceph.client.admin.keyring auth add client.rgw.node1 -i /etc/ceph/ceph.client.radosgw.keyring

ceph -k /etc/ceph/ceph.client.admin.keyring auth add client.rgw.node2 -i /etc/ceph/ceph.client.radosgw.keyring

ceph -k /etc/ceph/ceph.client.admin.keyring auth add client.rgw.node3 -i /etc/ceph/ceph.client.radosgw.keyring

ceph -k /etc/ceph/ceph.client.admin.keyring auth add client.rgw.node4 -i /etc/ceph/ceph.client.radosgw.keyring

ceph -k /etc/ceph/ceph.client.admin.keyring auth add client.rgw.node5 -i /etc/ceph/ceph.client.radosgw.keyring

ceph -k /etc/ceph/ceph.client.admin.keyring auth add client.rgw.node6 -i /etc/ceph/ceph.client.radosgw.keyring

编辑配置文件

cat >> /etc/ceph/ceph.conf << EOF

[client.rgw.node1]

host=node1

keyring=/etc/ceph/ceph.client.radosgw.keyring

log file=/var/log/radosgw/client.radosgw.gateway.log

rgw_frontends = civetweb port=8080 num_threads=2048

[client.rgw.node2]

host=node2

keyring=/etc/ceph/ceph.client.radosgw.keyring

log file=/var/log/radosgw/client.radosgw.gateway.log

rgw_frontends = civetweb port=8080 num_threads=2048

[client.rgw.node3]

host=node3

keyring=/etc/ceph/ceph.client.radosgw.keyring

log file=/var/log/radosgw/client.radosgw.gateway.log

rgw_frontends = civetweb port=8080 num_threads=2048

[client.rgw.node4]

host=node4

keyring=/etc/ceph/ceph.client.radosgw.keyring

log file=/var/log/radosgw/client.radosgw.gateway.log

rgw_frontends = civetweb port=8080 num_threads=2048

[client.rgw.node5]

host=node5

keyring=/etc/ceph/ceph.client.radosgw.keyring

log file=/var/log/radosgw/client.radosgw.gateway.log

rgw_frontends = civetweb port=8080 num_threads=2048

[client.rgw.node6]

host=node6

keyring=/etc/ceph/ceph.client.radosgw.keyring

log file=/var/log/radosgw/client.radosgw.gateway.log

rgw_frontends = civetweb port=8080 num_threads=2048

EOF

创建日志目录

mkdir /var/log/radosgw

chown ceph:ceph /var/log/radosgw

拷贝keyring、 ceph.conf到其他主机

scp /etc/ceph/ceph.client.radosgw.keyring node2:/etc/ceph/ceph.client.radosgw.keyring

scp /etc/ceph/ceph.client.radosgw.keyring node3:/etc/ceph/ceph.client.radosgw.keyring

scp /etc/ceph/ceph.client.radosgw.keyring node4:/etc/ceph/ceph.client.radosgw.keyring

scp /etc/ceph/ceph.client.radosgw.keyring node5:/etc/ceph/ceph.client.radosgw.keyring

scp /etc/ceph/ceph.client.radosgw.keyring node6:/etc/ceph/ceph.client.radosgw.keyring

scp /etc/ceph/ceph.conf node2:/etc/ceph/ceph.conf

scp /etc/ceph/ceph.conf node3:/etc/ceph/ceph.conf

scp /etc/ceph/ceph.conf node4:/etc/ceph/ceph.conf

scp /etc/ceph/ceph.conf node5:/etc/ceph/ceph.conf

scp /etc/ceph/ceph.conf node6:/etc/ceph/ceph.conf

其他主机执行修改属组

chown ceph:ceph /etc/ceph/ceph.client.radosgw.keyring

创建目录并授权

mkdir /var/log/radosgw

chown ceph:ceph /var/log/radosgw

启动rgw服务

systemctl start ceph-radosgw@rgw.`hostname -s` && systemctl enable ceph-radosgw@rgw.`hostname -s`

测试rgw可用性

{

"user_id": "cltx_test",

"display_name": "cltx_test for php user",

"email": "",

"suspended": 0,

"max_buckets": 1000,

"subusers": [],

"keys": [

{

"user": "cltx_test",

"access_key": "VOLTH06Z29O7N0YEAVBR",

"secret_key": "WWljAH2UhwjFCfKc0vgfgbd11eif9lAjAvLwr8Je"

}

],

"swift_keys": [],

"caps": [],

"op_mask": "read, write, delete",

"default_placement": "",

"default_storage_class": "",

"placement_tags": [],

"bucket_quota": {

"enabled": false,

"check_on_raw": false,

"max_size": -1,

"max_size_kb": 0,

"max_objects": -1

},

"user_quota": {

"enabled": false,

"check_on_raw": false,

"max_size": -1,

"max_size_kb": 0,

"max_objects": -1

},

"temp_url_keys": [],

"type": "rgw",

"mfa_ids": []

}

boto3 压测

rados bench 30 -b 4K -t 32 write --no-cleanup -p test 压测,pool name test

dashboard 安装

1. yum install ceph-mgr-dashboard

2. ceph mgr module enable dashboard

3. 创建证书

ceph dashboard create-self-signed-cert

4. 创建用户名密码

ceph dashboard set-login-credentials admin admin

5.但是会报错 Error EINVAL: Please specify the file containing the password/secret with "-i" option.

把密码写入到 /etc/ceph/dashboard_passwd.txt,名字随便写

6. 访问dashbord

ceph mgr services

0 人点赞