Loongnix单机部署Ceph(LoongArch架构、Ceph N版、手动部署MON、OSD、MGR、Dashboard服务)

基础环境信息

  • CPU:龙芯3C5000L×2
  • 内存:128G
  • 硬盘
    • 系统盘:一块512G的NVME的SSD
    • 数据盘:三块16T的HDD
  • 操作系统版本:Loongnix 8.4
  • Ceph版本:Ceph 14.2.21(Nautilus)

Ceph集群角色

主机名IP地址Ceph角色
ceph0110.40.64.191mon×1、mgr×1、osd×3

环境预配置

  1. 配置主机名称

    hostnamectl set-hostname ceph01
    bash
    
  2. 关闭防火墙和selinux

    systemctl disable --now firewalld
    setenforce 0
    sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
    
  3. 配置时间同步

    yum install -y chrony
    sed -i '/^pool/d' /etc/chrony.conf
    sed -i '/^server/d' /etc/chrony.conf
    echo "pool ntp.aliyun.com iburst" >> /etc/chrony.conf
    systemctl restart chronyd.service && systemctl enable chronyd.service
    timedatectl status
    chronyc sources
    
  4. 安装Ceph源N版

    yum install -y loongnix-release-ceph-nautilus
    

部署ceph mon服务

  1. 安装ceph-mon服务程序

    yum install -y ceph-mon
    
  2. 初始化mon服务

    生成uuid

    uuidgen
    468e23e9-c98d-48f2-9432-9b17774613c7
    

    创建Ceph集群配置文件

    vim /etc/ceph/ceph.conf
    
    fsid = 468e23e9-c98d-48f2-9432-9b17774613c7
    mon_initial_members = ceph01 
    mon_host = 10.40.64.191 
    public_network = 10.40.64.0/24 
    auth_cluster_required = cephx
    auth_service_required = cephx
    auth_client_required = cephx
    osd_journal_size = 1024
    osd_pool_default_size = 3
    osd_pool_default_min_size = 2
    osd_pool_default_pg_num = 64
    osd_pool_default_pgp_num = 64
    osd_crush_chooseleaf_type = 1
    
    • fsid: 文件系统ID,用于标识Ceph集群中的特定文件系统。
    • mon_initial_members: 监控器(Mon)服务的初始成员列表,这里只有一个成员"ceph01"。
    • mon_host: 监控器(Mon)服务所在的主机地址。
    • public_network: 公共网络地址范围,用于定义Ceph集群与外部网络的通信范围。
    • auth_cluster_required: 认证集群所需的最小OSD数量。
    • auth_service_required: 认证服务所需的最小OSD数量。
    • auth_client_required: 认证客户端所需的最小OSD数量。
    • osd_journal_size: OSD日志的大小,以MB为单位。
    • osd_pool_default_size: 默认的OSD池大小,以OSD数量为单位。
    • osd_pool_default_min_size: 默认的OSD池最小大小,以OSD数量为单位。
    • osd_pool_default_pg_num: 默认的PG数量,用于副本集中的CRUSH映射。
    • osd_pool_default_pgp_num: 默认的PG优先级数量,用于副本集中的CRUSH映射。
    • osd_crush_chooseleaf_type: 在CRUSH算法中选择叶子节点的类型。

    创建集群Monitor密钥

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

    创建client.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 *'
    

    创建client.bootstrap-osd用户密钥,添加到集群密钥中。

    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
    

    使用主机名、主机IP地址、FSID生成监视器映射monitor map。

    monmaptool --create --add ceph01 10.40.64.191 --fsid 468e23e9-c98d-48f2-9432-9b17774613c7 /tmp/monmap
    
    • 10.40.64.191:/etc/ceph/ceph.conf中对应的mon_host
    • 468e23e9-c98d-48f2-9432-9b17774613c7:/etc/ceph/ceph.conf中对应的fsid

    在监视主机上创建默认数据目录。

    sudo -u ceph mkdir /var/lib/ceph/mon/ceph-ceph01
    

    使用监视器映射monitor map和keyring填充监视器守护进程。

    chown ceph.ceph -R /var/lib/ceph /etc/ceph /tmp/ceph.mon.keyring /tmp/monmap
    sudo -u ceph ceph-mon --mkfs -i ceph01 --monmap /tmp/monmap --keyring /tmp/ceph.mon.keyring
    ls /var/lib/ceph/mon/ceph-ceph01/
    
  3. 启动monitor服务

    systemctl start ceph-mon@ceph01
    systemctl enable ceph-mon@ceph01
    systemctl status ceph-mon@ceph01
    
  4. 查看当前集群状态

    [root@ceph01 ceph]# ceph -s
    

HEALTH_WARN警报信息清除

出现警告:mons are allowing insecure global_id reclaim。
解决办法:ceph config set mon auth_allow_insecure_global_id_reclaim false

出现警告:monitors have not enabled msgr2
解决办法:ceph mon enable-msgr2

部署ceph osd服务(ceph-volume 自动化创建)

  1. 安装ceph-osd服务程序

    yum install -y ceph-osd
    
  2. 初始化osd服务

    通过fdisk等工具查看磁盘盘符,然后利用ceph-volume工具自动化创建osd服务。

    ceph-volume lvm create: error: GPT headers found, they must be removed on: /dev/sda

    sgdisk --zap-all /dev/sda
    
    ceph-volume lvm create --data /dev/sda
    ceph-volume lvm create --data /dev/sdb
    ceph-volume lvm create --data /dev/sdc
    
  3. 查看当前集群状态

    通过ceph osd tree命令查询集群状态,可见集群services中所有osd服务已启动。

    ceph osd tree
    
    ID CLASS WEIGHT   TYPE NAME       STATUS REWEIGHT PRI-AFF 
    -1       43.65807 root default                            
    -3       43.65807     host ceph01                         
     0   hdd 14.55269         osd.0       up  1.00000 1.00000 
     1   hdd 14.55269         osd.1       up  1.00000 1.00000 
     2   hdd 14.55269         osd.2       up  1.00000 1.00000
    

部署ceph mgr服务并开启Dashboard

  1. 安装ceph-mgr服务程序

    yum install -y ceph-mgr
    
  2. 初始化并启动主mgr服务

    mkdir -p /var/lib/ceph/mgr/ceph-ceph01
    chown ceph.ceph -R /var/lib/ceph
    ceph-authtool --create-keyring /etc/ceph/ceph.mgr.ceph01.keyring --gen-key -n mgr.ceph01 --cap mon 'allow profile mgr' --cap osd 'allow *' --cap mds 'allow *'
    ceph auth import -i /etc/ceph/ceph.mgr.ceph01.keyring
    ceph auth get-or-create mgr.ceph01 -o /var/lib/ceph/mgr/ceph-ceph01/keyring
    
    systemctl start ceph-mgr@ceph01
    systemctl enable ceph-mgr@ceph01
    systemctl status ceph-mgr@ceph01
    
  3. 查看当前集群状态

    [root@ceph01 ceph]# ceph -s
      cluster:
        id:     468e23e9-c98d-48f2-9432-9b17774613c7
        health: HEALTH_OK
     
      services:
        mon: 1 daemons, quorum ceph01 (age 2h)
        mgr: ceph01(active, since 112m)
        osd: 3 osds: 3 up (since 3h), 3 in (since 3h)
     
      data:
        pools:   0 pools, 0 pgs
        objects: 0 objects, 0 B
        usage:   3.0 GiB used, 44 TiB / 44 TiB avail
        pgs:     
    
  4. 使能Dashboard访问功能

    开启mgr dashboard功能

    ceph mgr module enable dashboard
    

    生成并安装自签名的证书

    ceph dashboard create-self-signed-cert
    

    配置dashboard

    ceph config set mgr mgr/dashboard/server_addr 10.40.64.191
    ceph config set mgr mgr/dashboard/server_port 8080
    ceph config set mgr mgr/dashboard/ssl_server_port 8443
    

    创建一个dashboard登录用户名密码

    echo '123456' > password.txt
    ceph dashboard ac-user-create admin  administrator -i password.txt
    

    通过Web访问Ceph Dashboard,用户名密码为admin/123456

    https://10.40.64.191:8443
    
<think>好的,用户现在想了解如何在单机部署Ceph集群,并且之前已经提供了一些相关的引用内容。我需要结合用户之前的问题和回答,以及当前的引用来给出一个清晰的指南。 首先,用户之前的问题是关于单机部署Ceph,我的回答已经详细列出了步骤,但现在用户再次提问,可能需要更详细或者更结构化的说明。同时,用户提供的引用内容中有提到CRUSH规则、部署管理节点、创建monitor等步骤,这些需要整合到新的回答中。 我需要检查之前的回答是否涵盖了引用的内容。例如,引用[1]提到移动host到root下形成树形结构,这可能是在集群扩展时的步骤,但单机部署可能不需要,不过用户现在问的是单机,可能需要忽略这部分。但引用[3]提到创建monitor的步骤,比如创建mon data和key,这可能在单机部署中需要详细说明。 之前的回答中,步骤3初始化集群用了ceph-deploy new localhost,而引用[3]中使用的是手动创建mon目录和密钥,这可能适用于不使用ceph-deploy的情况。是否需要提供两种方法?或者用户更倾向于使用ceph-deploy工具? 用户可能希望有一个更详细的步骤,包括手动配置的部分,特别是创建monitor和生成密钥的过程,这在引用[3]中有提到。因此,在回答中可能需要结合ceph-deploy的自动化步骤和手动配置的部分,确保单机部署的完整性。 另外,引用[2]提到同步配置到各个节点,但单机情况下可能不需要,但用户的问题是关于单机,所以这部分可能可以忽略,不过需要确保配置文件的一致性,尤其是在单机多实例的情况下。 需要确保回答的结构清晰,分步骤说明,包括准备工作、安装依赖、集群初始化、OSD配置、验证状态等。同时,注意用户提到的CRUSH规则,虽然在单机可能不需要调整,但可能需要简要说明,或者提及后续扩展时的相关命令。 还需要检查之前的回答是否有遗漏的步骤,比如创建monitor的目录和密钥,是否需要手动操作,或者是否ceph-deploy已经自动处理。根据引用[3],手动创建mon目录和密钥的步骤可能是在不使用ceph-deploy的情况下进行的,因此可能需要提供两种方法,或者说明在单机部署中推荐使用ceph-deploy简化流程。 另外,用户可能在部署过程中遇到权限问题,比如密钥文件的权限,之前的回答中提到chmod +r,需要再次强调这一点。同时,确保所有命令在单机环境下正确执行,比如使用localhost作为节点名称。 最后,生成相关问题时要考虑用户可能的后续步骤,例如如何添加OSD、如何调整CRUSH规则、如何监控集群状态等。确保问题覆盖用户可能感兴趣的方向,帮助他们进一步学习和解决问题。</think>### 单机部署 Ceph 集群详细指南 以下是在单台机器上部署 Ceph 集群的完整流程,结合手动配置和工具自动化步骤,确保集群功能完整可用。 --- #### **1. 环境准备** - **操作系统要求**:推荐使用 Ubuntu 22.04/CentOS 8 及以上本,内核本需支持 Ceph。 - **依赖安装**: ```bash # CentOS yum install -y epel-release yum install -y ceph-deploy python3 python3-pip # Ubuntu apt update && apt install -y ceph-deploy python3 python3-pip ``` - **关闭防火墙/SELinux**: ```bash systemctl stop firewalld && systemctl disable firewalld # CentOS setenforce 0 # 临时关闭 SELinux ``` --- #### **2. 初始化集群配置** **步骤 1:创建集群配置目录** ```bash mkdir ~/myceph && cd ~/myceph ``` **步骤 2:生成初始配置** 使用 `ceph-deploy` 初始化单节点集群: ```bash ceph-deploy new localhost # 生成 ceph.conf 和初始密钥 ``` **步骤 3:手动调整配置文件** 编辑 `ceph.conf`,添加单机优化参数: ```ini [global] osd pool default size = 1 # 单机副本数为1(默认3需修改) osd crush chooseleaf type = 0 # 单机无需层级选择 ``` --- #### **3. 部署 Monitor 和 Manager 服务** **步骤 1:安装 Ceph 核心组件** ```bash ceph-deploy install --release nautilus localhost # 指定本 ``` **步骤 2:启动 Monitor** ```bash ceph-deploy mon create-initial # 自动生成 monmap 和密钥环 ``` **步骤 3:部署 Manager 守护进程** ```bash ceph-deploy mgr create localhost ``` --- #### **4. 配置 OSD(对象存储设备)** **步骤 1:准备磁盘** 假设使用 `/dev/sdb` 作为 OSD 磁盘: ```bash ceph-deploy disk zap localhost /dev/sdb # 清空磁盘 ceph-deploy osd create localhost --data /dev/sdb # 自动分区并激活 ``` **步骤 2:验证 OSD 状态** ```bash ceph osd stat # 输出应包含 osd.0 的 up 状态 ``` --- #### **5. 配置 CRUSH 规则(单机适配)** 单机环境下需简化 CRUSH 层级,确保存储池能正确映射[^1]: ```bash ceph osd crush tunables legacy # 使用兼容模式 ceph osd crush add-bucket localhost host # 创建虚拟 host 节点 ceph osd crush move localhost root=default # 挂载到 root 下 ceph osd crush rule create-simple single_host default host # 创建单机规则 ``` --- #### **6. 验证集群状态** ```bash ceph -s # 检查 HEALTH_OK ceph osd tree # 查看 OSD 层级结构 ``` --- #### **7. 管理密钥与权限** 确保本地客户端可访问集群: ```bash ceph-deploy admin localhost # 分发管理员密钥 chmod +r /etc/ceph/ceph.client.admin.keyring # 修复权限 ``` --- #### **关键问题排查** - **Monitor 启动失败**:检查 `/var/log/ceph/ceph-mon.*.log`,确认端口冲突或权限问题。 - **OSD 未激活**:使用 `ceph-disk activate /dev/sdb1` 手动激活分区。 - **集群健康警告**:若提示 `PG_DEGRADED`,调整存储池副本数: ```bash ceph osd pool set <pool-name> size 1 ``` --- ### 相关问题 1. **如何为单机 Ceph 添加多个 OSD 磁盘?** 2. **单机部署时如何调整 CRUSH 规则以提高数据分布效率?** 3. **如何通过 Ceph Dashboard 监控单机集群状态?** 4. **单机环境下如何测试 Ceph 的 RADOS 对象存储功能?** 通过上述步骤,可在单机上快速搭建一个功能完整的 Ceph 集群,适用于开发、测试或学习场景。生产环境需扩展至多节点并调整冗余策略[^1][^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值