ceph集群搭建

网友投稿 473 2022-09-08

ceph集群搭建

Ceph集群搭建

​​​

存储数据​

集群监视​

分担mon的部分功能​

存储池​

存储池中pg​

Librados (rados的访问接口)​

radowgw ​

rdb librbd​

cephfs cephfs​

rados api​

Ceph集群搭建​

ceph集群规划​

Ceph-Mon:3个+Ceph-Mgr:2个+Ceph-Mds:2个+​

Ceph-rgw:3个+​

ip

主机名

角色

192.168.1.26

K8s-master

ceph-deploy ceph-mon1 ceph-mgr1 osd1 rgw1 mds01

10.206.0.10

ceph-mon1

ceph-mon2 ceph-mgr2 osd2 rgw2 mds02

10.206.0.13


ceph-mon1

ceph-mon3 ceph-mgr3 osd3 rgw3

机器节点初始化​

hostnamectl set-hostname ceph-mon1 ​

vi /etc/hosts​

配置yum源​

yum install -y yum-utils && sudo yum-config-manager --add-repo && sudo yum install --nogpgcheck -y epel-release && sudo rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7 && sudo rm /etc/yum.repos.d/dl.fedoraproject.org*​

yum -y install wget net-tools nfs-utils lrzsz gcc gcc-c++ make cmake libxml2-devel openssl-devel curl curl-devel unzip sudo ntp libaio-devel wget vim ncurses-devel autoconf automake zlib-devel python-devel epel-release lrzsz openssh-server​

yum install deltarpm –y​

#vi /etc/yum.repos.d/ceph.repo​

[Ceph]​

name=Ceph packages for $basearch​

baseurl=noarch packages​

baseurl=source packages​

baseurl=cephadm && echo "cephadm"|passwd --stdin cephadm​

echo "cephadm ALL = (root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/cephadm​

chmod 0440 /etc/sudoers.d/cephadm​

在管理节点上以cephadm上ssh免密登录​

ssh-keygen -t rsa 部署节点执行​

su cephadm​

cd .ssh​

for i in k8s-master01 k8s-master02 k8s-master03 k8s-node01 k8s-node02;do ssh-copy-id -i ~/.ssh/id_rsa.pub $i;done​

管理节点安装ceph-deploy​

yum install ceph-deploy pthon-setuptools python-subprocess32​

管理节点ceph-deploy命令安装mon​

Mon节点初始化相关配置​

在管理节点以cephadm用户运行​

su - cephadm ​

mkdir ceph-cluster && cd ceph-cluster​

ceph-deploy new ceph-mon1--在管理节点以cephadm连接到mon​

安装ceph包​

启动mon命令​

生成ceph.conf配置文件​

[cephadm@ceph-mon1 ceph-cluster]$ ls -ltr​

ceph.mon.keyring​

ceph-deploy-ceph.log​

ceph.conf​

在管理节点以cephadm用户ceph-deploy安装ceph软件​

--no-adjust-repos不调整ceph配置安装集群​

节点提前安装​

yum install ceph radosgw -y​

ceph-deploy install --no-adjust-repos ceph-mon1 ceph-mon2 ceph-mon3 ceph-osd4​

管理节点ceph-deploy初始化mon节点​

启动和激活mon节点,本地根据ceph文件生成秘钥​

ceph-deploy mon create-initial-----在管理节点以cephadm用户运行创建秘钥​

ceph-deply管理节点以将配置和client.admin秘钥环推送到其他所有的集群节点​

ceph-deploy admin ceph-mon1 ceph-mon2 ceph-mon3 ceph-osd4​

在所有节点以root的身份运行​

setfacl -m u:cephadm:r /etc/ceph/ceph.client.admin.keyring​

管理节点ceph-deploy安装Mgr​

Ceph必须要有一个mgr节点,所以我们在管理节点执行:​

su - cephadm​

ceph-deploy mgr create ceph-mon1拷贝文件到/etc/ceph/​

扩容mgr ceph-deploy mgr create ceph-mon2 ceph-mon-----添加mgr(需要添加的节点机器名)​

集群ceph -s ​

ceph集群添加osd节点​

查看​

ceph-deploy disk list ceph-mon1 ceph-mon2 ceph-mon3​

管理节点​

清空osd节点上用来作为osd设备的磁盘​

#要以cephadm用户在~/ceph-cluster/目录下执行 我这边的用来做存储的挂载盘都是dev/sdb 可以通过lsblk查看​

清空osd节点上用来作为osd设备的磁盘​

ceph-deploy disk zap ceph-mon1 /dev/vdb ​

ceph-deploy disk zap ceph-mon2 /dev/vdb ​

ceph-deploy disk zap ceph-mon3 /dev/vdb ​

ceph-deploy disk zap ceph-osd4 /dev/vdb​

创建OSD​

ceph-deploy osd create ceph-mon1 --data /dev/vdb​

ceph-deploy osd create ceph-mon2 --data /dev/vdb​

ceph-deploy osd create ceph-mon3 --data /dev/vdb​

ceph-deploy osd create ceph-osd4 --data /dev/vdb​

扩展Ceph集群​

添加mon节点​

管理节点上修改config​

fsid = d6e4b992-91d4-466b-a076-e6680f34f6e4​

mon_initial_members = ceph-mon1​

mon_host = 192.168.10.152,192.168.10.153,192.168.10.154​

auth_cluster_required = cephx​

auth_service_required = cephx​

auth_client_required = cephx​

public_network = 192.168.10.0/24​

推送​

ceph-deploy --overwrite-conf config push ceph-mon1 ceph-mon2 ceph-mon3 ceph-osd4​

ceph-deploy mon add ceph-mon2​

ceph-deploy mon add ceph-mon3​

ceph quorum_status --format json-pretty​

添加mgr​

ceph-deploy mgr create ceph-mon2 ceph-mon​

添加OSD​

ceph-deploy osd create ceph-mon1 --data /dev/vdb​

ceph-deploy osd create ceph-mon2 --data /dev/vdb​

ceph-deploy osd create ceph-mon3 --data /dev/vdb​

ceph-deploy osd create ceph-osd4 --data /dev/vdb​

安装mds​

su - cephadm​

cd ~/ceph-cluster/​

ceph-deploy mds create ceph-mon2 ceph-mon3​

安装rgw​

在admin节点安装Ceph Object Gateway包到client-node节点​

ceph-deploy install --rgw ceph-mon1 ceph-mon2 ceph-mon3​

修改配置文件并创建Ceph Object Gateway实例​

修改ceph.conf文件​

通过修改ceph.conf配置文件修改默认端口,添加标题为 [client.rgw.]的部分,​

用ceph client节点hostname(hostname -s)替换.​

如果节点name是client-node,那么在[global]部分之后,添加如下:​

[client.rgw.client-node]​

rgw_frontends = "civetweb port=80"​

注意:​

确保在rgw_frontends键/值对中的 端口=端口号 之间不留空白,​

如果您打算使用端口80,请确保Apache服务器未运行,否则将与Civetweb发生冲突。在这种情况下,我们建议删除Apache。​

推送配置​

ceph-deploy --overwrite-conf config push ceph-mon1 ceph-mon2 ceph-mon3 ceph-osd4​

创建Ceph Object Gateway实例​

ceph-deploy rgw create ceph-mon1 ceph-mon2 ceph-mon3​

Ceph卸载​

清除ceph存储​

清除安装包​

[cephuser@ceph-admin ~]$ ceph-deploy purge ceph1 ceph2 ceph3​

清除配置信息​

[cephuser@ceph-admin ~]$ ceph-deploy purgedata ceph1 ceph2 ceph3​

[cephuser@ceph-admin ~]$ ceph-deploy forgetkeys​

每个节点删除残留的配置文件​

[cephuser@ceph-admin ~]$ sudo rm -rf /var/lib/ceph/osd/*​

[cephuser@ceph-admin ~]$ sudo rm -rf /var/lib/ceph/mon/*​

[cephuser@ceph-admin ~]$ sudo rm -rf /var/lib/ceph/mds/*​

[cephuser@ceph-admin ~]$ sudo rm -rf /var/lib/ceph/bootstrap-mds/*​

[cephuser@ceph-admin ~]$ sudo rm -rf /var/lib/ceph/bootstrap-osd/*​

[cephuser@ceph-admin ~]$ sudo rm -rf /var/lib/ceph/bootstrap-mon/*​

[cephuser@ceph-admin ~]$ sudo rm -rf /var/lib/ceph/tmp/*​

[cephuser@ceph-admin ~]$ sudo rm -rf /etc/ceph/*​

[cephuser@ceph-admin ~]$ sudo rm -rf /var/run/ceph/*​

Ceph使用​

Ceph常用维护命令​

ceph --help ​

Rbd操作​

创建存储池​

ceph osd pool create testpool(pool名称) 128(pg数量)​

通常在创建pool之前,需要覆盖默认的pg_num,​

官方推荐:​

若少于5个OSD, 设置pg_num为128。​

5~10个OSD,设置pg_num为512。​

10~50个OSD,设置pg_num为4096。​

超过50个OSD,可以参考pgcalc计算。​

查看存储池​

ceph osd lspools ​

创建rbd​

rbd create testpool/myimage --image-feature layering --size 1024​

testpool(pool名称)/myimage(image名)​

查看rdb​

rdb list ​

rbd info testpool/myimage​

映射块设备到自己机器​

rbd map testpool/myimage​

客户端服务器安装cephfs​

先修改/etc/yum.repos.d/ceph.repo如下​

[Ceph]​

name=Ceph packages for $basearch​

baseurl=noarch packages​

baseurl=source packages​

baseurl=stop firewalld.service​

systemctl disable firewalld.service​

setenforce 0​

sed -i "s/^SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config​

安装ceph-fuse​

yum -y install epel-release​

yum clean all​

yum repolist​

yum -y install ceph-fuse​

复制ceph.client.admin.keyring和ceph.conf 到本机的/etc/ceph下 这里由于96没有改host就用了ip​

修改/etc/systemd/system/ceph-fuse.service 如下​

[root@localhost install]# cat /etc/systemd/system/ceph-fuse.service ​

[Unit]​

Descriptinotallow=Ceph FUSE client​

After=network-online.target local-fs.target time-sync.target​

Wants=network-online.target local-fs.target time-sync.target​

Cnotallow=umount.target​

PartOf=ceph-fuse.target​

[Service]​

Envirnotallow=-/etc/sysconfig/ceph​

Envirnotallow=CLUSTER=ceph​

#ExecStart=/usr/bin/ceph-fuse -f --cluster ${CLUSTER} %I​

ExecStart=/usr/bin/ceph-fuse -f -o rw,noexec,nosuid,nodev /mnt​

TasksMax=infinity​

Restart=on-failure​

StartLimitInterval=30min​

StartLimitBurst=3​

[Install]​

WantedBy=ceph-fuse.target​

重启服务​

systemctl start ceph-fuse.service​

systemctl status ceph-fuse.service​

mkdir -p /mnt/mycephfs2​

ceph-fuse -m 192.168.10.152:6789 /mnt/mycephfs2​

在/mnt下创建一个test文件​

在/mnt下创建一个test文件​

echo "123" > /mnt/mycephfs2/123abc.txt​

测试原来上传下载功能不小心手残没打tmp后没加/​

[root@localhost mycephfs2]# rados put 123abc.txt /mnt/mycephfs2/123abc.txt --pool=cephfs_data​

[root@localhost mycephfs2]# rados get 123abc.txt /tmp123abc.txt -p cephfs_data​

[root@localhost mycephfs2]# ll​

总用量​

-rw-r--r--. 1 root root 4 9月 7 16:40 123abc.txt​

[root@localhost mycephfs2]# cat /tmp123abc.txt ​

123​

卸载挂载块​

[root@localhost mycephfs2]# fusermount -zu /mnt/​

mycephfs/ mycephfs2/ test ​

[root@localhost mycephfs2]# fusermount -zu /mnt/mycephfs2​

[root@localhost mycephfs2]# df -h​

文件系统 容量已用可用已用% 挂载点​

/dev/mapper/centos-root 50G 19G 32G 37% /​

devtmpfs 1.9G 0 1.9G 0% /dev​

tmpfs 1.9G 0 1.9G 0% /dev/shm​

tmpfs 1.9G 8.9M 1.9G 1% /run​

tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup​

/dev/sda1 1014M 145M 870M 15% /boot​

/dev/mapper/centos-home 46G 33M 46G 1% /home​

tmpfs 379M 0 379M 0% /run/user/0​

文件被存到了ceph中 卸载挂载块文件已经不存在​

[root@localhost mycephfs2]# cd /mnt/mycephfs2/​

[root@localhost mycephfs2]# ll​

总用量​

再次下载文件测试​

[root@localhost mycephfs2]# rados get 123abc.txt /tmp/123abc.txt -p cephfs_data​

[root@localhost mycephfs2]# cat /tmp/123abc.txt ​

123​

Ceph-cephfs​

Ceph文件系统至少需要两个RADOS池,一个用于数据,一个用于元数据​

创建cephfs​

查看mds服务是否启用​

ceph mds stat​

创建数据pool和Metadata池​

ceph osd pool create cephfs_data 128 ​

ceph osd pool create cephfs_metadata 128​

启用pool​

ceph fs new cephfs cephfs_metadata cephfs_data ​

查看cephfs​

ceph fs ls​

挂载cephfs​

kernel driver挂载​

注意:检查是否启用cephx认证方法,如果值为none为禁用,cephx为启用​

关闭认证情况下挂载​

mount -t ceph 192.168.0.1:6789:/ /mnt/wyl​

cat ceph.client.admin.keyring​

mount -t ceph xxx.xxx.xxx.xxx:6789:/ /wyl -o name=admin,secret=xxxx​

fuse挂载​

安装挂载工具​

yum -y install ceph-fuse ceph​

将存储节点的admin秘钥拷贝到挂载客户端​

ceph-authtool -p /etc/ceph/ceph.client.admin.keyring > admin.key​

chmod 600 admin.key​

挂载​

mount -t ceph node1:6789:/ /mnt -o name=admin,secretfile=admin.key​

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:全媒派:打造无比真实网红脸,持续进步的AI换脸术将如何影响内容业?
下一篇:karmada 调度策略想要实现,这三个组件必须了解 | K8S Internals 系列第 4 期
相关文章

 发表评论

暂时没有评论,来抢沙发吧~