zoukankan      html  css  js  c++  java
  • Ceph 存储集群搭建

    前言

    Ceph 分布式存储系统,在企业中应用面较广

    初步了解并学会使用很有必要

    一、简介

    Ceph 是一个开源的分布式存储系统,包括对象存储、块设备、文件系统。它具有高可靠性、安装方便、管理简便、能够轻松管理海量数据。Ceph 存储集群具备了企业级存储的能力,
    它通过组织大量节点,节点之间靠相互通讯来复制数据、并动态地重分布数据,从而达到高可用分布式存储功能。

    二、组件说明

    1.Centos:release 7.6.1810 (Core)
    2.Ceph:jewel-10.2.10
    3.Openssh-server:version 7.4
    4.NTP

    三、Ceph 安装前准备

    配置节点 host

    将所有节点的/etc/hosts文件修改为如下内容
    127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
    ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
    
    172.16.1.100 admin
    172.16.1.101 osd1
    172.16.1.102 osd2

    安装部署工具 ceph-deploy

    ceph-deploy (admin-node) 上执行
    # yum 配置其他依赖包
    $ yum install -y yum-utils && yum-config-manager --add-repo https://dl.fedoraproject.org/pub/epel/7/x86_64/ && yum install --nogpgcheck -y epel-release && rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7 && rm /etc/yum.repos.d/dl.fedoraproject.org*
    
    # 添加 Ceph 源
    $ vim /etc/yum.repos.d/ceph.repo
    [Ceph-noarch]
    name=Ceph noarch packages
    baseurl=http://download.ceph.com/rpm-jewel/el7/noarch
    enabled=1
    gpgcheck=1
    type=rpm-md
    gpgkey=https://download.ceph.com/keys/release.asc
    priority=1
    
    # 安装 ceph-deploy
    $ yum update && sudo yum install ceph-deploy

    安装 NTP 和 Openssh

    官方建议在所有 Ceph 节点上安装 NTP 服务(特别是 Ceph Monitor 节点),以免因时钟漂移导致故障。
    # yum 安装 ntp
    sudo yum install ntp ntpdate ntp-doc
    
    # 校对系统时钟
    ntpdate 0.cn.pool.ntp.org
    ceph-deploy 节点需要使用 ssh 方式登录各个节点完成 ceph 安装配置工作,所以要确保各个节点上有可用 SSH 服务
    # yum 安装 openssh
    $ yum install openssh-server
    
    # 查看 ssh 版本
    $ ssh -V
    OpenSSH_7.4p1, OpenSSL 1.0.2k-fips  26 Jan 2017

    创建 Ceph 部署用户

    在 Ceph 集群各节点进行如下操作
    # 创建 ceph 特定用户
    $ useradd -d /home/cephd -m cephd
    $ passwd cephd
    
    # 添加 sudo 权限
    $ echo "cephd ALL = (root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/cephd
    $ chmod 0440 /etc/sudoers.d/cephd

    实现免密登录

    ceph-deploy (admin-node) 上执行
    # 生成 ssh 密钥
    $ ssh-keygen
    
    # 将公钥复制到 node0 节点
    $ ssh-copy-id cephd@node0
    
    # 将公钥复制到 node1 节点
    $ ssh-copy-id cephd@node1
    完成后测试一下在 ceph-deploy 管理节点免密码登录各个节点
    [cephd@ceph-admin root]$ ssh osd1
    Last login: Thu Feb 21 15:56:06 2019
    
    [cephd@ceph-admin root]$ ssh osd2
    Last login: Thu Feb 21 15:56:06 2019
    测试没有问题,修改 ceph-deploy 管理节点上的 ~/.ssh/config 文件
    $ cat ~/.ssh/config
    Host osd1
       Hostname osd1
       User cephd
    Host osd2
       Hostname osd2
       User cephd
    注意,此时再执行 ssh node0 会提示报错 Bad owner or permissions on /home/cephd/.ssh/config。原因是 config 文件权限问题,修改权限 sudo chmod 600 config 即可解决

    关闭selinux&firewalld

    在 Ceph 集群各节点进行如下操作
    # 临时生效设置
    $ sudo setenforce 0
    
    # 永久生效设置
    $ sudo cat /etc/selinux/config
    SELINUX=disabled  # 这里设置为disabled
    SELINUXTYPE=targeted 
    
    #关闭防火墙去除开机自启
    $ sudo systemctl stop firewalld.service  #停止 firewall
    $ sudo systemctl disable firewalld.service  #禁止 firewall 开机启动

    四、Ceph 存储集群搭建

    创建执行目录(admin执行)

    $ mkdir ~/ceph-cluster && cd ~/ceph-cluster

    创建集群(admin执行)

    $ ceph-deploy new admin
    此时,我们会发现 ceph-deploy 会在 ceph-cluster 目录下生成几个文件,ceph.conf 为 ceph 配置文件,ceph-deploy-ceph.log 为 ceph-deploy 日志文件,ceph.mon.keyring 为 ceph monitor 的密钥环。

    修改ceph.conf

    [global]
    fsid = 67eef321-cd4c-488c-b668-89c26233e27f
    mon_initial_members = admin
    mon_host = 172.16.1.100
    auth_cluster_required = cephx
    auth_service_required = cephx
    auth_client_required = cephx
    osd pool default size = 2

    通过 ceph-deploy 在各个节点安装ceph

    $ ceph-deploy install admin osd1 osd2

    初始化 monitor 节点并收集所有密钥

    $ ceph-deploy mon create-initial

    有报错,不要慌

    ceph_deploy.mon][ERROR ] RuntimeError: config file /etc/ceph/ceph.conf exists with different content; use --overwrite-conf to overwrite
    [ceph_deploy][ERROR ] GenericError: Failed to create 1 monitors
    
    $ ceph-deploy --overwrite-conf mon create-initial

    执行完毕后,会在当前目录下生成一系列的密钥环

    $ ll ~/ceph-cluster
    -rw-------. 1 cephd cephd    113 Feb 21 15:13 ceph.bootstrap-mds.keyring
    -rw-------. 1 cephd cephd     71 Feb 21 15:13 ceph.bootstrap-mgr.keyring
    -rw-------. 1 cephd cephd    113 Feb 21 15:13 ceph.bootstrap-osd.keyring
    -rw-------. 1 cephd cephd    113 Feb 21 15:13 ceph.bootstrap-rgw.keyring
    -rw-------. 1 cephd cephd    129 Feb 21 15:13 ceph.client.admin.keyring
    -rw-rw-r--. 1 cephd cephd    222 Feb 21 14:47 ceph.conf
    -rw-rw-r--. 1 cephd cephd 120207 Feb 21 15:13 ceph-deploy-ceph.log
    -rw-------. 1 cephd cephd     73 Feb 21 14:46 ceph.mon.keyring

    创建 OSD

    # ceph-deploy (admin-node) 上执行
    
    $ ssh osd1
    $ sudo mkdir /var/local/osd1
    $ sudo chown -R ceph:ceph /var/local/osd1
    $ exit
    
    $ ssh osd2
    $ sudo mkdir /var/local/osd2
    $ sudo chown -R ceph:ceph /var/local/osd2
    $ exit

    ceph-deploy 节点执行 prepare OSD 操作

    $ ceph-deploy --overwrite-conf osd prepare osd1:/var/local/osd1 osd2:/var/local/osd2

    激活 activate OSD

    $ ceph-deploy osd activate osd1:/var/local/osd1 osd2:/var/local/osd2

    通过 ceph-deploy admin 将配置文件和 admin 密钥同步到各个节点

    $ ceph-deploy admin admin osd1 osd2

    增加权限设置

    $ sudo chmod +r /etc/ceph/ceph.client.admin.keyring

    查看集群状态

    # 查看集群状态
    $ ceph -s
    cluster 363c3cf4-dba4-4f13-8ec5-ed93416f4e26
         health HEALTH_OK
         monmap e1: 1 mons at {admin=10.222.77.213:6789/0}
                election epoch 6, quorum 0 admin
         osdmap e15: 2 osds: 2 up, 2 in
                flags sortbitwise,require_jewel_osds
          pgmap v9276: 64 pgs, 1 pools, 863 MB data, 226 objects
                33440 MB used, 33574 MB / 67015 MB avail
                      64 active+clean
    
    # 或者查看集群健康状况
    $ ceph health
    HEALTH_OK
    
    # 查看集群 OSD 信息
    $ ceph osd tree
    ID WEIGHT  TYPE NAME      UP/DOWN REWEIGHT PRIMARY-AFFINITY 
    -1 0.06400 root default                                     
    -2 0.03200     host osd1                                   
     0 0.03200         osd.0       up  1.00000          1.00000 
    -3 0.03200     host osd2                                   
     1 0.03200         osd.1       up  1.00000          1.00000
  • 相关阅读:
    数据结构之单链表及其函数算法
    数据结构之KMP算法next数组
    FastDFS的简单使用
    富文本编辑器kindeditor的使用
    SpringSecurity的简单入门
    Dubbo+zookeeper实现单表的增删改查
    windows批量删除当前目录以及子目录的所有空文件夹
    Echarts的简单入门
    基于JAX-RS规范的webService入门
    RESTFull开发风格
  • 原文地址:https://www.cnblogs.com/murry/p/11909742.html
Copyright © 2011-2022 走看看