• Ceph集群部署


    目录

    一、环境准备

    1、准备4台centos服务器

    2、配置ceph源

    3、配置主机名解析和SSH互信

    4、NTP时间同步

    二、ceph集群部署

    1、安装ceph组件

    2、部署MON集群

    3、部署OSD集群


    一、环境准备

    1、准备4台centos服务器

    主机主机名IP备注
    客户端client192.168.2.10关闭selinux和firewalld
    OSD+MONnode1192.168.2.20

    关闭selinux和firewalld

    添加2块磁盘,sdb和sdc

    OSD+MONnode2192.168.2.30

    关闭selinux和firewalld

    添加2块磁盘,sdb和sdc

    OSD+MONnode3192.168.2.40

    关闭selinux和firewalld

    添加2块磁盘,sdb和sdc

    补充说明:Ceph组件

    • OSDs:存储设备
    • Monitors:集群监控组件
    • RadosGeteway(RGW):对象存储网关
    • MDSs:存放文件系统的元数据(对象存储和块存储不需要该组件)
    • Client:ceph客户端

    本次环境,本次环境需要1台服务器作为客户端,3台服务器作为OSD存储,3台作为Monitor集群监控,为节省服务器,将OSD和Monitor共享部署在一台服务器上,集群拓扑如下:

    如上图,客户端只是通过MON服务器找到map,map记录的是OSD存储信息,当通过map找到OSD存储信息后,client端是直接根据map访问OSD存储服务器的,不会再经过MON服务器,所以不存在MON导致性能瓶颈的问题。 

    2、配置ceph源

    离线ceph iso文件可下载:

    链接:https://pan.baidu.com/s/1BNkLkhiQzXcTaSaWRM8fpA?pwd=1234 
    提取码:1234 
    将ceph iso挂载到本地,会有三个仓库:

     对应配置本地ceph安装源:

    vim /etc/yum.repos.d/ceph.repo
    1. [mon]
    2. name=mon
    3. baseurl=file:///ceph-repo/MON #以实际ceph.iso挂载路径为准,这里以/ceph-repo路径为例
    4. gpgcheck=0
    5. [osd]
    6. name=osd
    7. baseurl=file:///ceph-repo/OSD
    8. gpgcheck=0
    9. [tools]
    10. name=tools
    11. baseurl=file:///ceph-repo/Tools
    12. gpgcheck=0
    yum repolist

     如上图,本地安装源添加成功,4台主机都做如上添加ceph源操作。

    3、配置主机名解析和SSH互信

    (1)配置主机名解析

    1. #4台主机都配置
    2. vim /etc/hosts
    1. 192.168.2.10 client
    2. 192.168.2.20 node1
    3. 192.168.2.30 node2
    4. 192.168.2.40 node3

    (2)配置SSH互信

    非交互生成密钥对

    1. #4台主机都配置
    2. ssh-keygen -f /root/.ssh/id_rsa -N '' #2个单引号

    发布密钥到各节点主机(包括自己)

    1. #4台主机都配置
    2. for i in client node1 node2 node3; do ssh-copy-id $i; done

    4、NTP时间同步

    Client做时间服务器,所有node主机与服务器同步时间

    1. #仅client主机操作
    2. vim /etc/chrony.conf
    1. #新增如下内容
    2. allow 192.168.2.0/24
    3. local stratum 10
    systemctl restart chronyd

    配置node节点,向client进行时间同步

    1. #3台node节点都配置
    2. vim /etc/chrony.conf
    1. #新增如下内容,把默认自带得server删掉
    2. server 192.168.2.10 iburst

     

    systemctl restart chronyd

    二、ceph集群部署

    1、安装ceph组件

    在node1安装ceph-deploy脚本:

    yum install ceph-deploy -y    #ceph-deploy是一个python写的集群部署脚本,这里仅在node1安装即可,后面会通过node1,使用ceph-deploy工具对所有node节点进行配置

    给所有node节点安装ceph所有组件:

    1. #在node1执行即可
    2. #ceph-mon负责监控和绘制地图,ceph-osd负责共享磁盘,ceph-mds作文件系统共享,ceph-radosgw作对象存储共享
    3. for i in node1 node2 node3;do ssh $i "yum install ceph-mon ceph-osd ceph-mds ceph-radosgw -y"; done

    2、部署MON集群

    (1)初始化MON配置(仅node1操作)

    主配置文件为ceph.conf(在ceph-cluster当前目录下)

    1. mkdir ceph-cluster #创建目录,名称可自定义
    2. cd ceph-cluster #下面命令一定要先cd进去再执行,不然会报错
    3. ceph-deploy new node1 node2 node3 #创建主配置文件,new参数是新建集群,后面跟node集群节点

     如上图,会在node1生成如上配置文件。

     如上图,ceph.conf里记录了mon集群节点信息。

    (2)配置并启动ceph-mon服务(仅node1操作)

    (配置文件被拷贝到/etc/ceph/ceph.conf)

    1. cd /root/ceph-cluster/ #一定要先cd到ceph执行脚本目录里再执行下面命令,不然报错
    2. ceph-deploy mon create-initial #会远程所有node主机,拷贝配置文件至/etc/ceph目录,并启动ceph-mon服务

     如上图可以看到,会自动远程所有节点主机,先拷贝主配置文件至/etc/ceph目录,然后启动各节点ceph-mon服务。

    【常见错误】:

    如果提示如下信息:

    [node2][DEBUG] write cluster configuration to /etc/ceph/{cluster}.conf

    [ceph_deploy.config][ERROR] RuntimeError:config file

    /etc/ceph/ceph.conf exists with different content; use --overwrite-conf to overwrite

    解决方式:

    说明目标主机已经有ceph.conf配置文件,而且内容和当前目录的配置文件不一样,如果需要覆盖则使用--overwrite-conf选项

    如:[root@node1 ceph-cluster]# ceph-deploy  --overwrite-conf  mon  create-initial

    ls /etc/ceph

    如上图,其中:ceph.conf是主配置文件, ceph.client.admin.keyring文件存放的是ceph的用户名和密码。

    查看各节点ceph-mon服务启动状态:

    1. #node1查看
    2. systemctl status ceph-mon@node1.service
    3. #node2查看
    4. systemctl status ceph-mon@node2.service
    5. #node3查看
    6. systemctl status ceph-mon@node3.service

    查看整个ceph集群状态:

    ceph -s    #在任何一个node节点执行都可以,-s是status意思

    如下图,集群监控状态目前是error,因为制作了monitor,还没做osd,但是可以看到目前已经有3个节点在monitor集群里:

     

    3、部署OSD集群

    (1)清空磁盘并创建分区表(仅在node1操作)

    1. #以下所有仅在node1操作
    2. cd /root/ceph-cluster/ #所有ceph-deploy操作都要在一开始创建的ceph-cluster目录执行
    3. #清空磁盘,并初始化分区表为GPT格式
    4. ceph-deploy disk zap node1:sdb node1:sdc node2:sdb node2:sdc node3:sdb node3:sdc

    (2)启动OSD服务、共享OSD磁盘(仅在node1操作)

    1. #以下所有仅在node1操作
    2. cd /root/ceph-cluster/ #所有ceph-deploy操作都要在一开始创建的ceph-cluster目录执行
    3. #将sdc作为数据盘共享出去,sdb作为对应缓存盘
    4. ceph-deploy osd create node1:sdc:/dev/sdb node2:sdc:/dev/sdb node3:sdc/dev/sdb
    5. #ceph-deploy后可跟多个参数,也可单独执行,如下:
    6. #ceph-deploy osd create node1:sdc:/dev/sdb
    7. #ceph-deploy osd create node2:sdc:/dev/sdb
    8. #ceph-deploy osd create node3:sdc:/dev/sdb

    常见错误:

    如果提示错误信息:[ceph_deploy][ERROR]RuntimeError:bootstrap-osd keyring not found;run 'gatherkeys'

    解决方案:

    [root@node1 ceph-cluster]#  ceph-deploy gatherkeys node1 node2 node3

    (3)检查ceph集群状态

    ceph  -s    #如下图,状态为HEALTH_OK

    如上图可以看到ceph集群状态,有3个osd(不算缓存盘),3个盘加起来可用容量为60G。 

    如果ceph -s查看状态是"HEALTH_WARN  clock shew detected"字样,表示各节点主机时间不同步,需要同步下时间。

    查看各节点磁盘状态,如下以node1为例:

     查看osd服务器状态:

    1. #以node1为例,ceph-osd@后面跟数字,数字以0开始,具体可以对应上图数据盘sdc1对应的挂载点ceph编号
    2. systemctl status ceph-osd@0.service

     

    查看有几个共享盘:

    ceph osd tree

     

  • 相关阅读:
    厂商征集 | 2023年中国RPA市场洞察研究报告正式启动
    实战纪实 | 某米企业src未授权访问
    报表组件DevExpress Reporting中文教程 - 如何直接在浏览器中生成报表?
    Java之IO打印流
    Ktor vs Spring Boot:哪个框架能帮助你构建更高性能的 Web 应用?
    如何使用AuraDB构建Java微服务
    关于JVM调优的思路
    Leetcode 1769. 移动所有球到每个盒子所需的最小操作数
    java基础15
    实战详解java程序反编译映射的字节码(助记符)
  • 原文地址:https://blog.csdn.net/qq_28903377/article/details/128048601